package org.netbeans.gradle.project.tasks; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import org.jtrim.utils.ExceptionHelper; import org.netbeans.gradle.project.api.config.ProfileDef; import org.netbeans.gradle.project.api.task.BuiltInGradleCommandQuery; import org.netbeans.gradle.project.api.task.CustomCommandActions; import org.netbeans.gradle.project.api.task.GradleCommandTemplate; import org.netbeans.gradle.project.util.NbSupplier; public final class MergedBuiltInGradleCommandQuery implements BuiltInGradleCommandQuery { private final BuiltInGradleCommandQuery defaultBuiltInTasks; private final NbSupplier<? extends Collection<? extends BuiltInGradleCommandQuery>> extraQueries; public MergedBuiltInGradleCommandQuery(NbSupplier<? extends Collection<? extends BuiltInGradleCommandQuery>> extraQueries) { ExceptionHelper.checkNotNullArgument(extraQueries, "extraQueries"); this.extraQueries = extraQueries; this.defaultBuiltInTasks = new DefaultBuiltInTasks(); } private List<BuiltInGradleCommandQuery> getAllQueries() { List<BuiltInGradleCommandQuery> result = new ArrayList<>(); result.addAll(extraQueries.get()); result.add(defaultBuiltInTasks); return result; } @Override public Set<String> getSupportedCommands() { Set<String> result = new HashSet<>(32); for (BuiltInGradleCommandQuery query: getAllQueries()) { result.addAll(query.getSupportedCommands()); } return result; } @Override public String tryGetDisplayNameOfCommand(String command) { for (BuiltInGradleCommandQuery query: getAllQueries()) { String displayName = query.tryGetDisplayNameOfCommand(command); if (displayName != null) { return displayName; } } return null; } @Override public GradleCommandTemplate tryGetDefaultGradleCommand(ProfileDef profileDef, String command) { for (BuiltInGradleCommandQuery query: getAllQueries()) { if (query.getSupportedCommands().contains(command)) { return query.tryGetDefaultGradleCommand(profileDef, command); } } return null; } @Override public CustomCommandActions tryGetCommandDefs(ProfileDef profileDef, String command) { for (BuiltInGradleCommandQuery query: getAllQueries()) { if (query.getSupportedCommands().contains(command)) { return query.tryGetCommandDefs(profileDef, command); } } return null; } }