package org.netbeans.gradle.model.java;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.tasks.TaskCollection;
import org.gradle.testing.jacoco.plugins.JacocoPlugin;
import org.gradle.testing.jacoco.tasks.JacocoReport;
import org.gradle.testing.jacoco.tasks.JacocoReportsContainer;
import org.netbeans.gradle.model.api.ProjectInfoBuilder2;
import org.netbeans.gradle.model.util.BuilderUtils;
enum JacocoModelBuilder implements ProjectInfoBuilder2<JacocoModel> {
INSTANCE;
public JacocoModel getProjectInfo(Object project) {
return getProjectInfo((Project)project);
}
private JacocoModel getProjectInfo(Project project) {
if (!project.getPlugins().hasPlugin(JacocoPlugin.class)) {
return null;
}
TaskCollection<? extends Task> reportTasks = project.getTasks().withType(JacocoReport.class);
if (reportTasks.size() <= 0) {
return null;
}
JacocoReportFiles reportFiles = tryGetReportFiles(reportTasks.iterator().next());
if (reportFiles == null) {
return null;
}
return new JacocoModel(reportFiles);
}
public String getName() {
return BuilderUtils.getNameForEnumBuilder(this);
}
private static JacocoReportFiles tryGetReportFiles(Task task) {
if (!(task instanceof JacocoReport)) {
return null;
}
JacocoReport reportTask = (JacocoReport)task;
JacocoReportsContainer reports = reportTask.getReports();
return new JacocoReportFiles(
reports.getHtml().getEntryPoint(),
reports.getXml().getDestination());
}
}