private void getEntityRules1(ConceptTemplate conceptTemplate)
 {
     foreach (AttributeRule ar in conceptTemplate.getAttributeRules())
     {
         getEntityRules2(ar);
     }
 }
 private void getConceptTemplates(ConceptTemplate conceptTemplate)
 {
     ChosenEntities.Add(conceptTemplate.applicableEntity);
     foreach (ConceptTemplate ct in conceptTemplate.getConceptTemplateses().Values)
     {
         getConceptTemplates(ct);
     }
 }
Example #3
0
        /// <summary>
        /// Allows to use a ConceptTemplate for extracting datatables of values from an entity.
        /// This function returns columns from all the indicators found in all applicable rules
        /// </summary>
        /// <param name="entity">the entity of interest</param>
        /// <param name="template">the ConceptTemplate to apply</param>
        /// <returns></returns>
        public DataTable GetData(IPersistEntity entity, ConceptTemplate template)
        {
            // todo: there's no filter of the applicability of the template to the entity in the GetData function
            var allRules      = template.GetRecursiveRuleIds().Distinct();
            var allIndicators = allRules.Select(rule => new DataIndicator(rule)).ToList();

            return(GetData(entity, template, allIndicators));
        }
        /// <summary>
        /// Print the concept
        ///
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        private TreeViewItem PrintConcept(Concept value)
        {
            TreeViewItem treeViewItem = new TreeViewItem();

            treeViewItem.Header = "Concept - " + value.name;
            if (value.uuid != "")
            {
                treeViewItem.Items.Add("UUID: " + value.uuid);
            }
            if (value.Override != "")
            {
                treeViewItem.Items.Add("Override: " + value.Override);
            }

            ConceptTemplate conceptTemplate = value.getConceptTemplate();

            if (conceptTemplate.name != "")
            {
                treeViewItem.Items.Add(PrintConceptTemplate(conceptTemplate));
            }

            Dictionary <string, Requirement> allRequirements = value.GetAllRequirements();

            if (allRequirements.Count > 0)
            {
                TreeViewItem requirementsItems = new TreeViewItem();
                requirementsItems.Header = "Requirements";

                foreach (var item in allRequirements)
                {
                    TreeViewItem treeViewItem1 = new TreeViewItem();
                    treeViewItem1 = PrintRequirement(item.Value);
                    requirementsItems.Items.Add(treeViewItem1);
                }
                treeViewItem.Items.Add(requirementsItems);
            }

            Dictionary <string, Concept> allSubConcepts = value.GetAllSubConcepts();

            if (allSubConcepts.Count > 0)
            {
                TreeViewItem subConceptsItems = new TreeViewItem();
                subConceptsItems.Header = "SubConcepts";
                foreach (var item in allSubConcepts)
                {
                    TreeViewItem treeViewItem1 = new TreeViewItem();
                    treeViewItem1 = PrintConcept(item.Value);
                    subConceptsItems.Items.Add(treeViewItem1);
                }
                treeViewItem.Items.Add(subConceptsItems);
            }
            return(treeViewItem);
        }
Example #5
0
        /// <summary>
        /// Allows to use a ConceptTemplate for extracting datatables of values from an entity.
        /// Columns returned depend on specified dataIndicators
        /// </summary>
        /// <param name="entity">the entity of interest</param>
        /// <param name="template">the ConceptTemplate to apply</param>
        /// <param name="dataIndicators">the indicators of interest</param>
        /// <returns></returns>
        public DataTable GetData(IPersistEntity entity, ConceptTemplate template, IEnumerable <DataIndicator> dataIndicators)
        {
            var dt         = new DataTable();
            var indicators = dataIndicators as DataIndicator[] ?? dataIndicators.ToArray();

            foreach (var dataIndicator in indicators)
            {
                var c = new DataColumn(dataIndicator.ColumnName);
                dt.Columns.Add(c);
            }

            var fastIndicators = new DataIndicatorLookup(indicators);
            // template.DebugTemplateTree();

            // when ending row or going deeper it fills row
            var vls = GetAttributes(template, entity, fastIndicators, "");

            vls?.Populate(dt);

            return(dt);
        }
        /// <summary>
        /// Print the concept template
        ///
        /// </summary>
        /// <param name="conceptTemplate"></param>
        /// <returns></returns>
        private TreeViewItem PrintConceptTemplate(ConceptTemplate conceptTemplate)
        {
            TreeViewItem treeViewItem = new TreeViewItem();

            treeViewItem.Header = "ConceptTemplate - " + conceptTemplate.name;
            if (conceptTemplate.applicableEntity != "")
            {
                treeViewItem.Items.Add("applicableEntity: " + conceptTemplate.applicableEntity);
            }
            if (conceptTemplate.applicableSchema != "")
            {
                treeViewItem.Items.Add("applicableSchema: " + conceptTemplate.applicableSchema);
            }
            if (conceptTemplate.code != "")
            {
                treeViewItem.Items.Add("code: " + conceptTemplate.code);
            }


            Dictionary <string, ConceptTemplate> allConceptTemplates = conceptTemplate.getConceptTemplateses();

            if (allConceptTemplates.Count > 0)
            {
                TreeViewItem subConceptItems = new TreeViewItem();
                subConceptItems.Header = "SubConceptTemplates";

                foreach (var item in allConceptTemplates)
                {
                    TreeViewItem treeViewItem1 = new TreeViewItem();
                    treeViewItem1 = PrintConceptTemplate(item.Value);
                    subConceptItems.Items.Add(treeViewItem1);
                }
                treeViewItem.Items.Add(subConceptItems);
            }


            List <Templates> allSubTemplates = conceptTemplate.getAllSubTemplates();

            if (allSubTemplates.Any())
            {
                TreeViewItem subTemplatesItems = new TreeViewItem();
                subTemplatesItems.Header = "SubTemplates";

                foreach (var item in allSubTemplates)
                {
                    TreeViewItem treeViewItem1 = new TreeViewItem();
                    treeViewItem1 = PrintTemplate(item);
                    subTemplatesItems.Items.Add(treeViewItem1);
                }
                treeViewItem.Items.Add(subTemplatesItems);
            }

            List <AttributeRule> allAttributeRules = conceptTemplate.getAttributeRules();

            if (allAttributeRules.Any())
            {
                TreeViewItem attributeRulesItems = new TreeViewItem();
                attributeRulesItems.Header = "AttributeRules";


                foreach (var item in allAttributeRules)
                {
                    TreeViewItem treeViewItem1 = new TreeViewItem();
                    treeViewItem1 = PrintAttribute(item);
                    attributeRulesItems.Items.Add(treeViewItem1);
                }
                treeViewItem.Items.Add(attributeRulesItems);
            }

            return(treeViewItem);
        }
Example #7
0
        internal DataFragment GetAttributes(ConceptTemplate template, IPersistEntity entity, DataIndicatorLookup dataIndicators, string prefix)
        {
            var useT = template.GetSpecificConceptTemplateFor(entity);

            return(GetAttributes(useT.Rules, entity, dataIndicators, prefix));
        }