Beispiel #1
0
  public void exportToXML(File file) {

    try {
      DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
      Document document = documentBuilder.newDocument();
      Element rootElement = document.createElement("HGraph");
      document.appendChild(rootElement);

      Element elementHnodes = document.createElement("HNodes");
      Element elementHedges = document.createElement("HEdges");

      // write nodes
      for (VisualNode v : this.getVertices()) {
        // write HNode
        Element elementHnode = document.createElement("HNode");

        elementHnode.setAttribute("x", new Double(this.getLocation(v).getX()).toString());
        elementHnode.setAttribute("y", new Double(this.getLocation(v).getY()).toString());
        elementHnodes.appendChild(elementHnode);
        // write element key
        Element elementKey = document.createElement("Key");
        elementKey.appendChild(document.createTextNode(this.getKey(v).toString()));
        elementHnode.appendChild(elementKey);
        // write element name
        Element elementName = document.createElement("Name");
        elementName.appendChild(document.createTextNode(v.getName()));
        elementHnode.appendChild(elementName);
        // write element type
        Element elementType = document.createElement("Type");
        elementType.appendChild(document.createTextNode(v.getType().toString()));
        elementHnode.appendChild(elementType);
        /** @author pmanousi write element key NOW IT IS NOT NEEDED (TopologicalTravel). */
        // Element elementID = document.createElement("ID");
        // elementID.appendChild(document.createTextNode(String.valueOf(v.ID)));
        // elementHnode.appendChild(elementID);
        // write element SQL Definition
        if (!v.getSQLDefinition().isEmpty()) {
          Element elementSQLDefinition = document.createElement("SQLDefinition");
          elementSQLDefinition.appendChild(document.createTextNode(v.getSQLDefinition()));
          elementHnode.appendChild(elementSQLDefinition);
        }
      }
      rootElement.appendChild(elementHnodes);

      // write edges
      for (VisualEdge e : this.getEdges()) {
        // write HEdge
        Element elementHedge = document.createElement("HEdge");
        elementHedges.appendChild(elementHedge);
        // write element key
        Element elementKey = document.createElement("Key");
        elementKey.appendChild(document.createTextNode(this.getKey(e).toString()));
        elementHedge.appendChild(elementKey);
        // write element name
        Element elementName = document.createElement("Name");
        elementName.appendChild(document.createTextNode(e.getName()));
        elementHedge.appendChild(elementName);
        // write element type
        Element elementType = document.createElement("Type");
        elementType.appendChild(document.createTextNode(e.getType().ToString()));
        elementHedge.appendChild(elementType);
        // write element fromNode
        Element elementFromNode = document.createElement("FromNode");
        elementFromNode.appendChild(
            document.createTextNode(this.getKey(e.getFromNode()).toString()));
        elementHedge.appendChild(elementFromNode);
        // write element toNode
        Element elementToNode = document.createElement("ToNode");
        elementToNode.appendChild(document.createTextNode(this.getKey(e.getToNode()).toString()));
        elementHedge.appendChild(elementToNode);
        // end element HEdge
      }
      rootElement.appendChild(elementHedges);

      /*				// write policies
      			Element elementHPolicies = document.createElement("HPolicies");
      			// write events
      			Element elementHEvents = document.createElement("HEvents");

      			for (VisualNode v : this.getVertices()) {
      				for (EvolutionPolicy<VisualNode> p: v.getPolicies()) {
      					//start tag HPolicy
      					Element elementHPolicy = document.createElement("HPolicy");
      					elementHPolicies.appendChild(elementHPolicy);
      					//write Node having the policy
      					Element elementHNode = document.createElement("HNode");
      					elementHNode.appendChild(document.createTextNode(this.getKey(v).toString()));
      					elementHPolicy.appendChild(elementHNode);
      					//write event handled by the policy
      					Element elementEvent = document.createElement("HEvent");
      					elementHPolicy.appendChild(elementEvent);

      					Element elementEventNode = document.createElement("HEventNode");
      					elementEventNode.appendChild(document.createTextNode(this.getKey(p.getSourceEvent().getEventNode()).toString()));
      					elementEvent.appendChild(elementEventNode);

      					Element elementEventType = document.createElement("HEventType");
      					elementEventType.appendChild(document.createTextNode(p.getSourceEvent().getEventType().toString()));
      					elementEvent.appendChild(elementEventType);
      					//write policy type
      					Element elementPolicyType = document.createElement("HPolicyType");
      					elementPolicyType.appendChild(document.createTextNode(p.getPolicyType().toString()));
      					elementHPolicy.appendChild(elementPolicyType);
      					// end element HPolicy
      				}
      				for (EvolutionEvent<VisualNode> e : v.getEvents()) {
      					//write element event
      					Element elementHEvent = document.createElement("HEvent");
      					elementHEvents.appendChild(elementHEvent);
      					//write Node having the event
      					Element elementHNode = document.createElement("HNode");
      					elementHNode.appendChild(document.createTextNode(this.getKey(v).toString()));
      					elementHEvent.appendChild(elementHNode);

      					Element elementEventNode = document.createElement("HEventNode");
      					elementEventNode.appendChild(document.createTextNode(this.getKey(e.getEventNode()).toString()));
      					elementHEvent.appendChild(elementEventNode);
      					Element elementEventType = document.createElement("HEventType");
      					elementEventType.appendChild(document.createTextNode(e.getEventType().toString()));
      					elementHEvent.appendChild(elementEventType);
      					// end element HEvent

      				}
      			}
      			rootElement.appendChild(elementHPolicies);
      			rootElement.appendChild(elementHEvents);

      */
      //
      Element elementHKeyGen = document.createElement("HKeyGen");
      elementHKeyGen.appendChild(
          document.createTextNode((new Integer(this.getKeyGenerator()).toString())));
      rootElement.appendChild(elementHKeyGen);

      TransformerFactory transformerFactory = TransformerFactory.newInstance();
      Transformer transformer = transformerFactory.newTransformer();
      DOMSource source = new DOMSource(document);
      StreamResult result = new StreamResult(file);
      transformer.transform(source, result);

    } catch (ParserConfigurationException e) {
      e.printStackTrace();

    } catch (TransformerConfigurationException e) {
      e.printStackTrace();

    } catch (TransformerException e) {
      e.printStackTrace();
    }
  }