![JAR search and dependency download from the Maven repository](/logo.png)
io.takari.maven.builder.smart.ProjectsBuildMetrics Maven / Gradle / Ivy
package io.takari.maven.builder.smart;
import io.takari.maven.builder.smart.BuildMetrics.Timer;
import java.util.*;
import org.apache.maven.project.MavenProject;
import com.google.common.base.Functions;
import com.google.common.collect.Ordering;
class ProjectsBuildMetrics implements SmartBuilderImpl.Listener {
private final Map projectsBuildMetrics;
ProjectsBuildMetrics(Collection projects) {
Map projectsBuildMetrics = new HashMap<>();
for (MavenProject project : projects) {
projectsBuildMetrics.put(project, new BuildMetrics());
}
this.projectsBuildMetrics = Collections.unmodifiableMap(projectsBuildMetrics);
}
public BuildMetrics getBuildMetrics(final MavenProject project) {
return projectsBuildMetrics.get(project);
}
private void start(final MavenProject project, final Timer timer) {
projectsBuildMetrics.get(project).start(timer);
}
private void stop(final MavenProject project, final Timer timer) {
projectsBuildMetrics.get(project).stop(timer);
}
public List getProjects() {
return new ArrayList<>(projectsBuildMetrics.keySet());
}
public List getProjectsSortedByWalltime() {
return Ordering.natural().onResultOf(Functions.forMap(projectsBuildMetrics))
.sortedCopy(projectsBuildMetrics.keySet());
}
@Override
public void onReady(MavenProject project) {
start(project, Timer.QUEUETIME_MS);
}
@Override
public void onStart(MavenProject project) {
stop(project, Timer.QUEUETIME_MS);
start(project, Timer.SERVICETIME_MS);
// TODO add CPU usage tracking
}
@Override
public void onFinish(MavenProject project) {
stop(project, Timer.SERVICETIME_MS);
}
public Map asMap(Timer timer) {
Map result = new HashMap<>();
for (Map.Entry entry : projectsBuildMetrics.entrySet()) {
result.put(entry.getKey(), entry.getValue().getMetricMillis(timer));
}
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy