package loon.build.project.java;
import java.io.File;
public class JavaCompile {
JavaPath classpath;
ProjectName prj;
String target;
String source;
String encoding;
boolean debug;
String srcdir;
String destdir;
String executable;
public void setExecutable(String executable) {
this.executable = executable;
}
public void setTarget(String target) {
this.target = target;
}
public void setSource(String source) {
this.source = source;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void setDebug(boolean debug) {
this.debug = debug;
}
public void setDestdir(String destdir) {
this.destdir = destdir;
}
public void setClasspath(JavaPath classpath) {
this.classpath = classpath;
}
public int execute() throws Exception {
RunCompile exec = new RunCompile(prj);
exec.setCmd(executable);
if (!debug) {
exec.addArg("-g:none");
}
if (destdir != null) {
new File(destdir).mkdirs();
exec.addArg("-d", destdir);
}
if (encoding != null) {
exec.addArg("-encoding", encoding);
}
if (source != null) {
exec.addArg("-source", source);
}
if (srcdir != null) {
exec.addArg("-sourcepath", srcdir);
}
if (target != null) {
exec.addArg("-target", target);
}
if (classpath != null) {
String cp = classpath.toCommandlineString();
if (!cp.isEmpty()) {
exec.addArg("-cp", cp);
}
}
File f = JarWrite.getTempFile("filelist");
int cnt = JarWrite.writeFileList(f, new File(srcdir), new File(destdir));
if (cnt == 0) {
return cnt;
}
exec.addArg("@" + f.getCanonicalPath());
int code = exec.execute();
f.delete();
prj.projects.totalJavac += cnt;
if (code != 0) {
return -Math.abs(code);
}
return cnt;
}
public void setProject(ProjectName prj) {
this.prj = prj;
}
public void setSrcdir(String string) {
this.srcdir = string;
}
}