package org.jboss.windup.rules.apps.javaee.model.stats; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; import java.util.logging.Logger; import org.jboss.windup.graph.GraphContext; import org.jboss.windup.graph.model.ProjectModel; import org.jboss.windup.graph.service.GraphService; import org.jboss.windup.graph.service.ProjectService; import org.jboss.windup.util.Logging; /** * @author <a href="mailto:dklingenberg@gmail.com">David Klingenberg</a> */ public class ProjectTechnologiesStatsService extends GraphService<ProjectTechnologiesStatsModel> { private final static Logger LOG = Logging.get(TechnologiesStatsService.class); private Set<ProjectModel> projects; private TechnologiesStatsService technologiesStatsService; public ProjectTechnologiesStatsService(GraphContext context) { super(context, ProjectTechnologiesStatsModel.class); this.technologiesStatsService = new TechnologiesStatsService(context); ProjectService projectService = new ProjectService(context); this.projects = projectService.getRootProjectModels(); } /** * Compute the stats for this execution. */ public Collection<ProjectTechnologiesStatsModel> computeStats() { List<ProjectTechnologiesStatsModel> result = new ArrayList<>(); Map<ProjectModel, Map<String, Integer>> suffixToCount = this.technologiesStatsService.countFilesBySuffix(); Map<ProjectModel, Map<String, Integer>> technologiesUsage = this.technologiesStatsService.countTechnologiesUsage(); for (ProjectModel rootProject : this.projects) { ProjectTechnologiesStatsModel stats = this.create(); stats.setComputed(new Date()); stats.setProjectModel(rootProject); stats.setTechnologiesStatsModel(this.technologiesStatsService.computeStats( suffixToCount.get(rootProject), technologiesUsage.get(rootProject))); result.add(stats); } this.commit(); return result; } }