Java tutorial
/** * Copyright 2009 Red Hat, Inc. * * 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 2 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, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.safehaus.penrose.partition; import java.io.File; import java.io.FileWriter; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import org.dom4j.tree.DefaultElement; import org.dom4j.tree.DefaultText; import org.safehaus.penrose.adapter.AdapterConfig; import org.safehaus.penrose.interpreter.InterpreterConfig; import org.slf4j.LoggerFactory; import org.slf4j.Logger; /** * @author Endi S. Dewata */ public class PartitionWriter { public Logger log = LoggerFactory.getLogger(getClass()); public PartitionWriter() { } public void write(File baseDir, PartitionConfig partitionConfig) throws Exception { baseDir.mkdirs(); writePartitionXml(baseDir, partitionConfig); } public void writePartitionXml(File directory, PartitionConfig partitionConfig) throws Exception { File file = new File(directory, "partition.xml"); log.debug("Writing " + file + "."); Element element = createElement(partitionConfig); FileWriter fw = new FileWriter(file); OutputFormat format = OutputFormat.createPrettyPrint(); format.setTrimText(false); XMLWriter writer = new XMLWriter(fw, format); writer.startDocument(); writer.startDTD("partition", "-//Penrose/DTD Partition " + getClass().getPackage().getSpecificationVersion() + "//EN", "http://penrose.safehaus.org/dtd/partition.dtd"); writer.write(element); writer.close(); } public Element createElement(PartitionConfig partitionConfig) { Element element = new DefaultElement("partition"); if (!partitionConfig.isEnabled()) element.addAttribute("enabled", "false"); if (!partitionConfig.getDepends().isEmpty()) element.addAttribute("depends", partitionConfig.getStringDepends()); String s = partitionConfig.getDescription(); if (s != null && !"".equals(s)) { Element description = new DefaultElement("description"); description.add(new DefaultText(s)); element.add(description); } s = partitionConfig.getPartitionClass(); if (s != null) { Element partitionClass = new DefaultElement("partition-class"); partitionClass.add(new DefaultText(s)); element.add(partitionClass); } for (InterpreterConfig interpreterConfig : partitionConfig.getInterpreterConfigs()) { element.add(createElement(interpreterConfig)); } for (AdapterConfig adapterConfig : partitionConfig.getAdapterConfigs()) { element.add(createElement(adapterConfig)); } return element; } public Element createElement(InterpreterConfig interpreterConfig) { Element element = new DefaultElement("interpreter"); /* Element interpreterName = new DefaultElement("interpreter-name"); interpreterName.add(new DefaultText(interpreterConfig.getName())); element.add(interpreterName); */ Element interpreterClass = new DefaultElement("interpreter-class"); interpreterClass.add(new DefaultText(interpreterConfig.getInterpreterClass())); element.add(interpreterClass); if (interpreterConfig.getDescription() != null && !"".equals(interpreterConfig.getDescription())) { Element description = new DefaultElement("description"); description.add(new DefaultText(interpreterConfig.getDescription())); element.add(description); } for (String name : interpreterConfig.getParameterNames()) { String value = interpreterConfig.getParameter(name); Element parameter = new DefaultElement("parameter"); Element paramName = new DefaultElement("param-name"); paramName.add(new DefaultText(name)); parameter.add(paramName); Element paramValue = new DefaultElement("param-value"); paramValue.add(new DefaultText(value)); parameter.add(paramValue); element.add(parameter); } return element; } public Element createElement(AdapterConfig adapterConfig) { Element element = new DefaultElement("adapter"); element.addAttribute("name", adapterConfig.getName()); Element adapterClass = new DefaultElement("adapter-class"); adapterClass.add(new DefaultText(adapterConfig.getAdapterClass())); element.add(adapterClass); if (adapterConfig.getDescription() != null && !"".equals(adapterConfig.getDescription())) { Element description = new DefaultElement("description"); description.add(new DefaultText(adapterConfig.getDescription())); element.add(description); } for (String name : adapterConfig.getParameterNames()) { String value = adapterConfig.getParameter(name); Element parameter = new DefaultElement("parameter"); Element paramName = new DefaultElement("param-name"); paramName.add(new DefaultText(name)); parameter.add(paramName); Element paramValue = new DefaultElement("param-value"); paramValue.add(new DefaultText(value)); parameter.add(paramValue); element.add(parameter); } return element; } }