package com.thoughtworks.go.plugin.access.configrepo.contract.tasks; import com.thoughtworks.go.plugin.access.configrepo.ErrorCollection; public class CRBuildTask extends CRTask { public static final String RAKE_TYPE_NAME = "rake"; public static final String ANT_TYPE_NAME = "ant"; public static final String NANT_TYPE_NAME = "nant"; public static CRBuildTask rake() { return new CRBuildTask(RAKE_TYPE_NAME); } public static CRBuildTask rake(String rakeFile) { return new CRBuildTask(RAKE_TYPE_NAME,rakeFile,null,null); } public static CRBuildTask rake(String rakeFile,String target) { return new CRBuildTask(RAKE_TYPE_NAME,rakeFile,target,null); } public static CRBuildTask rake(String rakeFile,String target,String workingDirectory) { return new CRBuildTask(RAKE_TYPE_NAME,rakeFile,target,workingDirectory); } public static CRBuildTask ant() { return new CRBuildTask(ANT_TYPE_NAME,null,null,null); } public static CRBuildTask ant(String antFile) { return new CRBuildTask(ANT_TYPE_NAME,antFile,null,null); } public static CRBuildTask ant(String antFile,String target) { return new CRBuildTask(ANT_TYPE_NAME,antFile,target,null); } public static CRBuildTask ant(String antFile,String target,String workingDirectory) { return new CRBuildTask(ANT_TYPE_NAME,antFile,target,workingDirectory); } public static CRNantTask nant() { return new CRNantTask(NANT_TYPE_NAME,null,null,null,null); } public static CRNantTask nant(String nantFile) { return new CRNantTask(NANT_TYPE_NAME,nantFile,null,null,null); } public static CRNantTask nant(String nantFile,String target) { return new CRNantTask(NANT_TYPE_NAME,nantFile,target,null,null); } public static CRNantTask nant(String nantFile,String target,String workingDirectory) { return new CRNantTask(NANT_TYPE_NAME,nantFile,target,workingDirectory,null); } public static CRNantTask nant(String nantFile,String target,String workingDirectory,String nantPath) { return new CRNantTask(NANT_TYPE_NAME,nantFile,target,workingDirectory,nantPath); } public static CRBuildTask rake(CRRunIf runIf, CRTask onCancel, String buildFile,String target,String workingDirectory) { return new CRBuildTask(runIf,onCancel,buildFile,target,workingDirectory,CRBuildFramework.rake); } public static CRBuildTask ant(CRRunIf runIf, CRTask onCancel, String buildFile,String target,String workingDirectory) { return new CRBuildTask(runIf,onCancel,buildFile,target,workingDirectory,CRBuildFramework.ant); } private String build_file; private String target; private String working_directory; public CRBuildTask(String type,String buildFile,String target,String workingDirectory){ super(type); this.build_file = buildFile; this.target = target; this.working_directory = workingDirectory; } public CRBuildTask(String type){ super(type); } public CRBuildTask(CRRunIf runIf, CRTask onCancel, String buildFile,String target,String workingDirectory,CRBuildFramework type) { super(runIf, onCancel); this.build_file = buildFile; this.target= target; this.working_directory = workingDirectory; super.type = type.toString(); } public String getBuildFile() { return build_file; } public String getTarget() { return target; } public String getWorkingDirectory() { return working_directory; } public CRBuildFramework getType() { if(type == null) return null; return CRBuildFramework.valueOf(type); } @Override public void getErrors(ErrorCollection errors, String parentLocation) { String location = getLocation(parentLocation); errors.checkMissing(location,"type",type); } @Override public String getLocation(String parent) { String myLocation = getLocation() == null ? parent : getLocation(); String type = this.getType() == null ? "unknown" : this.getType().toString(); return String.format("%s; %s build task",myLocation,type); } @Override public boolean equals(Object o) { if (this == o) { return true; } CRBuildTask buildTask = (CRBuildTask)o; if(buildTask == null) return false; if(!super.equals(buildTask)) return false; if (build_file != null ? !build_file.equals(buildTask.build_file) : buildTask.build_file != null) { return false; } if (target != null ? !target.equals(buildTask.target) : buildTask.target != null) { return false; } if (working_directory != null ? !working_directory.equals(buildTask.working_directory) : buildTask.working_directory != null) { return false; } return true; } @Override public int hashCode() { int result = super.hashCode(); result = 31 * result + (build_file != null ? build_file.hashCode() : 0); result = 31 * result + (target != null ? target.hashCode() : 0); result = 31 * result + (working_directory != null ? working_directory.hashCode() : 0); return result; } }