package org.netbeans.gradle.project.tasks; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import org.jtrim.cancel.CancellationToken; import org.jtrim.utils.ExceptionHelper; import org.netbeans.gradle.project.NbGradleProject; import org.netbeans.gradle.project.NbStrings; import org.netbeans.gradle.project.api.task.CommandCompleteListener; import org.netbeans.gradle.project.api.task.GradleActionProviderContext; public final class GradleTasks { private static final Logger LOGGER = Logger.getLogger(GradleTasks.class.getName()); private static GradleCommandSpecFactory toSpecFactory(final GradleTaskDefFactory taskDefFactory) { ExceptionHelper.checkNotNullArgument(taskDefFactory, "taskDefFactory"); return new GradleCommandSpecFactory() { @Override public String getDisplayName() { return taskDefFactory.getDisplayName(); } @Override public GradleCommandSpec tryCreateCommandSpec(CancellationToken cancelToken) throws Exception { GradleTaskDef result = taskDefFactory.tryCreateTaskDef(cancelToken); return result != null ? new GradleCommandSpec(result, null) : null; } }; } public static Runnable createAsyncGradleTask( NbGradleProject project, GradleTaskDefFactory taskDefFactory, Set<GradleActionProviderContext> actionContexts, CommandCompleteListener listener) { return createAsyncGradleTaskFromSpec(project, toSpecFactory(taskDefFactory), actionContexts, listener); } public static Runnable createAsyncGradleTaskFromSpec( NbGradleProject project, GradleCommandSpecFactory taskDefFactory, Set<GradleActionProviderContext> actionContexts, CommandCompleteListener listener) { return new AsyncGradleTask(project, taskDefFactory, actionContexts, listener); } public static CommandCompleteListener projectTaskCompleteListener(final NbGradleProject project) { ExceptionHelper.checkNotNullArgument(project, "project"); return new CommandCompleteListener() { @Override public void onComplete(Throwable error) { if (error != null) { LOGGER.log(error instanceof Exception ? Level.INFO : Level.SEVERE, "Gradle build failure.", error); String buildFailureMessage = NbStrings.getGradleTaskFailure(); project.displayError(buildFailureMessage, error); } } }; } private GradleTasks() { throw new AssertionError(); } }