package jetbrains.mps.sampleXML.textGen;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.text.rt.TextGenContext;
import jetbrains.mps.text.impl.TextGenSupport;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import org.jdom.Element;
import org.jdom.Document;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.apache.log4j.LogManager;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
public abstract class ElementCreator {
public static void byElement(SNode node, final TextGenContext ctx) {
final TextGenSupport tgs = new TextGenSupport(ctx);
SNode element = SLinkOperations.getTarget(node, MetaAdapterFactory.getContainmentLink(0x772f6dcd8c0d48f7L, 0x869c908e036f7c8eL, 0x11d45f8a8b6L, 0x11d45f8a8b8L, "rootElement"));
Element result = ElementCreator.createElement(element, ctx);
Document document = new Document();
document.setRootElement(result);
try {
Format prettyFormat = Format.getPrettyFormat();
prettyFormat.setTextMode(Format.TextMode.PRESERVE);
XMLOutputter xmlOutputter = new XMLOutputter(prettyFormat);
String output = xmlOutputter.outputString(document);
tgs.append(output);
} catch (Exception e) {
LogManager.getLogger(Document.class).error(null, e);
}
}
protected static Element createElement(SNode element, final TextGenContext ctx) {
final TextGenSupport tgs = new TextGenSupport(ctx);
Element result = new Element(SPropertyOperations.getString(element, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")));
for (SNode attribute : SLinkOperations.getChildren(element, MetaAdapterFactory.getContainmentLink(0x772f6dcd8c0d48f7L, 0x869c908e036f7c8eL, 0x11d45f8a8b9L, 0x11d45f8a8baL, "attribute"))) {
if (SPropertyOperations.getString(attribute, MetaAdapterFactory.getProperty(0x772f6dcd8c0d48f7L, 0x869c908e036f7c8eL, 0x11d45f8a8a1L, 0x11d45f8a8a3L, "value")) != null) {
result.setAttribute(SPropertyOperations.getString(attribute, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")), SPropertyOperations.getString(attribute, MetaAdapterFactory.getProperty(0x772f6dcd8c0d48f7L, 0x869c908e036f7c8eL, 0x11d45f8a8a1L, 0x11d45f8a8a3L, "value")));
}
}
boolean first = true;
for (SNode part : SLinkOperations.getChildren(element, MetaAdapterFactory.getContainmentLink(0x772f6dcd8c0d48f7L, 0x869c908e036f7c8eL, 0x11d45f8a8b9L, 0x11d45f8a8bbL, "content"))) {
if (SNodeOperations.isInstanceOf(part, MetaAdapterFactory.getConcept(0x772f6dcd8c0d48f7L, 0x869c908e036f7c8eL, 0x11d45f8a8c1L, "jetbrains.mps.sampleXML.structure.Text"))) {
if (!(first)) {
result.addContent("\n");
}
result.addContent(SPropertyOperations.getString(SNodeOperations.cast(part, MetaAdapterFactory.getConcept(0x772f6dcd8c0d48f7L, 0x869c908e036f7c8eL, 0x11d45f8a8c1L, "jetbrains.mps.sampleXML.structure.Text")), MetaAdapterFactory.getProperty(0x772f6dcd8c0d48f7L, 0x869c908e036f7c8eL, 0x11d45f8a8c1L, 0x11d45f8a8c2L, "text")));
}
if (SNodeOperations.isInstanceOf(part, MetaAdapterFactory.getConcept(0x772f6dcd8c0d48f7L, 0x869c908e036f7c8eL, 0x11d45f8a8b9L, "jetbrains.mps.sampleXML.structure.Element"))) {
result.addContent(ElementCreator.createElement(SNodeOperations.cast(part, MetaAdapterFactory.getConcept(0x772f6dcd8c0d48f7L, 0x869c908e036f7c8eL, 0x11d45f8a8b9L, "jetbrains.mps.sampleXML.structure.Element")), ctx));
}
first = false;
}
return result;
}
}