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); } }
/// <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); }
/// <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); }
internal DataFragment GetAttributes(ConceptTemplate template, IPersistEntity entity, DataIndicatorLookup dataIndicators, string prefix) { var useT = template.GetSpecificConceptTemplateFor(entity); return(GetAttributes(useT.Rules, entity, dataIndicators, prefix)); }