package org.safehaus.penrose.connection;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.dom4j.Element;
import org.dom4j.tree.DefaultElement;
import org.dom4j.tree.DefaultAttribute;
import org.dom4j.tree.DefaultText;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileWriter;
/**
* @author Endi Sukma Dewata
*/
public class ConnectionWriter {
public Logger log = LoggerFactory.getLogger(getClass());
public ConnectionWriter() {
}
public void write(File file, ConnectionConfigManager connectionConfigManager) throws Exception {
log.debug("Writing "+file+".");
Element element = createElement(connectionConfigManager);
FileWriter fw = new FileWriter(file);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setTrimText(false);
XMLWriter writer = new XMLWriter(fw, format);
writer.startDocument();
writer.startDTD(
"connections",
"-//Penrose/DTD Connections "+getClass().getPackage().getSpecificationVersion()+"//EN",
"http://penrose.safehaus.org/dtd/connections.dtd"
);
writer.write(element);
writer.close();
}
public Element createElement(ConnectionConfigManager connectionConfigManager) {
Element element = new DefaultElement("connections");
for (ConnectionConfig connectionConfig : connectionConfigManager.getConnectionConfigs()) {
element.add(createElement(connectionConfig));
}
return element;
}
public Element createElement(ConnectionConfig connectionConfig) {
Element element = new DefaultElement("connection");
element.add(new DefaultAttribute("name", connectionConfig.getName()));
if (!connectionConfig.isEnabled()) element.addAttribute("enabled", "false");
String connectionClass = connectionConfig.getConnectionClass();
if (connectionClass != null) {
Element descriptionElement = new DefaultElement("connection-class");
descriptionElement.add(new DefaultText(connectionClass));
element.add(descriptionElement);
}
String description = connectionConfig.getDescription();
if (description != null) {
Element descriptionElement = new DefaultElement("description");
descriptionElement.add(new DefaultText(description));
element.add(descriptionElement);
}
String adapterName = connectionConfig.getAdapterName();
if (adapterName != null) {
Element adapterElement = new DefaultElement("adapter-name");
adapterElement.add(new DefaultText(adapterName));
element.add(adapterElement);
}
for (String name : connectionConfig.getParameterNames()) {
String value = connectionConfig.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;
}
}