public HierarchicalDataContext AnalyzeKnowledge(IBrushFactory brushFactory, IAliasMapping aliasMapping) { LoadHistory(); LoadMetrics(); LoadContributions(false); var localFileToContribution = AliasTransformContribution(_contributions, aliasMapping); var summary = _history.GetArtifactSummary(GetDisplayFilter(), aliasMapping); var fileToMainDeveloper = localFileToContribution.ToDictionary(pair => pair.Key, pair => pair.Value.GetMainDeveloper()); // Assign a color to each developer var mainDevelopers = fileToMainDeveloper.Select(pair => pair.Value.Developer).Distinct().ToList(); var legend = new LegendBitmap(mainDevelopers, brushFactory); legend.CreateLegendBitmap(Path.Combine(_outputPath, "knowledge_color.bmp")); // Build the knowledge data var builder = new KnowledgeBuilder(); var hierarchicalData = builder.Build(summary, _metrics, fileToMainDeveloper); var dataContext = new HierarchicalDataContext(hierarchicalData, brushFactory); dataContext.AreaSemantic = Strings.LinesOfCode; dataContext.WeightSemantic = Strings.NotAvailable; return(dataContext); }
private KnowledgeBuilder CreateKnowledgeBuilder(List <IRule> rules, TheiaClassLoader classLoader) { //Create configuration KnowledgeBuilderConfiguration kBuilderConfiguration = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null, classLoader); //Create knowledgeBuilder KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kBuilderConfiguration); foreach (var rule in rules) { //Create my resource Resource myResource = ResourceFactory.newReaderResource(new java.io.StringReader(rule.Source)); //Add resource to KnowledgeBuilder kBuilder.add(myResource, ResourceType.DRL); var ruleErrors = kBuilder.getErrors(); if (ruleErrors.size() > 0) { throw new TheiaException( $"The rule contains an error and can not be compiled: {System.Environment.NewLine}{ruleErrors}"); } } return(kBuilder); }
public void runRules(String[] rules, java.lang.Object[] facts) { KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); for (int i = 0; i < rules.Length; i++) { String ruleFile = rules[i]; Console.WriteLine("Loading file: " + ruleFile); ruleFile = Path.GetFullPath(Path.Combine("rules", ruleFile)); kbuilder.add(ResourceFactory.newFileResource(ruleFile), ResourceType.DRL); } java.util.Collection pkgs = kbuilder.getKnowledgePackages(); kbase.addKnowledgePackages(pkgs); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); for (int i = 0; i < facts.Length; i++) { java.lang.Object fact = facts[i]; //Console.WriteLine("Inserting fact: " + fact); ksession.insert(fact); } ksession.fireAllRules(); }
/// <summary> /// Same as knowledge but uses a different color scheme /// </summary> public HierarchicalDataContext AnalyzeKnowledgeLoss(string developer, IBrushFactory brushFactory, IAliasMapping aliasMapping) { LoadContributions(false); var localFileToContribution = AliasTransformContribution(_contributions, aliasMapping); developer = aliasMapping.GetAlias(developer); var summary = _history.GetArtifactSummary(_extendedDisplayFilter, aliasMapping); var fileToMainDeveloper = localFileToContribution.ToDictionary(pair => pair.Key, pair => pair.Value.GetMainDeveloper()); // Build the knowledge data var builder = new KnowledgeBuilder(developer); var hierarchicalData = builder.Build(summary, _metrics, fileToMainDeveloper); var dataContext = new HierarchicalDataContext(hierarchicalData, brushFactory); dataContext.AreaSemantic = Strings.LinesOfCode; dataContext.WeightSemantic = Strings.NotAvailable; return(dataContext); }
/// <summary> /// Same as knowledge but uses a different color scheme /// </summary> public HierarchicalDataContext AnalyzeKnowledgeLoss(string developer) { LoadHistory(); LoadMetrics(); LoadContributions(false); var summary = _history.GetArtifactSummary(Project.Filter, new HashSet <string>(_metrics.Keys)); var fileToMainDeveloper = _contributions.ToDictionary(pair => pair.Key, pair => pair.Value.GetMainDeveloper()); // Assign a color to each developer // Include all other developers. So we have a more consistent coloring. var mainDevelopers = fileToMainDeveloper.Select(pair => pair.Value.Developer).Distinct(); var scheme = new ColorScheme(mainDevelopers.ToArray()); // Build the knowledge data var builder = new KnowledgeBuilder(developer); var hierarchicalData = builder.Build(summary, _metrics, fileToMainDeveloper); return(new HierarchicalDataContext(hierarchicalData, scheme)); }
public HierarchicalDataContext AnalyzeKnowledge() { LoadHistory(); LoadMetrics(); LoadContributions(false); var summary = _history.GetArtifactSummary(Project.Filter, new HashSet <string>(_metrics.Keys)); var fileToMainDeveloper = _contributions.ToDictionary(pair => pair.Key, pair => pair.Value.GetMainDeveloper()); // Assign a color to each developer var mainDevelopers = fileToMainDeveloper.Select(pair => pair.Value.Developer).Distinct(); var scheme = new ColorScheme(mainDevelopers.ToArray()); var legend = new LegendBitmap(scheme); legend.CreateLegendBitmap(Path.Combine(Project.Cache, "knowledge_color.bmp")); // Build the knowledge data var builder = new KnowledgeBuilder(); var hierarchicalData = builder.Build(summary, _metrics, fileToMainDeveloper); return(new HierarchicalDataContext(hierarchicalData, scheme)); }