/** * Warlock, the open-source cross-platform game client * * Copyright 2008, Warlock LLC, and individual contributors as indicated * by the @authors tag. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package cc.warlock.build; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import java.util.Properties; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class FeatureVersionReplacer extends Task { protected String buildDirectory; protected String version; protected String feature; @Override public void execute() throws BuildException { if (buildDirectory == null) { buildDirectory = getProject().getProperty("buildDirectory"); if (buildDirectory == null) { throw new BuildException("buildDirectory can't be null"); } } if (version == null) { throw new BuildException("version can't be null"); } if (feature == null) { throw new BuildException("feature can't be null"); } replaceVersions(); } protected void replaceVersions () throws BuildException { SAXReader reader = new SAXReader(); try { File featureFile = new File(new File(new File(buildDirectory, "features"), feature), "feature.xml"); Document featureDoc = reader.read(featureFile); Element featureEl = featureDoc.getRootElement(); featureEl.attribute("version").setValue(version); // Properties versions = new Properties(); // File versionsFile = new File(buildDirectory, "finalPluginsVersions.properties"); // FileInputStream stream = new FileInputStream(versionsFile); // versions.load(stream); // stream.close(); // // for (Element pluginEl : (List<Element>) featureEl.elements("plugin")) // { // if (pluginEl.attributeValue("version").equals("0.0.0")) // { // if (versions.containsKey(pluginEl.attributeValue("id"))) // pluginEl.attribute("version").setValue(versions.getProperty(pluginEl.attributeValue("id"))); // } // } OutputFormat format = OutputFormat.createPrettyPrint(); FileOutputStream outStream = new FileOutputStream(featureFile); XMLWriter writer = new XMLWriter(outStream, format); writer.write(featureDoc); outStream.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String getBuildDirectory() { return buildDirectory; } public void setBuildDirectory(String buildDirectory) { this.buildDirectory = buildDirectory; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public String getFeature() { return feature; } public void setFeature(String feature) { this.feature = feature; } }