/**
* KKMulticopterFlashTool, a avrdude GUI for flashing KK boards and other
* equipment.
* Copyright (C) 2011 Christian Moll
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.lazyzero.kkMulticopterFlashTool.utils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Vector;
import org.apache.commons.codec.EncoderException;
import de.lazyzero.kkMulticopterFlashTool.utils.xml.XMLElement;
public class XmlWriterFirmwares {
private String uri;
private XMLElement xmlData;
private Vector<Firmware> firmwares;
public XmlWriterFirmwares(String uri, Vector<Firmware> firmwares) {
this.uri = uri + "test";
this.firmwares = firmwares;
try {
xmlData = createXML();
} catch (EncoderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private XMLElement createXML() throws EncoderException {
XMLElement xml = new XMLElement();
xml.setName("firmwares");
for (Firmware firmware : firmwares) {
// <firmware name="TGY" value="2012-06-10">
XMLElement firmwareE = new XMLElement();
firmwareE.setName("firmware");
firmwareE.setAttribute("name", firmware.getName());
firmwareE.setAttribute("value", firmware.getVersion());
// <author name="Simon Kirby" />
XMLElement author = new XMLElement();
author.setName("author");
author.setAttribute("name", firmware.getAuthor());
// <server name="mirrored by LazyZero" />
XMLElement server = new XMLElement();
server.setName("server");
server.setAttribute("name", firmware.getServer());
// <controller name="esc" target="1"/>
XMLElement controller = new XMLElement();
controller.setName("controller");
controller.setAttribute("name", firmware.getController());
controller.setAttribute("target", firmware.getTarget());
// <svn url="svn://code.google.com/p/wii-esc/source/browse/#svn%2Frelease\low_side_pwm" name="bs_nfet.hex"/>
XMLElement svn = new XMLElement();
if (firmware.getSVN()!=null) {
svn.setName("svn");
svn.setAttribute("url", firmware.getSVN());
svn.setAttribute("name", firmware.getSVNname());
}
// <zipfile url="http://lazyzero.de/_media/modellbau/kkmulticopterflashtool/esc_firmware/tgy_2012-06-10_d8f53c2.zip" />
XMLElement zipfile = new XMLElement();
zipfile.setName("zipfile");
zipfile.setAttribute("url", firmware.getZipURL());
// <file url="file://tgy.hex" />
XMLElement file = new XMLElement();
file.setName("file");
file.setAttribute("url", firmware.getFileURL());
// <md5 value="4f94950200b77f2cb29d6055f8627f03" />
XMLElement md5 = new XMLElement();
md5.setName("md5");
md5.setAttribute("value", firmware.getMD5());
// <additionalOptions option="-e" />
XMLElement additionalOptions = new XMLElement();
additionalOptions.setName("additionalOptions");
additionalOptions.setAttribute("option", firmware.getAdditionalOptions());
// <commenturl url="http://tinyurl.com/7z9xdjq" />
XMLElement commentURL = new XMLElement();
commentURL.setName("commenturl");
commentURL.setAttribute("url", firmware.getCommentURL());
// <features value="5" />
XMLElement feature = new XMLElement();
feature.setName("feature");
feature.setAttribute("value", firmware.getFeatures());
XMLElement isDeprecated = new XMLElement();
feature.setName("deprecated");
feature.setAttribute("value", firmware.isDeprecated()?"true":"false");
// <firmware name="TGY" value="2012-06-10">
// <author name="Simon Kirby" />
// <server name="mirrored by LazyZero" />
// <controller name="esc" target="1"/>
// <zipfile url="http://lazyzero.de/_media/modellbau/kkmulticopterflashtool/esc_firmware/tgy_2012-06-10_d8f53c2.zip" />
// <file url="file://tgy.hex" />
// <md5 value="4f94950200b77f2cb29d6055f8627f03" />
// <additionalOptions option="-e" />
// <commenturl url="http://tinyurl.com/7z9xdjq" />
// <features value="5" />
// </firmware>
firmwareE.addChild(author);
firmwareE.addChild(server);
firmwareE.addChild(controller);
if (firmware.getSVN()!="") {
firmwareE.addChild(svn);
}
if (firmware.getZipURL()!=null) firmwareE.addChild(zipfile);
firmwareE.addChild(file);
firmwareE.addChild(md5);
firmwareE.addChild(additionalOptions);
firmwareE.addChild(commentURL);
if (firmware.getFeatures() != -1) firmwareE.addChild(feature);
firmwareE.addChild(isDeprecated);
xml.addChild(firmwareE);
}
return xml;
}
public void writeXmlFile() {
byte[] buffer = xmlData.toString().getBytes();
FileOutputStream fout;
try {
File file = new File(uri);
if (!file.getParentFile().exists())
file.getParentFile().mkdirs();
if (!file.exists()) {
file.createNewFile();
}
fout = new FileOutputStream(file);
fout.write(buffer);
fout.flush();
fout.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}