/// <summary> /// Initializes a new instance of the <see cref="reportingRegistryQuery"/> class. /// </summary> /// <param name="__path">The path.</param> public reportingRegistryQuery(string __path) { if (regex_levelExtract.IsMatch(__path)) { var m = regex_levelExtract.Match(__path); var n = regex_pathExtract.Match(__path); string mi = m.Groups[1].Value; needle = n.Groups[1].Value; //Object obj = Enum.Parse(typeof(reportElementLevel), mi) as reportElementLevel; reportElementLevel lev = reportElementLevel.none; Enum.TryParse(mi, out lev); if (lev != reportElementLevel.none) { level = lev; } } else { var np = regex_pathExtract.Match(__path); needle = np.Groups[0].Value; } }
#pragma warning disable CS1574 // XML comment has cref attribute 'aceReportException' that could not be resolved /// <summary> /// Regs the path. /// </summary> /// <param name="metaItem">The meta item.</param> /// <param name="theParentRegMoment">if set to <c>true</c> [the parent reg moment].</param> /// <exception cref="aceReportException"> /// null - null - regPath issue /// or /// null - null - regPath issue /// </exception> public void regPath(IMetaContentNested metaItem, bool theParentRegMoment) #pragma warning restore CS1574 // XML comment has cref attribute 'aceReportException' that could not be resolved { reportElementLevel level = metaItem.elementLevel; if (regPathCache[level].ContainsKey(metaItem.path)) { if (regPathCache[level].ContainsValue(metaItem)) { if (regPathCache[level][metaItem.path] == metaItem) { } else { metaItem.name = metaItem.name + "sub"; regPath(metaItem, theParentRegMoment); // throw new aceReportException(metaItem.path + " is reserved by other element! " + metaItem.name, null, null, "regPath issue"); } } else { metaItem.name = metaItem.name + "in"; regPath(metaItem, theParentRegMoment); } } else { regPathCache[level][metaItem.path] = metaItem; } }
public reportOutputUnit(string __path, string __name, reportOutputFormatName __format, reportOutputForm __form, object __output, reportElementLevel __level) { path = __path; name = __name; fileformat = __format; form = __form; // builder = __builder; output = __output; level = __level; }
/// <summary> /// Regs the path get. /// </summary> /// <param name="__path">The path.</param> /// <param name="level">The level.</param> /// <returns></returns> public IMetaContentNested regPathGet(string __path, reportElementLevel level) { if (regPathCache[level].ContainsKey(__path)) { return(regPathCache[level][__path] as IMetaContentNested); } if (logger != null) { logger.log("regPathGet with level[" + level.ToString() + "] failed on [" + __path + "]"); } return(this); }
/// <summary> /// Gets the report element level. /// </summary> /// <param name="elementPath">The element path.</param> /// <returns></returns> public static reportElementLevel GetReportElementPathAndLevel(this string elementPath, out string needle) { reportElementLevel level = reportElementLevel.none; bool reg = ELEMENTPATH_SIMPLEPATH.IsMatch(elementPath); var e_path = ELEMENTPATH_PATH.Match(elementPath); var e_element = ELEMENTPATH_ELEMENT.Match(elementPath); needle = e_path.Groups[1].Value.Trim(':'); level = e_element.Groups[1].Value.Trim(':').GetConvertedToLevel(); return(level); }
/// <summary> /// Gets the link collection /// </summary> /// <param name="scoped">The scoped.</param> /// <param name="context">The context.</param> /// <param name="format">The format.</param> /// <param name="levels">The levels.</param> /// <param name="makeAppApsolut">if set to <c>true</c> [make application apsolut].</param> /// <returns></returns> public static reportLinkCollectionSet GetLinkCollection(this IMetaContentNested scoped, deliveryInstance context, reportOutputFormatName format, List <reportElementLevel> levels, bool makeAppApsolut = true) { reportLinkCollectionSet menu = new reportLinkCollectionSet(); reportElementLevel level = scoped.getElementLevel(); IMetaContentNested linkFrom = scoped; switch (level) { case reportElementLevel.document: //metaDocument document = (metaDocument)linkFrom; //menu.Add(document.documentTitle, document.GetLinkCollection(context, format)); //break; case reportElementLevel.page: linkFrom = scoped.document; if (linkFrom != null) { metaDocument document2 = (metaDocument)linkFrom; menu.Add(document2.documentTitle, document2.GetLinkCollection(context, format, levels, makeAppApsolut)); } else { if (scoped.parent != null) { return(GetLinkCollection(scoped.parent, context, format, levels, makeAppApsolut)); } } break; case reportElementLevel.documentSet: metaDocumentSet documentSet = (metaDocumentSet)linkFrom; menu.AddInGroup(documentSet.documentSetTitle, documentSet.GetServicePageLinkCollection(context, format, levels, makeAppApsolut)); menu.AddInGroup(documentSet.documentSetTitle, documentSet.GetDocumentSetsLinkCollection(context, format, levels, makeAppApsolut)); menu.currentItem.GetMainGroup().name = "Report sections"; foreach (metaDocument docum in linkFrom) { menu.Add(docum.documentTitle, docum.GetLinkCollection(context, format, levels, makeAppApsolut)); } break; } return(menu); }
public IMetaContentNested regPathGet(string __elementPath) { string __path = ""; reportElementLevel level = __elementPath.GetReportElementPathAndLevel(out __path); if (regPathCache[level].ContainsKey(__path)) { IMetaContentNested result = regPathCache[level][__path] as IMetaContentNested; return(result); } if (logger != null) { logger.log("regPathGet with level[" + level.ToString() + "] failed on [" + __path + "]"); } return(this); }
/// <summary> /// Describes the unit via specified loger /// </summary> /// <param name="loger">The loger.</param> public void describe(ILogBuilder loger) { // loger.log("deliveryUnit describe() call started"); loger.AppendHeading("Delivery unit (" + GetType().Name + ")", 2); loger.AppendLine("Logical name: " + name); loger.open("items", "Delivery items", "List of all deliveryUnit items contained here"); foreach (IDeliveryUnitItem item in items) { //loger.AppendHeading(this.name + " (" + this.GetType().Name + ")", 3); loger.AppendLine(" > " + item.name + ":" + item.itemType.ToString()); loger.AppendLine(" > > Location: " + item.location.ToString()); loger.AppendLine(" > > Description: " + item.description); } loger.close(); loger.open("items", "Items by level", "Showing items triggered by scope level"); reportElementLevel lev = reportElementLevel.none; foreach (KeyValuePair <reportElementLevel, List <deliveryUnitItem> > pair in itemByLevel) { lev = pair.Key; foreach (deliveryUnitItem it in pair.Value) { loger.AppendLine(lev.ToString() + " --> " + it.name + " (" + it.GetType().Name + ")"); } } loger.close(); loger.open("items", "Output by level", "Showing items designated as output items and triggered by scope level"); foreach (KeyValuePair <reportElementLevel, List <deliveryUnitItem> > pair in outputByLevel) { lev = pair.Key; foreach (deliveryUnitItem it in pair.Value) { loger.AppendLine(lev.ToString() + " --> " + it.name + " (" + it.GetType().Name + ")"); } } loger.close(); // loger.log("deliveryUnit describe() call finished"); }
/// <summary> /// Regs the path get. /// </summary> /// <typeparam name="TReg">The type of the reg.</typeparam> /// <param name="__path">The path in format $$$reportElementLevel:\\analyticReport .</param> /// <returns></returns> public TReg regPathGet <TReg>(string __path) where TReg : class, IMetaContentNested { if (__path.Contains(":")) { var prt = __path.SplitSmart(":"); } reportElementLevel level = typeof(TReg).GetElementLevel(); if (regPathCache[level].ContainsKey(__path)) { return(regPathCache[level][__path] as TReg); } if (logger != null) { logger.log("regPathGet with level[" + level.ToString() + "] failed on [" + __path + "]"); } return(this as TReg); }
/// <summary> /// Adds the criteria. /// </summary> /// <param name="opera">The opera.</param> /// <param name="pathMatchRule">The path match rule.</param> /// <param name="pathCriteria">The path criteria.</param> /// <param name="metaElementTypeToMatch">The meta element type to match.</param> /// <param name="level">The level.</param> /// <param name="element">The element.</param> /// <returns></returns> public metaContentCriteriaTrigger AddCriteria(metaContentTriggerOperator opera, metaModelTargetEnum pathMatchRule = metaModelTargetEnum.scope, string pathCriteria = null, Type metaElementTypeToMatch = null, reportElementLevel level = reportElementLevel.none, IMetaContentNested element = null) => trigs.AddCriteria(opera, pathMatchRule, pathCriteria, metaElementTypeToMatch, level);
public void setOutputUnit(builderSettings settings, object output, string logicalPath, reportElementLevel level) { var format = settings.forms[level].fileformat; string tmp_name = logicalPath.getPathVersion(-1, "\\", true); string tmp_path = Path.GetDirectoryName(logicalPath); string filename = settings.formats.getFilename(tmp_name, format); form = settings.forms[level].form; reportOutputUnit tmp = null; if (form == reportOutputForm.folder) { tmp_path = imbSciStringExtensions.add(tmp_path, tmp_name, "\\"); tmp = new reportOutputUnit(tmp_path, tmp_name, format, form, output, level); } else if (form == reportOutputForm.file) { tmp_path = imbSciStringExtensions.add(tmp_path, filename, "\\"); tmp = new reportOutputUnit(tmp_path, tmp_name, format, form, output, level); } else { // tmp = new reportOutputUnit(tmp_path, tmp_name, format, form, output, level); } Add(logicalPath, tmp); }
#pragma warning disable CS1574 // XML comment has cref attribute 'getChildByPath(IObjectWithChildSelector, string)' that could not be resolved /// <summary> /// Adds new <see cref="metaContentCriteriaTrigger"/> match rule and its operator /// </summary> /// <param name="opera">The operator: how this criteria combines with others in this collection</param> /// <param name="pathCriteria">The path with <see cref="imbSCI.Data.extensions.data.imbPathExtensions.getChildByPath(IObjectWithChildSelector, string)"/> and to test if it returns the same IElement </param> /// <param name="metaElementTypeToMatch">Type that test instance must be compatibile with</param> /// <param name="level">The level of element to test against</param> /// <param name="element">The element instance to test against</param> /// <returns></returns> public metaContentCriteriaTrigger AddCriteria(metaContentTriggerOperator opera, metaModelTargetEnum pathMatchRule = metaModelTargetEnum.scope, string pathCriteria = null, Type metaElementTypeToMatch = null, reportElementLevel level = reportElementLevel.none, IMetaContentNested element = null) #pragma warning restore CS1574 // XML comment has cref attribute 'getChildByPath(IObjectWithChildSelector, string)' that could not be resolved { metaContentCriteriaTrigger trigger = new metaContentCriteriaTrigger(); trigger.pathMatch = pathCriteria; trigger.type = metaElementTypeToMatch; trigger.level = level; trigger.element = element; trigger.triggerOperator = opera; trigger.pathMatchRule = pathMatchRule; items.Add(trigger); return(trigger); }
/// <summary> /// xes the scope automatic save. /// </summary> /// <param name="oldScope">The old scope.</param> /// <exception cref="System.NotImplementedException"> /// </exception> /// <exception cref="System.ArgumentOutOfRangeException"></exception> public virtual void x_scopeAutoSave(IMetaContentNested oldScope) { throw new aceReportException("This method is deprecated" + "Don-t use this"); reportElementLevel level = oldScope.elementLevel; reportOutputForm form = settings.forms[level].form; if (form == reportOutputForm.none) { return; } IMetaComposeAndConstruct conScope = oldScope as IMetaComposeAndConstruct; IMetaContentNested metaScope = oldScope as IMetaContentNested; string path = ""; reportOutputFormatName fileformat = settings.forms[level].fileformat; if (metaScope is metaServicePage) { // form = conScope.form; metaServicePage msp = metaScope as metaServicePage; log(string.Format("---- service page scoped --> overriding *form* {0} and format *{1}* for {2}", form.ToString(), fileformat.ToString(), oldScope.GetType().Name)); } if (form == reportOutputForm.unknown) { //form = conScope.form; log(string.Format("---- use _reportOutputForm_ default *{0}* from {1}", form.ToString(), oldScope.GetType().Name)); } if (form == reportOutputForm.folder) { base.directoryScope = base.directoryScope.Parent; log(" directory *parent* scoped: " + base.directoryScope.FullName); } string filename = ""; if (form == reportOutputForm.file) { filename = settings.formats.getFilename(metaScope.name, fileformat); // path = directoryCurrent.FullName.add(filename, "\\"); switch (level) { case reportElementLevel.documentSet: throw new NotImplementedException(); break; case reportElementLevel.document: string fn = metaScope.document.name; throw new NotImplementedException(); // render.AppendInfo(data, false, settings.forms[level].customProperties.ToArray()); //render.saveDocument(fn, getWritableFileMode.autoRenameExistingOnOtherDate, fileformat); break; case reportElementLevel.page: throw new NotImplementedException(); //render.savePage(oldScope.name, fileformat); //render.AppendInfo(data, false, settings.forms[level].customProperties.ToArray()); break; case reportElementLevel.block: throw new NotImplementedException(); break; case reportElementLevel.servicepage: break; default: throw new ArgumentOutOfRangeException(); } } //PropertyCollection mdata = metaScope.AppendDataFields(data); }
/// <summary> /// xes the scope automatic create. /// </summary> /// <param name="newScope">The new scope.</param> /// <exception cref="System.NotImplementedException"> /// </exception> /// <exception cref="System.ArgumentOutOfRangeException"></exception> public virtual void x_scopeAutoCreate(IMetaContentNested newScope) { throw new aceReportException("This method is deprecated" + "Don-t use this"); reportElementLevel level = newScope.elementLevel; reportOutputForm form = settings.forms[level].form; IMetaComposeAndConstruct conScope = newScope as IMetaComposeAndConstruct; IMetaContentNested metaScope = newScope as IMetaContentNested; string path = ""; reportOutputFormatName fileformat = settings.forms[level].fileformat; if (metaScope is metaServicePage) { //form = conScope.form; metaServicePage msp = metaScope as metaServicePage; if (doVerboseLog) { log(string.Format("---- service page scoped in --> overriding *form* {0} and format *{1}* for {2}", form.ToString(), fileformat.ToString(), newScope.GetType().Name)); } } if (form == reportOutputForm.none) { return; } if (form == reportOutputForm.unknown) { // form = conScope.form; if (doVerboseLog) { log(string.Format("---- use _reportOutputForm_ default *{0}* from {1}", form.ToString(), newScope.GetType().Name)); } } if (form == reportOutputForm.folder) { if (directoryScope == null) { if (script.flags.HasFlag(docScriptFlags.nullDirectoryToCurrent)) { directoryScope = new DirectoryInfo(Directory.GetCurrentDirectory()); log(string.Format("-- Directory scope was null - now it is set to [{0}] -- scope path is: {1}", directoryScope.FullName, scope.path)); } else { throw new aceReportException("DirectoryCurrent is null!"); } } path = directoryScope.FullName.add(newScope.name, "\\"); if (Directory.Exists(path)) { directoryScope = new DirectoryInfo(path); log(string.Format("-- scope to existing folder: {0} for {1}", path, newScope.GetType().Name)); } else { directoryScope = Directory.CreateDirectory(path); log(string.Format("-- create and scope to folder: {0} for {1}", path, newScope.GetType().Name)); } } string filename = ""; if (form == reportOutputForm.file) { filename = settings.formats.getFilename(metaScope.name, settings.forms[level].fileformat); // path = directoryCurrent.FullName.add(filename, "\\"); switch (level) { case reportElementLevel.documentSet: _outputRepositorium.Clear(); break; case reportElementLevel.document: throw new NotImplementedException(); //render.addDocument(newScope.name, true, getWritableFileMode.overwrite, fileformat); break; case reportElementLevel.page: throw new NotImplementedException(); //render.addPage(newScope.name, true, getWritableFileMode.overwrite, fileformat);/ break; case reportElementLevel.block: throw new NotImplementedException(); break; case reportElementLevel.servicepage: // log("-- service page is scoped in"); break; default: throw new ArgumentOutOfRangeException(); } } if (form == reportOutputForm.inParentFile) { switch (level) { case reportElementLevel.servicepage: throw new NotImplementedException(); // render.addPage(newScope.name, true, getWritableFileMode.overwrite, fileformat); break; case reportElementLevel.page: throw new NotImplementedException(); //render.addPage(newScope.name, true, getWritableFileMode.overwrite, fileformat); break; } } }
/// <summary> /// Gets the parent of target element level or root if reached /// </summary> /// <param name="source">The source.</param> /// <param name="level">The level.</param> /// <param name="getLastParent">if set to <c>true</c> [get last parent].</param> /// <param name="nullForNotFound">if set to <c>true</c> [null for not found].</param> /// <param name="limit">The limit.</param> /// <returns></returns> public static IObjectWithParent getParentOfLevel(this IObjectWithParent source, reportElementLevel level, Boolean getLastParent = false, Boolean nullForNotFound = true, Int32 limit = 100) { IObjectWithParent output = source; IObjectWithReportLevel head = output as IObjectWithReportLevel; Int32 c = 0; if (limit == -1) { limit = PATHSEARCH_MAX_LIMIT; } do { head = head.parent as IObjectWithReportLevel; if (getLastParent) { if (head.elementLevel == level) { IObjectWithReportLevel parent = head.parent as IObjectWithReportLevel; if (parent != null) { if (!(parent.elementLevel == level)) { return(head); } } else { return(head); } } else { } } else { if (getElementLevel(head) == level) { return(head); } } c++; if ((c > limit) || (c > PATHSEARCH_MAX_LIMIT)) { break; } } while ((head != null)); if (head == null) { if (nullForNotFound) { } else { } } return(head); }
/// <summary> /// Determines whether [is element level] [the specified element]. /// </summary> /// <param name="obj">The object.</param> /// <param name="element">The element.</param> /// <returns> /// <c>true</c> if [is element level] [the specified element]; otherwise, <c>false</c>. /// </returns> public static Boolean isElementLevel(this IObjectWithReportLevel obj, reportElementLevel element) { reportElementLevel el = getElementLevel(obj); return(el == element); }