package krasa.mavenrun.model; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.jetbrains.idea.maven.model.MavenConstants; import com.rits.cloning.Cloner; public class ApplicationSettings extends DomainObject implements Cloneable { private static final Collection<String> BASIC_PHASES = MavenConstants.BASIC_PHASES; public static final int ACTUAL_VERSION = 1; int version = 0; private Goals goals = new Goals(); private Goals pluginAwareGoals = new Goals(); public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } public Goals getPluginAwareGoals() { return pluginAwareGoals; } public void setPluginAwareGoals(Goals pluginAwareGoals) { this.pluginAwareGoals = pluginAwareGoals; } public Goals getGoals() { return goals; } public void setGoals(Goals goals) { this.goals = goals; } public static ApplicationSettings defaultApplicationSettings() { ApplicationSettings applicationSettings = new ApplicationSettings(); Goals pluginAwareGoals = new Goals(); pluginAwareGoals.add("jetty:run"); pluginAwareGoals.add("tomcat:run"); pluginAwareGoals.add("tomcat5:run"); pluginAwareGoals.add("tomcat6:run"); pluginAwareGoals.add("tomcat7:run"); applicationSettings.setPluginAwareGoals(pluginAwareGoals); Goals goals = new Goals(); for (String basicPhase : BASIC_PHASES) { goals.add(new Goal(basicPhase)); } goals.add(new Goal("clean install")); applicationSettings.setGoals(goals); applicationSettings.setVersion(ACTUAL_VERSION); return applicationSettings; } public List<Goal> getAllGoals() { List<Goal> allGoals = new ArrayList<Goal>(goals.size() + pluginAwareGoals.size()); allGoals.addAll(goals.getGoals()); allGoals.addAll(pluginAwareGoals.getGoals()); return allGoals; } public List<String> getAllGoalsAsString() { List<String> strings = new ArrayList<String>(); List<Goal> allGoals = getAllGoals(); for (Goal allGoal : allGoals) { strings.add(allGoal.getCommandLine()); } return strings; } @Override public ApplicationSettings clone() { Cloner cloner = new Cloner(); cloner.nullInsteadOfClone(); return cloner.deepClone(this); } public String[] getAllGoalsAsStringArray() { return toArray(getAllGoalsAsString()); } private String[] toArray(List<String> goalsAsStrings) { return goalsAsStrings.toArray(new String[goalsAsStrings.size()]); } }