Package de.FeatureModellingTool.Customize.store

Source Code of de.FeatureModellingTool.Customize.store.CmdlParserPrototype

package de.FeatureModellingTool.Customize.store;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

import component.FComponent;

import de.FeatureModellingTool.Customize.Customization;
import de.FeatureModellingTool.Customize.CustomizationModel;
import de.FeatureModellingTool.Customize.CustomizationModelImplementation;
import de.FeatureModellingTool.Customize.CustomizationVersion;
import de.FeatureModellingTool.Customize.CustomizationModelImplementation.CustomizationVersionImplementation;

public class CmdlParserPrototype implements CmdlParser {

  public String getCustomizationVersionFileName(String id) {
    return "CustomizationVersion-" + id + ".xml";
  }

  public Collection<String> openCustomizationVersionIds(
      InputStream inputstream) throws IOException, JDOMException {
    Collection<String> result = new LinkedList<String>();

    Namespace cmd = Namespace.getNamespace("cmd",
        "http://sei.pku.edu.cn/DomainEngineering/customizationmodel");

    SAXBuilder saxBuilder = new SAXBuilder(false);
    Document doc = saxBuilder.build(inputstream);

    Element root = doc.getRootElement();

    for (Iterator itVersion = root.getChildren(
        "customizationVersion", cmd).iterator(); itVersion
        .hasNext();) {
      Element version = (Element) itVersion.next();
      String id = version.getAttributeValue("id");
      result.add(id);
    }

    return result;
  }

  public void openCustomizationVersion(InputStream inputstream,
      FComponent featureModel) throws IOException, JDOMException {
    CustomizationModelImplementation cmi = (CustomizationModelImplementation)featureModel.getInterface(de.FeatureModellingTool.FeatureModel.Manager.CUSTOMIZATION_MODEL_INTERFACE);
   
    Namespace cmd = Namespace.getNamespace("cmd",
        "http://sei.pku.edu.cn/DomainEngineering/customizationversion");

    SAXBuilder saxBuilder = new SAXBuilder(false);
    Document doc = saxBuilder.build(inputstream);

    Element root = doc.getRootElement();

    CustomizationVersion result = cmi.newCustomizationVersion(root.getAttributeValue("parentid") , root.getAttributeValue("id") , root.getAttributeValue("name") , root.getAttributeValue("bindingtimeid"));
   
    for (Iterator itCustomization = root.getChildren(
        "customization", cmd).iterator(); itCustomization.hasNext();) {
      Element customization = (Element) itCustomization.next();

      String id = customization.getAttributeValue("id");
      String state = customization.getAttributeValue("state");

      result.setCustomization(id, Customization.getInstance(state));
    }
  }

  public void saveCustomizationModel(OutputStream outStream,
      CustomizationModel cCustomizationModel) throws IOException,
      JDOMException {
    Namespace xsi = Namespace.getNamespace("xsi",
        "http://www.w3.org/2001/XMLSchema-instance");
    Namespace cmd = Namespace.getNamespace("cmd",
        "http://sei.pku.edu.cn/DomainEngineering/customizationmodel");

    Document doc = new Document(new Element("root", cmd));
    Element root = doc.getRootElement();
    root
        .setAttribute(
            "schemaLocation",
            "http://sei.pku.edu.cn/DomainEngineering/customizationmodel  customizationmodel.xsd",
            xsi);

    for (Iterator<String> itVersionId = cCustomizationModel
        .getCustomizationVersionIds().iterator(); itVersionId.hasNext();) {
      Element version = new Element("customizationVersion", cmd);
      version.setAttribute("id" , itVersionId.next());
      root.addContent(version);
    }

    XMLOutputter fmt = new XMLOutputter("  ", true, "GB2312");
    fmt.output(doc, outStream);
  }

  public void saveCustomizationVersion(OutputStream outStream,
      CustomizationVersion customizationVersion) throws IOException,
      JDOMException {
    Namespace xsi = Namespace.getNamespace("xsi",
        "http://www.w3.org/2001/XMLSchema-instance");
    Namespace cmd = Namespace.getNamespace("cmd",
        "http://sei.pku.edu.cn/DomainEngineering/customizationversion");

    Document doc = new Document(new Element("CustomizationVersion", cmd));

    Element root = doc.getRootElement();
    root
        .setAttribute(
            "schemaLocation",
            "http://sei.pku.edu.cn/DomainEngineering/CustomizationVersion  CustomizationVersion.xsd",
            xsi);
    root.setAttribute("id", customizationVersion.getId());
    root.setAttribute("name", customizationVersion.getName());
    root.setAttribute("parentid", customizationVersion.getParent() == null ? "" : customizationVersion.getParent().getId());
    root.setAttribute("bindingtimeid", customizationVersion.getBindingTime().getName());

    for (Iterator<String> itKey = customizationVersion.getCustomizationIds()
        .iterator(); itKey.hasNext();) {
      String id = itKey.next();
      String name = customizationVersion.getCustomizationById(id)
          .getName();

      Element customization = new Element("customization", cmd);
      customization.setAttribute("id" , id);
      customization.setAttribute("state" , name);
      root.addContent(customization);
    }

    XMLOutputter fmt = new XMLOutputter("  ", true, "GB2312");
    fmt.output(doc, outStream);

  }

  protected static String _encode(String in) {
    String out = in;
    out = out.replaceAll("\u0020", "#x20");
    out = out.replaceAll("\u0009", "#x09");
    out = out.replaceAll("\n", "#x0a");
    out = out.replaceAll("\r", "#x0d");
    return out;
  }
}
TOP

Related Classes of de.FeatureModellingTool.Customize.store.CmdlParserPrototype

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.