package org.safehaus.penrose.service;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.dom4j.Element;
import org.dom4j.tree.DefaultElement;
import org.dom4j.tree.DefaultText;
import java.io.Writer;
import java.io.FileWriter;
import java.io.File;
/**
* @author Endi Sukma Dewata
*/
public class ServiceWriter {
public void write(File directory, ServiceConfig serviceConfig) throws Exception {
Element element = createElement(serviceConfig);
File serviceInf = new File(directory, "SERVICE-INF");
serviceInf.mkdirs();
File file = new File(serviceInf, "service.xml");
Writer writer = new FileWriter(file);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setTrimText(false);
XMLWriter xmlWriter = new XMLWriter(writer, format);
xmlWriter.startDocument();
xmlWriter.startDTD(
"service",
"-//Penrose/DTD Service "+getClass().getPackage().getSpecificationVersion()+"//EN",
"http://penrose.safehaus.org/dtd/service.dtd"
);
xmlWriter.write(element);
xmlWriter.close();
writer.close();
}
public Element createElement(ServiceConfig serviceConfig) {
Element element = new DefaultElement("service");
if (!serviceConfig.isEnabled()) element.addAttribute("enabled", "false");
String serviceClass = serviceConfig.getServiceClass();
if (serviceClass != null && !"".equals(serviceClass)) {
Element classElement = new DefaultElement("service-class");
classElement.add(new DefaultText(serviceClass));
element.add(classElement);
}
String description = serviceConfig.getDescription();
if (description != null && !"".equals(description)) {
Element descriptionElement = new DefaultElement("description");
descriptionElement.add(new DefaultText(description));
element.add(descriptionElement);
}
for (String name : serviceConfig.getParameterNames()) {
String value = serviceConfig.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;
}
}