/// <summary> /// build an XPTree with the results /// </summary> /// <param name="ctx"></param> /// <returns></returns> public bool BuildXPTNode(ResultSelectionContext ctx) { List <INode> results = new List <INode>(); // add the class if (ctx.dataObjectEntryName() == null || ctx.dataObjectEntryName().Count() == 0) { results.Add(new eXPressionTree.DataObjectSymbol(ctx.ClassName, engine: this.Engine)); } else { // add the entries foreach (DataObjectEntryNameContext anEntryCTX in ctx.dataObjectEntryName()) { results.Add(new eXPressionTree.DataObjectEntrySymbol(anEntryCTX.entryname, engine: this.Engine)); } } ctx.XPTreeNode = new ResultList(results); return(true); }
/// <summary> /// build an XPTree with the results /// </summary> /// <param name="ctx"></param> /// <returns></returns> public bool BuildXPTNode(ResultSelectionContext ctx) { List<INode> results = new List<INode>(); // add the class if (ctx.dataObjectEntryName() == null || ctx.dataObjectEntryName().Count () == 0) results.Add(new eXPressionTree.DataObjectSymbol(ctx.ClassName, engine: this.Engine)); else // add the entries foreach (DataObjectEntryNameContext anEntryCTX in ctx.dataObjectEntryName()) results.Add(new eXPressionTree.DataObjectEntrySymbol(anEntryCTX.entryname, engine: this.Engine)); ctx.XPTreeNode = new ResultList(results); return true; }
/// <summary> /// returns true if this a Data Object class /// </summary> /// <returns></returns> bool IsDataObjectEntry(string name, RuleContext context) { // check the name might be a full name CanonicalName aName = new CanonicalName(name); string aClassname = aName.IsCanonical() ? aName.ClassName() : String.Empty; string anEntryName = aName.EntryName(); // if we are in the right context if (context is DataObjectEntryNameContext) { DataObjectEntryNameContext ctx = (DataObjectEntryNameContext)context; if (string.IsNullOrEmpty(ctx.ClassName)) { aClassname = GetDefaultClassName(context); } else if (!String.IsNullOrWhiteSpace(ctx.ClassName)) { // if classname differs than it is not allowed if (string.Compare(ctx.ClassName, aClassname, true) != 00) { this.NotifyErrorListeners(String.Format(Messages.RCM_12, ctx.ClassName)); } else { aClassname = ctx.ClassName; } } } else if (context is SelectExpressionContext) { SelectExpressionContext ctx = (SelectExpressionContext)context; string aDefaultname = GetDefaultClassName(ctx); if (!(String.IsNullOrEmpty(aDefaultname))) { aClassname = aDefaultname; } } else if (context is SelectConditionContext) { SelectConditionContext ctx = (SelectConditionContext)context; string aDefaultname = GetDefaultClassName(ctx); if (!(String.IsNullOrEmpty(aDefaultname))) { aClassname = aDefaultname; } } else if (context is ResultSelectionContext) { ResultSelectionContext ctx = (ResultSelectionContext)context; string aDefaultname = GetDefaultClassName(ctx); if (string.IsNullOrEmpty(ctx.ClassName)) { aClassname = GetDefaultClassName(context); } else if (!String.IsNullOrWhiteSpace(ctx.ClassName)) { aClassname = ctx.ClassName; } } // check if DataObjectEntry is there if (!string.IsNullOrWhiteSpace(aClassname) && Engine.Repository.HasDataObjectDefinition(aClassname)) { return(Engine.Repository.GetDataObjectDefinition(aClassname).HasEntry(anEntryName)); } // no way to get classname and entryname return(false); }