public void save(OutputStream out,
String encoding) throws IOException {
// This print-writer will be flushed, but not closed, as closing the underlying stream is not desired here.
final PrintWriter writer = new PrintWriter(new OutputStreamWriter(out, encoding));
final AttributeList attList = new AttributeList();
attList.addNamespaceDeclaration("", ConfigGUIModule.NAMESPACE); //$NON-NLS-1$
final DefaultTagDescription tagDescription = new DefaultTagDescription();
tagDescription.configure
(JFreeReportBoot.getInstance().getGlobalConfig(), "org.jfree.report.modules.gui.config.writer.");
final XmlWriter dwriter = new XmlWriter(writer, tagDescription);
dwriter.writeXmlDeclaration(encoding);
dwriter.writeTag(ConfigGUIModule.NAMESPACE,
"config-description", attList, XmlWriterSupport.OPEN); //$NON-NLS-1$
final CharacterEntityParser parser = CharacterEntityParser.createXMLEntityParser();
for (int i = 0; i < getSize(); i++)
{
final ConfigDescriptionEntry entry = get(i);
final AttributeList p = new AttributeList();
p.setAttribute(ConfigGUIModule.NAMESPACE, "name", entry.getKeyName()); //$NON-NLS-1$
p.setAttribute(ConfigGUIModule.NAMESPACE, "global", String.valueOf(entry.isGlobal())); //$NON-NLS-1$
p.setAttribute(ConfigGUIModule.NAMESPACE, "hidden", String.valueOf(entry.isHidden())); //$NON-NLS-1$
dwriter.writeTag(ConfigGUIModule.NAMESPACE, "key", p, XmlWriterSupport.OPEN); //$NON-NLS-1$
if (entry.getDescription() != null)
{
dwriter.writeTag(ConfigGUIModule.NAMESPACE, "description", XmlWriterSupport.OPEN); //$NON-NLS-1$
writer.write(parser.encodeEntities(entry.getDescription()));
dwriter.writeCloseTag();
}
if (entry instanceof ClassConfigDescriptionEntry)
{
final ClassConfigDescriptionEntry ce = (ClassConfigDescriptionEntry) entry;
if (ce.getBaseClass() != null)
{
dwriter.writeTag (ConfigGUIModule.NAMESPACE, "class", "instanceof", //$NON-NLS-1$ //$NON-NLS-2$
ce.getBaseClass().getName(), XmlWriterSupport.CLOSE);
}
else
{
dwriter.writeTag(ConfigGUIModule.NAMESPACE, "class", "instanceof", //$NON-NLS-1$ //$NON-NLS-2$
"java.lang.Object", XmlWriterSupport.CLOSE); //$NON-NLS-1$
}
}
else if (entry instanceof TextConfigDescriptionEntry)
{
dwriter.writeTag(ConfigGUIModule.NAMESPACE, "text", //$NON-NLS-1$
new AttributeList(), XmlWriterSupport.CLOSE);
}
else if (entry instanceof EnumConfigDescriptionEntry)
{
final EnumConfigDescriptionEntry en = (EnumConfigDescriptionEntry) entry;
dwriter.writeTag(ConfigGUIModule.NAMESPACE, "enum", XmlWriterSupport.OPEN); //$NON-NLS-1$
final String[] alts = en.getOptions();
if (alts != null)
{
for (int optCount = 0; optCount < alts.length; optCount++)
{
dwriter.writeTag(ConfigGUIModule.NAMESPACE, "text", XmlWriterSupport.OPEN); //$NON-NLS-1$
dwriter.writeText(dwriter.normalizeLocal(alts[optCount], false));
dwriter.writeCloseTag();
}
}
dwriter.writeCloseTag();
}
dwriter.writeCloseTag();
}
dwriter.writeCloseTag();
writer.flush();
}
Saves the model into an xml file. |