package jetbrains.mps.build.mps.runtime.anttask;
/*Generated by MPS */
import jetbrains.mps.build.ant.MpsLoadTask;
import org.apache.tools.ant.types.Path;
import java.util.Set;
import java.io.File;
import java.util.HashSet;
import java.net.URLEncoder;
import java.net.URLDecoder;
public class GenModuleXmlTask extends MpsLoadTask {
private Path myClasspath = null;
public GenModuleXmlTask() {
}
@Override
protected String getWorkerClass() {
return "jetbrains.mps.build.mps.runtime.anttask.GenModuleXmlWorker";
}
public void addConfiguredGenModule(ModuleXml moduleXml) {
myWhatToDo.addParameter(encode(moduleXml));
}
public void addConfiguredClassPath(Path path) {
myClasspath = path;
}
@Override
protected Set<File> calculateClassPath(boolean fork) {
if (myClasspath == null) {
return super.calculateClassPath(fork);
}
Set<File> path = new HashSet<File>();
for (String pathelem : myClasspath.list()) {
path.add(new File(pathelem));
}
return path;
}
public static String encode(ModuleXml moduleXml) {
StringBuilder sb = new StringBuilder();
sb.append(moduleXml.getRef()).append("\n").append(moduleXml.getDestfile()).append("\n");
sb.append(moduleXml.getInnerText(GenModuleXmlWorker.INDENT_INNER_XML, GenModuleXmlWorker.INDENT_WITH));
return URLEncoder.encode(sb.toString());
}
public static ModuleXml decode(String s) {
ModuleXml result = new ModuleXml();
String[] param = URLDecoder.decode(s).split("\n");
if (param.length > 0) {
result.setRef(param[0]);
}
if (param.length > 1) {
result.setDestfile(param[1]);
}
StringBuilder sb = new StringBuilder();
for (int i = 2; i < param.length; ++i) {
sb.append("\n").append(param[i]);
}
result.setInnerText(sb.toString());
return result;
}
}