Package com.pcbje.maltegoimporter.model.impl

Source Code of com.pcbje.maltegoimporter.model.impl.MaltegoEdgeModel

package com.pcbje.maltegoimporter.model.impl;

import java.util.Map;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.pcbje.maltegoimporter.model.EdgeModel;
import com.pcbje.maltegoimporter.model.NodeModel;
import com.pcbje.maltegoimporter.model.PropertyModel;

/**
* Model representing a Maltego edge in GraphML.
*
* @author pcbje
*/
public class MaltegoEdgeModel implements EdgeModel {
  private final String id;
  private final String type;
 
  private final NodeModel sourceNode;
  private final NodeModel targetNode;
 
  private static MaltegoEntityDefinition entityDefs;
 
  private final Map<String, PropertyModel> properties;
 
  private static int ID_COUNTER = 0;
 
  public MaltegoEdgeModel(NodeModel sourceNode, NodeModel targetNode, String label) {
    this.id = "e" + Integer.toString(ID_COUNTER++);
   
    this.type = "maltego.link.manual-link";
   
    this.sourceNode = sourceNode;
    this.targetNode = targetNode;
   
    if (entityDefs == null) {
      entityDefs = new MaltegoEntityDefinition();
    }
   
    properties = entityDefs.getProperties(this.type)
   
    properties.get("Label").setValue(label);
    properties.get("Show Label").setValue("0");
    properties.get("Thickness").setValue("2");
    properties.get("Style").setValue("0");
    properties.get("Description").setValue("");
    properties.get("Color").setValue("8421505");
  }

  /**
   * {@inheritDoc}
   */
  public String getId() {
    return id;
  }
 
  /**
   * {@inheritDoc}
   */
  public String getType() {
    return type;
  }
 
  /**
   * {@inheritDoc}
   */
  public NodeModel getSourceNode() {
    return sourceNode;
  }

  /**
   * {@inheritDoc}
   */
  public NodeModel getTargetNode() {
    return targetNode;
  }

  /**
   * {@inheritDoc}
   */
  public void setProperty(String propertyDisplayName, String value) {
    PropertyModel property = properties.get(propertyDisplayName);

    if (property == null) {
      throw new RuntimeException("No properties of node type '" + type
          + "' has the display name '" + propertyDisplayName + "'");
    }

    property.setValue(value);
  }

  /**
   * {@inheritDoc}
   */
  public Map<String, PropertyModel> getProperties() {
    return properties;
  }

  /**
   * {@inheritDoc}
   */
  public Element getGraphML(Document doc) {
        Element edge = doc.createElement("edge");
        edge.setAttribute("id", id);
        edge.setAttribute("source", sourceNode.getNodeId());
        edge.setAttribute("target", targetNode.getNodeId());

        Element data = doc.createElement("data");
        data.setAttribute("key", "d6");
        edge.appendChild(data);
       
        Element data2 = doc.createElement("data");
        data2.setAttribute("key", "d7");
        edge.appendChild(data2);
       
        Element linkRenderer = doc.createElement("mtg:LinkRenderer");
        linkRenderer.setAttribute("xmlns:mtg", "http://maltego.paterva.com/xml/mtgx");
        data2.appendChild(linkRenderer);

        Element maltegoLink = doc.createElement("mtg:MaltegoLink");
        maltegoLink.setAttribute("xmlns:mtg", "http://maltego.paterva.com/xml/mtgx");
        maltegoLink.setAttribute("type", type);
        data.appendChild(maltegoLink);

        Element propertiesElement = doc.createElement("mtg:Properties");
        maltegoLink.appendChild(propertiesElement);
     
        for (PropertyModel property : properties.values()) {
          propertiesElement.appendChild(property.getGraphML(doc));
        }      

        return edge;
    }
}
TOP

Related Classes of com.pcbje.maltegoimporter.model.impl.MaltegoEdgeModel

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.