/// <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);
 }
示例#5
0
        /// <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);
        }
示例#6
0
        /// <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);
        }
示例#8
0
        /// <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;
                }
            }
        }
示例#15
0
        /// <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);
        }
示例#16
0
        /// <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);
        }