package nagini.utils; import java.io.File; import java.util.List; import com.google.common.collect.Lists; public class JavaCommandBuilder { List<String> args; String javaExec; String jvmOptions; String classPaths; String className; List<String> classOptions; public JavaCommandBuilder() { javaExec = "java"; jvmOptions = ""; classPaths = null; className = null; classOptions = Lists.newArrayList(); } public JavaCommandBuilder setJavaExec(String javaExec) { this.javaExec = javaExec; return this; } public JavaCommandBuilder setJvmOption(String jvmOptions) { this.jvmOptions = jvmOptions; return this; } public JavaCommandBuilder addJvmOption(String jvmOption) { this.jvmOptions = this.jvmOptions + " " + jvmOption; return this; } public JavaCommandBuilder setClassPath(String classPaths) { this.classPaths = classPaths; return this; } public JavaCommandBuilder setClassName(String className) { this.className = className; return this; } public JavaCommandBuilder addClassOption(String classOption) { classOptions.add(classOption); return this; } public JavaCommandBuilder addClassOption(String classOptionName, String classOptionArgument) { classOptions.add(classOptionName); classOptions.add(classOptionArgument); return this; } public JavaCommandBuilder addClassPath(String classPath) { if(this.classPaths == null) { this.classPaths = classPath; } else { this.classPaths = this.classPaths + ":" + classPath; } return this; } public JavaCommandBuilder addClassPathByFolder(String folderPath) { File folder = new File(folderPath); if (folder.exists()) { for(File file: folder.listFiles()) { addClassPath(file.getPath()); } return this; } else { throw new IllegalArgumentException( "Cannot add elements to classpath as the path does not exist: " + folderPath); } } public List<String> getJavaCommand() { args = Lists.newArrayList(); args.add(javaExec); for(String jvmOption: jvmOptions.split(" ")) { args.add(jvmOption); } args.add("-cp"); args.add(classPaths); args.add(className); args.addAll(classOptions); return args; } }