1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| package org.apache.tools.ant.taskdefs.optional.valtechtoolkit;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import java.io.File;
import org.xres4j.ResourcesManager;
import java.io.FileReader;
import java.io.FileInputStream;
import org.xres4j.ResourcesEnumeration;
import org.apache.tools.ant.taskdefs.Copy;
import org.apache.tools.ant.types.FilterSet;
import org.apache.tools.ant.taskdefs.Filter;
public class ApplyOnNodes extends Task {
public ApplyOnNodes() {
}
public void execute() throws BuildException {
try {
initialize();
ResourcesEnumeration iter = rm.getResources("/nodes/node");
String nodeName;
while (iter.hasNext()) {
nodeName = iter.getResource("@name");
generateNodeFile(nodeName,iter);
}
}
catch (Exception e) {
e.printStackTrace();
throw new BuildException();
}
}
private void generateNodeFile(String nodeName,ResourcesEnumeration iter) throws BuildException {
try {
Copy copyTask = new Copy();
copyTask.setProject(getProject());
String destFilename = getProject().getBaseDir() + File.separator + destDir + File.separator + nodeName + extension;
copyTask.setTofile(new File(destFilename));
copyTask.setFile(template);
FilterSet filter = copyTask.createFilterSet();
String token,value;
filter.addFilter("name",nodeName);
token = "/nodes/node[@name=\'"+nodeName+"\']/listen-port/@value";
value = rm.getResource(token);
filter.addFilter("listen-port",value);
token = "/nodes/node[@name=\'"+nodeName+"\']/ssl-port/@value";
value = rm.getResource(token);
filter.addFilter("ssl-port",value);
token = "/nodes/node[@name=\'"+nodeName+"\']/in-cluster/@value";
value = rm.getResource(token);
filter.addFilter("in-cluster",value);
copyTask.setFiltering(true);
copyTask.execute();
}
catch (Exception e) {
e.printStackTrace();
throw new BuildException();
}
}
private void initialize() throws BuildException {
try {
fullNodeFilename = getProject().getBaseDir() + File.separator + nodes;
System.setProperty("resources.pathsep", "|");
System.setProperty("resources.path", "..");
System.setProperty("resources.filenames", fullNodeFilename);
rm = new ResourcesManager();
} catch (Exception e) {
throw new BuildException();
}
}
public File getTemplate() { return template; }
public void setTemplate(File f) { template = f; }
public String getNodes() { return nodes; }
public void setNodes(String n) { nodes = n; }
public String getDestDir() { return destDir; }
public void setDestDir(String n) { destDir = n; }
public String getExtension() { return extension; }
public void setExtension(String n) { extension = n; }
private File template;
private String nodes;
private String fullNodeFilename;
private String destDir;
private String templateContent;
private String extension = ".node";
private ResourcesManager rm = null;
} |
Partager