Browse Source

Merged Julian, Matthias and Jascha
auto Formatted everything

Jan Enders 8 năm trước cách đây
mục cha
commit
5363a23904
25 tập tin đã thay đổi với 1034 bổ sung562 xóa
  1. 6 16
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/debug/Debug.java
  2. 3 2
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/GraphMLExporter.java
  3. 18 4
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/GraphMLImporter.java
  4. 0 17
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/MyFileSourceGraphML.java
  5. 17 14
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/GraphManager.java
  6. 2 2
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/MainApp.java
  7. 8 3
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/metrics/ScopvizGraphMetric.java
  8. 6 0
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/metrics/ScopvizGraphOperator.java
  9. 3 3
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ButtonManager.java
  10. 13 13
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GUIController.java
  11. 2 1
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GraphDisplayManager.java
  12. 10 9
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/MetricboxManager.java
  13. 38 6
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/OptionsManager.java
  14. 28 3
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/PropertiesManager.java
  15. 19 9
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/StylesheetManager.java
  16. 21 22
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ToolboxManager.java
  17. 2 2
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSManager.java
  18. 1 1
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/mapView/MapViewFunctions.java
  19. 0 59
      scopviz/src/main/resources/Example.graphml
  20. 0 51
      scopviz/src/main/resources/Example2.graphml
  21. 0 199
      scopviz/src/main/resources/ExampleSymbol.graphml
  22. 0 62
      scopviz/src/main/resources/operator_example.graphml
  23. 151 0
      scopviz/src/main/resources/operatorgraph1.graphml
  24. 686 0
      scopviz/src/main/resources/underlay1.graphml
  25. 0 64
      scopviz/src/main/resources/underlay_example.graphml

+ 6 - 16
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/debug/Debug.java

@@ -29,33 +29,23 @@ public final class Debug {
 	/**
 	 * Returns the Location of the File for the testing Graph.
 	 * 
-	 * @return a sample graph for the Program
+	 * @return a sample underlay graph for the Program
 	 */
-	public static String getDefaultGraph() {
+	public static String getDefaultUnderlayGraph() {
 		String fileName = null;
-		fileName = "/underlay_example.graphml";
+		fileName = "/underlay1.graphml";
 		return fileName;
 	}
 
 	/**
 	 * Returns the Location of the File for the testing Graph.
 	 * 
-	 * @return a sample graph for the Program
+	 * @return a sample operator graph for the Program
 	 */
-	public static String getDefaultGraph2() {
+	public static String getDefaultOperatorGraph() {
 		String fileName = null;
-		fileName = "/operator_example.graphml";
-		return fileName;
-	}
 
-	/**
-	 * Returns the Location of the File for the testing SymbolGraph.
-	 * 
-	 * @return a sample symbol graph for the Program
-	 */
-	public static String getDefaultSymbolGraph() {
-		String fileName = null;
-		fileName = "/ExampleSymbol.graphml";
+		fileName = "/operatorgraph1.graphml";
 		return fileName;
 	}
 

+ 3 - 2
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/GraphMLExporter.java

@@ -81,14 +81,13 @@ public class GraphMLExporter {
 			e.removeAttribute("ui.j2dsk");
 			for (String s : e.getEachAttributeKey()) {
 				Class<? extends Object> c = e.getAttribute(s).getClass();
-				// TODO: should something be done with the Attributes that do
-				// not fit?
 				if (!c.isPrimitive() && !(c == String.class) && !(c == Character.class) && !(c == Boolean.class)
 						&& !(c == Integer.class) && !(c == Long.class) && !(c == Short.class) && !(c == Byte.class)
 						&& !(c == Float.class) && !(c == Double.class)) {
 					Debug.out("Could not parse an Attribute because it is not Primitive or a String \n\t"
 							+ "(Attribute: " + s + ", Value: " + e.getAttribute(s) + ", from Edge: " + e + ", Type: "
 							+ c + ") ");
+					e.removeAttribute(s);
 				}
 			}
 		}
@@ -97,6 +96,7 @@ public class GraphMLExporter {
 			Node n = nodes.next();
 			n.removeAttribute("ui.j2dsk");
 			n.removeAttribute("ui.class");
+			n.removeAttribute("ui.pie-values");
 			for (String s : n.getEachAttributeKey()) {
 				Class<? extends Object> c = n.getAttribute(s).getClass();
 				if (!c.isPrimitive() && !(c == String.class) && !(c == Character.class) && !(c == Boolean.class)
@@ -105,6 +105,7 @@ public class GraphMLExporter {
 					Debug.out("Could not parse an Attribute because it is not Primitive or a String \n\t"
 							+ "(Attribute: " + s + ", Value: " + n.getAttribute(s) + ", from Node: " + n + ", Type: "
 							+ c + ") ");
+					n.removeAttribute(s);
 				}
 			}
 		}

+ 18 - 4
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/GraphMLImporter.java

@@ -10,6 +10,7 @@ import org.graphstream.graph.implementations.SingleGraph;
 import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
 import de.tu_darmstadt.informatik.tk.scopviz.main.MyGraph;
+import de.tu_darmstadt.informatik.tk.scopviz.ui.OptionsManager;
 import javafx.stage.FileChooser;
 import javafx.stage.Stage;
 
@@ -59,24 +60,37 @@ public class GraphMLImporter {
 	 */
 	private void handleAttributes(MyGraph g) {
 		for (Node n : g.getNodeSet()) {
-			if (!n.hasAttribute("typeofNode")) {
+			if (!n.hasAttribute("typeofNode") || n.getAttribute("typeofNode").equals("")) {
 				n.addAttribute("typeofNode", "standard");
 			}
-			if (!n.hasAttribute("typeofDevice")) {
+			if (!n.hasAttribute("typeofDevice") || n.getAttribute("typeofDevice").equals("")) {
 				n.addAttribute("typeofDevice", "unknown");
 			}
+			if (!n.hasAttribute("lat") || n.getAttribute("long").equals("")) {
+				n.addAttribute("lat", OptionsManager.getDefaultLat());
+			}
+			if (!n.hasAttribute("long") || n.getAttribute("long").equals("")) {
+				n.addAttribute("long", OptionsManager.getDefaultLong());
+			}
+
 			if (!n.hasAttribute("ui.label") && n.hasAttribute("yEd.label")) {
 				n.addAttribute("ui.label", n.getAttribute("yEd.label").toString());
 				n.removeAttribute("yEd.label");
 			}
-			if (n.hasAttribute("yEd.x")) {
+			if (n.hasAttribute("yEd.x") || n.getAttribute("yEd.y").equals("")) {
 				n.addAttribute("x", Double.parseDouble(n.getAttribute("yEd.x").toString()));
 				n.removeAttribute("yEd.x");
 			}
-			if (n.hasAttribute("yEd.y")) {
+			if (n.hasAttribute("yEd.y") || n.getAttribute("yEd.y").equals("")) {
 				n.addAttribute("y", Double.parseDouble(n.getAttribute("yEd.y").toString()));
 				n.removeAttribute("yEd.y");
 			}
+			if (!n.hasAttribute("process-need") || n.getAttribute("process-need").equals("")) {
+				n.addAttribute("process-need", 0);
+			}
+			if (!n.hasAttribute("process-max") || n.getAttribute("process-max").equals("")) {
+				n.addAttribute("process-max", 0);
+			}
 		}
 	}
 

+ 0 - 17
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/MyFileSourceGraphML.java

@@ -489,7 +489,6 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		case DOUBLE:
 			if (data.value == null || data.value.equals(""))
 				return new Double(0);
-			Debug.out(data.value);
 			return Double.parseDouble(data.value);
 		case STRING:
 			return data.value;
@@ -520,7 +519,6 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		case DOUBLE:
 			if (key.def != null)
 				return Double.valueOf(key.def);
-
 			return Double.valueOf(0.0);
 		case STRING:
 			if (key.def != null)
@@ -582,7 +580,6 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		return value.toUpperCase().replaceAll("\\W", "_");
 	}
 
-	// TODO: handle malformed files on state switches
 	/**
 	 * parses a Stream of xml Events to a graphstream graph it has limited
 	 * support for yEd attributes
@@ -1107,7 +1104,6 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		return d;
 	}
 
-	// TODO color parsing
 	/**
 	 * Parses a yEdattribute. returns null if the Attribute is unknown.
 	 * 
@@ -1134,8 +1130,6 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		Data data = null;
 		Key k = null;
 		switch (name) {
-		// TODO weight
-
 		case "Geometry":
 			// the coordinates
 			yPosition = new Data();
@@ -1191,10 +1185,6 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			data.key = k;
 			data.value = buffer.toString();
 
-			break;
-		case "Fill":
-			// TODO colour
-
 			break;
 		default:
 			Debug.out("ignored Yed attribute: " + name);
@@ -1402,13 +1392,6 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			}
 		}
 
-		// TODO: see if this experimental fix breaks anything
-		/*
-		 * for (Key k : keys.values()) { if ((k.domain == KeyDomain.NODE ||
-		 * k.domain == KeyDomain.ALL) && !sentAttributes.contains(k))
-		 * sendNodeAttributeAdded(sourceId, id, k.name, getDefaultValue(k)); }
-		 */
-
 		if (isEvent(e, XMLEvent.START_ELEMENT, "graph")) {
 			Location loc = e.getLocation();
 

+ 17 - 14
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/GraphManager.java

@@ -162,8 +162,9 @@ public class GraphManager {
 			for (String s : deletedNode.getAttributeKeySet()) {
 				attributes.put(s, deletedNode.getAttribute(s));
 			}
-			g.addNode(deletedNode.getId());
-			g.getNode(deletedNode.getId()).addAttributes(attributes);
+			String id = Main.getInstance().getUnusedID();
+			g.addNode(id);
+			g.getNode(id).addAttributes(attributes);
 		}
 
 		for (Edge e : deletedEdges) {
@@ -171,8 +172,9 @@ public class GraphManager {
 			for (String s : e.getAttributeKeySet()) {
 				attributes.put(s, e.getAttribute(s));
 			}
-			g.addEdge(e.getId(), (Node) e.getSourceNode(), (Node) e.getTargetNode());
-			g.getEdge(e.getId()).addAttributes(attributes);
+			String id = Main.getInstance().getUnusedID();
+			g.addEdge(id, (Node) e.getSourceNode(), (Node) e.getTargetNode());
+			g.getEdge(id).addAttributes(attributes);
 		}
 	}
 
@@ -221,9 +223,13 @@ public class GraphManager {
 			if (!hasClass(n, UI_CLASS_PROCESSING_ENABLED)
 					|| !GraphDisplayManager.getCurrentLayer().equals(Layer.MAPPING)) {
 				String nodeType = n.getAttribute("ui.class");
-				n.changeAttribute("ui.style", "fill-mode: image-scaled; fill-image: url('src/main/resources/png/"
-						+ nodeType + "_red.png'); size: 15px;");
-				n.changeAttribute("ui.class", nodeType + "_red");
+				n.changeAttribute("ui.style",
+						(StylesheetManager.getNodeGraphics().equals(StylesheetManager.getAllNodeGraphics()[1]))
+								? ("fill-mode: image-scaled; fill-image: url('src/main/resources/png/" + nodeType
+										+ "_red.png'); size: 15px;")
+								: "fill-color : #F00; size: 15px;");
+				if (StylesheetManager.getNodeGraphics().equals(StylesheetManager.getAllNodeGraphics()[1]))
+					n.changeAttribute("ui.class", nodeType + "_red");
 			}
 			PropertiesManager.setItemsProperties();
 		}
@@ -241,9 +247,6 @@ public class GraphManager {
 			this.selectedEdgeID = edgeID;
 
 			addClass(edgeID, "selected");
-			// set selected edge color to red
-			// g.getEdge(getSelectedEdgeID()).changeAttribute("ui.style",
-			// "fill-color: #FF0000;");
 			PropertiesManager.setItemsProperties();
 		}
 	}
@@ -254,17 +257,17 @@ public class GraphManager {
 	// TODO call this before save
 	protected void deselect() {
 		// Set last selected Edge Color to Black
-		if (getSelectedEdgeID() != null) {
+		if (getSelectedEdgeID() != null && g.getNode(getSelectedNodeID()) != null) {
 			removeClass(getSelectedEdgeID(), "selected");
 		}
 		// Set last selected Node color to black
-		else if (getSelectedNodeID() != null) {
+		else if (getSelectedNodeID() != null && g.getNode(getSelectedNodeID()) != null) {
 			Node n = g.getNode(getSelectedNodeID());
 			if (!hasClass(n, UI_CLASS_PROCESSING_ENABLED)
 					|| !GraphDisplayManager.getCurrentLayer().equals(Layer.MAPPING)) {
 				String nodeType = n.getAttribute("ui.class");
 				n.removeAttribute("ui.style");
-				n.changeAttribute("ui.style", "fill-color: #000000; size: 10px;");
+				n.changeAttribute("ui.style", "fill-color: #000000; size: 15px;");
 				n.changeAttribute("ui.class", nodeType.split("_")[0]);
 			}
 		}
@@ -508,7 +511,7 @@ public class GraphManager {
 		this.stylesheet = stylesheet;
 		g.removeAttribute("ui.stylesheet");
 		String completeStylesheet = stylesheet;
-		completeStylesheet = completeStylesheet.concat(StylesheetManager.getNodeGraphics());
+		completeStylesheet = completeStylesheet.concat(StylesheetManager.getNodeStylesheet());
 		completeStylesheet = completeStylesheet
 				.concat(StylesheetManager.getLayerStyle((Layer) g.getAttribute("layer")));
 		g.addAttribute("ui.stylesheet", completeStylesheet);

+ 2 - 2
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/MainApp.java

@@ -67,9 +67,9 @@ public class MainApp extends Application {
 		initRootLayout();
 		if (Debug.DEBUG_ENABLED) {
 			GraphDisplayManager.setCurrentLayer(Layer.OPERATOR);
-			GraphDisplayManager.addGraph(Debug.getDefaultGraph2(), true);
+			GraphDisplayManager.addGraph(Debug.getDefaultOperatorGraph(), true);
 			GraphDisplayManager.setCurrentLayer(Layer.UNDERLAY);
-			GraphDisplayManager.addGraph(Debug.getDefaultSymbolGraph(), true);
+			GraphDisplayManager.addGraph(Debug.getDefaultUnderlayGraph(), true);
 		}
 	}
 

+ 8 - 3
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/metrics/ScopvizGraphMetric.java

@@ -2,12 +2,17 @@ package de.tu_darmstadt.informatik.tk.scopviz.metrics;
 
 import java.util.LinkedList;
 
-import javax.swing.text.TableView.TableRow;
-
 import de.tu_darmstadt.informatik.tk.scopviz.main.MyGraph;
+import javafx.util.Pair;
 
 public interface ScopvizGraphMetric {
 
+	/**
+	 * Returns true if the Metric requires the Setup() to be called if this is
+	 * false setup() will not be called.
+	 */
+	public boolean isSetupRequired();
+
 	/**
 	 * calculate the metric on the graph.
 	 * 
@@ -15,7 +20,7 @@ public interface ScopvizGraphMetric {
 	 *            a MyGraph
 	 * @return a List of tableRows that will be displayed in the metrics window
 	 */
-	public LinkedList<TableRow> calculate(MyGraph g);
+	public LinkedList<Pair<String, String>> calculate(MyGraph g);
 
 	/**
 	 * returns the name of the Metric which will be displayed above the values.

+ 6 - 0
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/metrics/ScopvizGraphOperator.java

@@ -6,6 +6,12 @@ import de.tu_darmstadt.informatik.tk.scopviz.main.MyGraph;
 
 public interface ScopvizGraphOperator {
 
+	/**
+	 * Returns true if the GraphOperator requires the Setup() to be called if
+	 * this is false setup() will not be called.
+	 */
+	public boolean isSetupRequired();
+
 	/**
 	 * calculates a new Version of the Graph using the given operator.
 	 * 

+ 3 - 3
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ButtonManager.java

@@ -119,7 +119,7 @@ public final class ButtonManager {
 
 		GraphDisplayManager.setCurrentLayer(Layer.UNDERLAY);
 		GraphDisplayManager.switchActiveGraph();
-		
+
 		ToolboxManager.setUnderlayItems();
 		setBorderStyle((Button) arg0.getSource());
 
@@ -134,7 +134,7 @@ public final class ButtonManager {
 
 		GraphDisplayManager.setCurrentLayer(Layer.OPERATOR);
 		GraphDisplayManager.switchActiveGraph();
-		
+
 		ToolboxManager.setOperatorItems();
 		setBorderStyle((Button) arg0.getSource());
 	}
@@ -148,7 +148,7 @@ public final class ButtonManager {
 
 		GraphDisplayManager.setCurrentLayer(Layer.MAPPING);
 		GraphDisplayManager.switchActiveGraph();
-		
+
 		ToolboxManager.setMappingItems();
 		setBorderStyle((Button) arg0.getSource());
 

+ 13 - 13
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GUIController.java

@@ -27,7 +27,6 @@ import javafx.scene.control.Button;
 import javafx.scene.control.CheckBox;
 import javafx.scene.control.ChoiceBox;
 import javafx.scene.control.Label;
-import javafx.scene.control.ListView;
 import javafx.scene.control.MenuItem;
 import javafx.scene.control.TableColumn;
 import javafx.scene.control.TableRow;
@@ -150,14 +149,14 @@ public class GUIController implements Initializable {
 		initializeToolbox();
 		initializeProperties();
 		initializeMetricbox();
-		
+
 		// Remove Header for the toolbox
 		removeHeaderTableView(toolbox);
 
 		// Initialize the Managers for the various for UI elements
 		ToolboxManager.initializeItems();
 		PropertiesManager.initializeItems(properties);
-		
+
 		GraphDisplayManager.init(this);
 
 		// Bind all the handlers to their corresponding UI elements
@@ -165,7 +164,7 @@ public class GUIController implements Initializable {
 		initializeLayerButton();
 		initializeMenuBar();
 		initializeSymbolRepToolbox();
-		
+
 		initializeDisplayPane();
 
 		initializeWorldView();
@@ -329,23 +328,24 @@ public class GUIController implements Initializable {
 		properties.getSelectionModel().clearSelection();
 
 	}
-	
+
 	/**
 	 * Initialize the metric box
 	 */
 	@SuppressWarnings("unchecked")
-	private void initializeMetricbox(){
+	private void initializeMetricbox() {
 		MetricboxManager.initialize(this);
-		
+
 		metricBoxMetricColumn.setResizable(true);
 		metricBoxValueColumn.setResizable(true);
-		
-		metricBoxMetricColumn.setCellValueFactory(new PropertyValueFactory<Pair<String,String>, String>("key"));
-		metricBoxValueColumn.setCellValueFactory(new PropertyValueFactory<Pair<String,String>, String>("value"));
-		
-		metricbox.getColumns().setAll(metricBoxMetricColumn,metricBoxValueColumn);
-		
+
+		metricBoxMetricColumn.setCellValueFactory(new PropertyValueFactory<Pair<String, String>, String>("key"));
+		metricBoxValueColumn.setCellValueFactory(new PropertyValueFactory<Pair<String, String>, String>("value"));
+
+		metricbox.getColumns().setAll(metricBoxMetricColumn, metricBoxValueColumn);
+
 	}
+
 	/**
 	 * Removes the TableView Header for a given TableView
 	 * 

+ 2 - 1
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GraphDisplayManager.java

@@ -166,6 +166,7 @@ public final class GraphDisplayManager {
 		// create and format the GraphManager
 		GraphManager v = new GraphManager(g);
 		g.addAttribute("layer", currentLayer);
+		g.addAttribute("ui.antialias");
 
 		int ret = 0;
 		// replacing the current graph or merging
@@ -352,7 +353,7 @@ public final class GraphDisplayManager {
 	 * reads a Mapping Graph and sets the underlay, operator and mapping layers
 	 * accordingly
 	 */
-	public static void readMapping2() {
+	public static void readMapping() {
 		GraphMLImporter reader = new GraphMLImporter();
 		MyGraph g = reader.readGraph(getGraphStringID(count), Main.getInstance().getPrimaryStage());
 		Layer tempLayer = currentLayer;

+ 10 - 9
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/MetricboxManager.java

@@ -5,33 +5,34 @@ import javafx.collections.ObservableList;
 import javafx.util.Pair;
 
 /**
- * Manager for the metric box 
+ * Manager for the metric box
  * 
  * @author Julian Ohl
  * @version 1.0.0.0
  */
 public class MetricboxManager {
-	//Test Pair of type <String,String>
-	static Pair<String,String> testPair = new Pair<String,String>("Hi","test");
+	// Test Pair of type <String,String>
+	static Pair<String, String> testPair = new Pair<String, String>("Hi", "test");
 	static GUIController controller;
-	
+
 	/**
 	 * Initialize metricbox by setting controller and showing all metrics
 	 * 
-	 * @param guiController 
+	 * @param guiController
 	 */
 	public static void initialize(GUIController guiController) {
 		controller = guiController;
 		showMetric();
 	}
-	
+
 	/**
-	 * displays all metrics in the metric box by setting the items for the metric table view (metricbox)
+	 * displays all metrics in the metric box by setting the items for the
+	 * metric table view (metricbox)
 	 */
-	public static void showMetric(){
+	public static void showMetric() {
 		ObservableList<Pair<String, String>> newData = FXCollections.observableArrayList();
 		newData.add(testPair);
-		
+
 		controller.metricbox.setItems(newData);
 	}
 }

+ 38 - 6
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/OptionsManager.java

@@ -26,7 +26,12 @@ public final class OptionsManager {
 	private static int defaultWeight = 0;
 	/** Flag whether to show the weight labels on Edges. */
 	private static boolean showWeight = true;
-	// Layer stylesheets
+	/** The default latitude of nodes (defaults to Piloty Building) */
+	private static double defaultLat = 49.877559;
+	/** The default longitude of nodes (defaults to Piloty Building) */
+	private static double defaultLong = 8.654546;
+	/** If the default coordinates have been changed */
+	private static boolean coordinatesChanged = false;
 
 	/**
 	 * Private Constructor to prevent Instantiation.
@@ -50,10 +55,8 @@ public final class OptionsManager {
 		grid.setHgap(10);
 		grid.setVgap(10);
 		grid.setPadding(new Insets(20, 150, 10, 10));
-
 		// create dialog elements
-		TextField defaultWeightField = new TextField();
-		defaultWeightField.setPromptText(Integer.toString(defaultWeight));
+		TextField defaultWeightField = new TextField(Integer.toString(defaultWeight));
 
 		RadioButton showWeightButton = new RadioButton();
 		showWeightButton.setSelected(showWeight);
@@ -62,15 +65,24 @@ public final class OptionsManager {
 		nodeGraphicsSelector.setItems(FXCollections.observableArrayList(StylesheetManager.getAllNodeGraphics()[0],
 				StylesheetManager.getAllNodeGraphics()[1]));
 		nodeGraphicsSelector.getSelectionModel().select(StylesheetManager.getNodeGraphics());
-		;
+
+		TextField defaultLatitudeField = new TextField(Double.toString(defaultLat));
+		TextField defaultLongitudeField = new TextField(Double.toString(defaultLong));
 
 		// position elements on grid
 		grid.add(new Label("Default weight of edges:"), 0, 0);
 		grid.add(defaultWeightField, 1, 0);
-		grid.add(new Label("Show weight of edges in the eraph viewer"), 0, 1);
+		grid.add(new Label("Show weight of edges in the graph viewer"), 0, 1);
 		grid.add(showWeightButton, 1, 1);
 		grid.add(new Label("Node display:"), 0, 2);
 		grid.add(nodeGraphicsSelector, 1, 2);
+		grid.add(new Label("Default Coordinates of Nodes without Coordinates" + (coordinatesChanged ? ":" : ".")), 0,
+				3);
+		grid.add(new Label(coordinatesChanged ? "" : "At the Moment set to Piloty building TU Darmstadt:"), 1, 3);
+		grid.add(new Label("Latitude:"), 0, 4);
+		grid.add(defaultLatitudeField, 1, 4);
+		grid.add(new Label("Longitude:"), 0, 5);
+		grid.add(defaultLongitudeField, 1, 5);
 
 		// set dialog
 		addPropDialog.getDialogPane().setContent(grid);
@@ -82,6 +94,12 @@ public final class OptionsManager {
 			if (dialogButton == addButtonType) {
 				try {
 					defaultWeight = Integer.parseInt(defaultWeightField.getText());
+					if (defaultLat != Double.parseDouble(defaultLatitudeField.getText())
+							|| defaultLong != Double.parseDouble(defaultLongitudeField.getText())) {
+						coordinatesChanged = true;
+						defaultLat = Double.parseDouble(defaultLatitudeField.getText());
+						defaultLong = Double.parseDouble(defaultLongitudeField.getText());
+					}
 				} catch (NumberFormatException e) {
 				}
 				showWeight = showWeightButton.isSelected();
@@ -95,6 +113,20 @@ public final class OptionsManager {
 
 	}
 
+	/**
+	 * @return the defaultLat
+	 */
+	public static double getDefaultLat() {
+		return defaultLat;
+	}
+
+	/**
+	 * @return the defaultLong
+	 */
+	public static double getDefaultLong() {
+		return defaultLong;
+	}
+
 	/**
 	 * Returns the default weight for new Edges.
 	 * 

+ 28 - 3
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/PropertiesManager.java

@@ -10,6 +10,7 @@ import org.graphstream.graph.Node;
 
 import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
 import de.tu_darmstadt.informatik.tk.scopviz.main.GraphManager;
+import de.tu_darmstadt.informatik.tk.scopviz.main.Layer;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
 import javafx.application.Platform;
 import javafx.beans.binding.Bindings;
@@ -216,7 +217,11 @@ public final class PropertiesManager {
 		}
 
 		ObservableList<KeyValuePair> newData = FXCollections.observableArrayList();
-		for (String key : selected.getAttributeKeySet()) {
+		// fix for concurrentModification exception
+		String[] temp = new String[0];
+		temp = selected.getAttributeKeySet().toArray(temp);
+		for (int i = 0; i < temp.length; i++) {
+			String key = temp[i];
 			switch (key) {
 			// filter out or change attributes added by graphstream that are of
 			// no use to the user
@@ -226,8 +231,6 @@ public final class PropertiesManager {
 					// replace UI Label with ID"
 					key = "ID";
 					newData.add(0, new KeyValuePair(key, String.valueOf(actualAttribute), actualAttribute.getClass()));
-				} else if (selected instanceof Edge) {
-
 				}
 				break;
 			case "layout.frozen":
@@ -240,6 +243,28 @@ public final class PropertiesManager {
 				break;
 			case "ui.map.selected":
 				break;
+			case "weight":
+				if (selected instanceof Edge
+						&& Layer.UNDERLAY == Main.getInstance().getGraphManager().getGraph().getAttribute("layer")) {
+					newData.add(new KeyValuePair(key, selected.getAttribute(key).toString(), double.class));
+					break;
+				}
+				break;
+			case "process-need":
+				if (selected instanceof Node
+						&& Layer.OPERATOR == Main.getInstance().getGraphManager().getGraph().getAttribute("layer")) {
+					newData.add(new KeyValuePair(key, selected.getAttribute(key).toString(), double.class));
+					break;
+				}
+				break;
+			case "process-max":
+			case "typeOfDevice":
+				if (selected instanceof Node
+						&& Layer.UNDERLAY == Main.getInstance().getGraphManager().getGraph().getAttribute("layer")) {
+					newData.add(new KeyValuePair(key, selected.getAttribute(key).toString(), double.class));
+					break;
+				}
+
 			case "xyz":
 				double[] pos = Toolkit.nodePosition((Node) selected);
 				newData.add(new KeyValuePair("x", String.valueOf(pos[0]), double.class));

+ 19 - 9
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/StylesheetManager.java

@@ -20,13 +20,13 @@ public class StylesheetManager {
 	 * The Stylesheet that is given to every graph that is added to display
 	 * everything correctly.
 	 */
-	public static final String DEFAULT_STYLESHEET = "node{text-alignment:at-right;} \n"
+	public static final String DEFAULT_STYLESHEET = "node{text-alignment:at-right; size:15px;} \n"
 			+ "edge{text-offset: 4px,-4px;} edge.selected{fill-color: #FF0000;}";
 	/**
 	 * Part of the stylesheet that styles the different Nodes with shapes.
 	 */
-	public static final String STYLE_NODES_SHAPES = "node.standard{shape: circle;}" + "node.source{shape: rounded-box;}"
-			+ "node.procEn{shape: diamond;}" + "node.sink{shape: cross;}";
+	public static final String STYLE_NODES_SHAPES = "node.standard{shape: diamond;}" + "node.source{shape: triangle;}"
+			+ "node.procEn{shape: circle;}" + "node.sink{shape: box;}" + "node.operator{shape: circle;}";
 	/**
 	 * Part of the stylesheet that styles the different Nodes with sprites.
 	 */
@@ -65,9 +65,9 @@ public class StylesheetManager {
 		if (!newGraphics.equalsIgnoreCase(StylesheetManager.nodeGraphics)) {
 			StylesheetManager.nodeGraphics = newGraphics;
 			if (newGraphics.equals(StylesheetManager.allNodeGraphics[0])) {
-				StylesheetManager.setNodeGraphics(StylesheetManager.STYLE_NODES_SHAPES);
+				StylesheetManager.setNodeStylesheet(StylesheetManager.STYLE_NODES_SHAPES);
 			} else if (newGraphics.equals(StylesheetManager.allNodeGraphics[1])) {
-				StylesheetManager.setNodeGraphics(StylesheetManager.STYLE_NODES_SPRITES);
+				StylesheetManager.setNodeStylesheet(StylesheetManager.STYLE_NODES_SPRITES);
 			} else {
 				throw new RuntimeException("These graphics do not exist");
 			}
@@ -89,18 +89,28 @@ public class StylesheetManager {
 	 * 
 	 * @return the currently active StyleSheet as a String
 	 */
-	public static String getNodeGraphics() {
+	public static String getNodeStylesheet() {
 		return StylesheetManager.nodeStylesheet;
 	}
 
 	/**
 	 * Sets the current Stylesheet.
 	 * 
-	 * @param nodeGraphics
+	 * @param stylesheet
 	 *            the Stylesheet to use
 	 */
-	public static void setNodeGraphics(String nodeGraphics) {
-		StylesheetManager.nodeStylesheet = nodeGraphics;
+	public static void setNodeStylesheet(String stylesheet) {
+		StylesheetManager.nodeStylesheet = stylesheet;
+	}
+
+	/**
+	 * the identifier of the currently used Stylesheet
+	 * 
+	 * @return nodeGraphics the identifier of the currently used stylesheet as a
+	 *         String
+	 */
+	public static String getNodeGraphics() {
+		return nodeGraphics;
 	}
 
 	/**

+ 21 - 22
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ToolboxManager.java

@@ -13,7 +13,6 @@ import javafx.scene.control.CheckBox;
 import javafx.scene.control.TableCell;
 import javafx.scene.control.TableColumn;
 import javafx.scene.control.TableRow;
-import javafx.scene.control.TableView;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 import javafx.scene.input.MouseEvent;
@@ -54,47 +53,47 @@ public final class ToolboxManager {
 	 * 
 	 */
 	public static void initializeItems() {
-		
+
 		setUnderlayItems();
-		
+
 	}
 
 	/**
 	 * 
 	 */
-	public static void setUnderlayItems(){
-		
+	public static void setUnderlayItems() {
+
 		@SuppressWarnings("unchecked")
 		ObservableList<Pair<Object, String>> data = FXCollections.observableArrayList(
 				pair(new Image(MainApp.class.getResource("/png/standard.png").toString()), "Standard"),
 				pair(new Image(MainApp.class.getResource("/png/source.png").toString()), "Source"),
 				pair(new Image(MainApp.class.getResource("/png/undirEdge.png").toString()), "Undirected"));
-		
+
 		controller.toolbox.getItems().setAll(data);
 	}
-	
-	public static void setOperatorItems(){
-		
+
+	public static void setOperatorItems() {
+
 		@SuppressWarnings("unchecked")
 		ObservableList<Pair<Object, String>> data = FXCollections.observableArrayList(
 				pair(new Image(MainApp.class.getResource("/png/sink.png").toString()), "Sink"),
 				pair(new Image(MainApp.class.getResource("/png/procEn.png").toString()), "EnProc"),
 				pair(new Image(MainApp.class.getResource("/png/dirEdge.png").toString()), "Directed"));
-		
+
 		controller.toolbox.getItems().setAll(data);
-		
+
 	}
-	
-	public static void setMappingItems(){
-			
-			@SuppressWarnings("unchecked")
-			ObservableList<Pair<Object, String>> data = FXCollections.observableArrayList(
-					pair(new Image(MainApp.class.getResource("/png/dirEdge.png").toString()), "Directed"));
-			
-			controller.toolbox.getItems().setAll(data);
-			
-		}
-	
+
+	public static void setMappingItems() {
+
+		@SuppressWarnings("unchecked")
+		ObservableList<Pair<Object, String>> data = FXCollections.observableArrayList(
+				pair(new Image(MainApp.class.getResource("/png/dirEdge.png").toString()), "Directed"));
+
+		controller.toolbox.getItems().setAll(data);
+
+	}
+
 	/**
 	 * Handler for TableRows
 	 */

+ 2 - 2
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSManager.java

@@ -42,8 +42,8 @@ public class CSSManager {
 			conditions.add(new CSSCondition(type, classes));
 			i++;
 		}
-		
-		//TODO , split einfügen
+
+		// TODO , split einfügen
 
 		String css = null;
 

+ 1 - 1
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/mapView/MapViewFunctions.java

@@ -110,7 +110,7 @@ public final class MapViewFunctions {
 				nodePositions.add(geoPos);
 
 				// Create waypoints with device type dependent pictures
-				String deviceType = (String) node.getAttribute("device.type");
+				String deviceType = (String) node.getAttribute("typeofDevice");
 				URL resource = getDeviceType(deviceType);
 
 				// create a new waypoint with the node information

+ 0 - 59
scopviz/src/main/resources/Example.graphml

@@ -1,59 +0,0 @@
-
-<?xml version="1.0" encoding="UTF-8"?>
-<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
-	   http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
-   	<key id="attr0000" for="node" attr.name="ui.label" attr.type="string"/>
-	<key id="attr0001" for="node" attr.name="Eigenschaft" attr.type="string"/>
-	<key id="attr0002" for="node" attr.name="y" attr.type="double"/>
-	<key id="attr0003" for="node" attr.name="x" attr.type="double"/>
-	<key id="attr0004" for="node" attr.name="ui.class"  attr.type="string" />
-	<key id="attr0005" for="node" attr.name="process-max"  attr.type="double" />
-	<graph id="Example" edgedefault="undirected">
-		<node id="A">
-			<data key="attr0000">A</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">100</data>
-			<data key="attr0004">standard</data>
-		</node>
-		<node id="B">
-			<data key="attr0000">B</data>
-			<data key="attr0002">200</data>
-			<data key="attr0003">100</data>
-			<data key="attr0004">procEn</data>
-			<data key="attr0005">40</data>
-		</node>
-		<node id="C">
-			<data key="attr0000">C</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">procEn</data>
-			<data key="attr0005">30</data>
-		</node>
-		<node id="D">
-			<data key="attr0000">D</data>
-			<data key="attr0002">200</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">procEn</data>
-			<data key="attr0005">100</data>
-		</node>
-		<node id="E">
-			<data key="attr0000">E</data>
-			<data key="attr0002">185</data>
-			<data key="attr0003">135</data>
-			<data key="attr0004">standard</data>
-		</node>
-		<edge id="AB" source="A" target="B" directed="false">
-			<data key="attr0001">test</data>
-		</edge>
-		<edge id="BC" source="B" target="C" directed="false">
-			<data key="attr0001">test</data>
-		</edge>
-		<edge id="CD" source="C" target="D" directed="false">
-		</edge>
-		<edge id="DB" source="D" target="B" directed="false">
-		</edge>
-	</graph>
-</graphml>

+ 0 - 51
scopviz/src/main/resources/Example2.graphml

@@ -1,51 +0,0 @@
-
-<?xml version="1.0" encoding="UTF-8"?>
-<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
-	   http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
-   	<key id="attr0000" for="node" attr.name="ui.label" attr.type="string"/>
-	<key id="attr0001" for="node" attr.name="Eigenschaft" attr.type="string"/>
-	<key id="attr0002" for="node" attr.name="y" attr.type="double"/>
-	<key id="attr0003" for="node" attr.name="x" attr.type="double"/>
-	<key id="attr0004" for="node" attr.name="ui.class"  attr.type="string" />
-	<key id="attr0005" for="node" attr.name="process-need"  attr.type="double" />
-	<graph id="Example" edgedefault="undirected">
-		<node id="A">
-			<data key="attr0000">A</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">100</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">20</data>
-		</node>
-		<node id="B">
-			<data key="attr0000">B</data>
-			<data key="attr0002">200</data>
-			<data key="attr0003">100</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">25</data>
-		</node>
-		<node id="C">
-			<data key="attr0000">C</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">23</data>
-		</node>
-		<node id="D">
-			<data key="attr0000">D</data>
-			<data key="attr0002">200</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">22.34234</data>
-		</node>
-		<node id="E">
-			<data key="attr0000">E</data>
-			<data key="attr0002">185</data>
-			<data key="attr0003">135</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">50</data>
-		</node>
-	</graph>
-</graphml>

+ 0 - 199
scopviz/src/main/resources/ExampleSymbol.graphml

@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
-	   http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
-   	<key id="attr0000" for="node" attr.name="ui.label" attr.type="string"/>
-	<key id="attr0001" for="node" attr.name="Eigenschaft" attr.type="string"/>
-	<key id="attr0002" for="node" attr.name="y" attr.type="double"/>
-	<key id="attr0003" for="node" attr.name="x" attr.type="double"/>
-	<key id="attr0004" for="node" attr.name="ui.class"  attr.type="string" />
-	<key id="attr0005" for="node" attr.name="lat"  attr.type="double" />
-	<key id="attr0006" for="node" attr.name="long"  attr.type="double" />
-	<key id="attr0007" for="node" attr.name="device.type" attr.type="string"/>
-	
-	<key id="attr0008" for="edge" attr.name="weight" attr.type="int"/>
-	
-	<graph id="Example" edgedefault="undirected">
-		<node id="A">
-			<data key="attr0000">A</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">100</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.8705556</data>
-			<data key="attr0006">8.6494444</data>
-			<data key="attr0007">router</data>
-		</node>
-		<node id="B">
-			<data key="attr0000">B</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">200</data>
-			<data key="attr0003">100</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">50</data>
-			<data key="attr0006">9</data>
-			<data key="attr0007">desktop</data>
-		</node>
-		<node id="C">
-			<data key="attr0000">C</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">50.1</data>
-			<data key="attr0006">8.5</data>
-			<data key="attr0007">3G_lte_basestation</data>
-		</node>
-		<node id="D">
-			<data key="attr0000">D</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.89</data>
-			<data key="attr0006">8.1</data>
-			<data key="attr0007">car</data>
-		</node>
-		<node id="E">
-			<data key="attr0000">E</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.723</data>
-			<data key="attr0006">8.6</data>
-			<data key="attr0007">cloud_computing_server</data>
-		</node>
-		<node id="F">
-			<data key="attr0000">F</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.87478</data>
-			<data key="attr0006">8.3</data>
-			<data key="attr0007">data_storage</data>
-		</node>
-		<node id="G">
-			<data key="attr0000">G</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.689</data>
-			<data key="attr0006">8.09</data>
-			<data key="attr0007">laptop</data>
-		</node>
-		<node id="H">
-			<data key="attr0000">H</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.792</data>
-			<data key="attr0006">8.9</data>
-			<data key="attr0007">network_middlebox</data>
-		</node>
-		<node id="I">
-			<data key="attr0000">I</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.7852</data>
-			<data key="attr0006">8.05</data>
-			<data key="attr0007">raspberry_pi</data>
-		</node>
-		<node id="J">
-			<data key="attr0000">J</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.8</data>
-			<data key="attr0006">8.3843</data>
-			<data key="attr0007">sensor</data>
-		</node>
-		<node id="K">
-			<data key="attr0000">K</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.6584</data>
-			<data key="attr0006">8.3172</data>
-			<data key="attr0007">smart_home</data>
-		</node>
-		<node id="L">
-			<data key="attr0000">L</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.6984</data>
-			<data key="attr0006">8.2872</data>
-			<data key="attr0007">smartband</data>
-		</node>
-		<node id="M">
-			<data key="attr0000">M</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.4887</data>
-			<data key="attr0006">8.39</data>
-			<data key="attr0007">smartphone</data>
-		</node>
-		<node id="N">
-			<data key="attr0000">N</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.578</data>
-			<data key="attr0006">8.62</data>
-			<data key="attr0007">smartwatch</data>
-		</node>
-		<node id="O">
-			<data key="attr0000">O</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.3953</data>
-			<data key="attr0006">8.606</data>
-			<data key="attr0007">switch</data>
-		</node>
-		<node id="P">
-			<data key="attr0000">P</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.652321</data>
-			<data key="attr0006">8.49995</data>
-			<data key="attr0007">tablet</data>
-		</node>
-		<node id="Q">
-			<data key="attr0000">Q</data>
-			<data key="attr0001">test</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0005">49.702</data>
-			<data key="attr0006">8.92</data>
-			<data key="attr0007">unknown</data>
-		</node>
-
-		
-		<edge id="AB" source="A" target="B" directed="false">
-			<data key="attr0001">test</data>
-			<data key="attr0008">100</data>
-		</edge>
-		<edge id="BC" source="B" target="C" directed="false">
-			<data key="attr0001">test</data>
-			<data key="attr0008">5</data>
-		</edge>
-	</graph>
-</graphml>

+ 0 - 62
scopviz/src/main/resources/operator_example.graphml

@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
-	   http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
-   	<key id="attr0000" for="node" attr.name="ui.label" attr.type="string"/>
-	<key id="attr0001" for="edge" attr.name="weight" attr.type="string"/>
-	<key id="attr0002" for="node" attr.name="y" attr.type="double"/>
-	<key id="attr0003" for="node" attr.name="x" attr.type="double"/>
-	<key id="attr0004" for="node" attr.name="typeofNode"  attr.type="string"/>
-	<key id="attr0005" for="node" attr.name="process-need"  attr.type="double"/>	
-
-	<graph id="OperatorExample" edgedefault="undirected">
-		<node id="A">
-			<data key="attr0000">A</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">100</data>
-			<data key="attr0004">source</data>
-			<data key="attr0005">20</data>
-		</node>
-		<node id="B">
-			<data key="attr0000">B</data>
-			<data key="attr0002">200</data>
-			<data key="attr0003">100</data>
-			<data key="attr0004">operator</data>
-			<data key="attr0005">25</data>
-		</node>
-		<node id="C">
-			<data key="attr0000">C</data>
-			<data key="attr0002">185</data>
-			<data key="attr0003">135</data>
-			<data key="attr0004">sink</data>
-			<data key="attr0005">50</data>
-		</node>
-		<node id="D">
-			<data key="attr0000">D</data>
-			<data key="attr0002">200</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">sink</data>
-			<data key="attr0005">22.34234</data>
-		</node>
-		<node id="E">
-			<data key="attr0000">E</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">operator</data>
-			<data key="attr0005">23</data>
-		</node>
-		<edge id="AB" source="A" target="B" directed="true">
-			<data key="attr0001">33</data>
-		</edge>
-		<edge id="BC" source="B" target="C" directed="true">
-			<data key="attr0001">50</data>
-		</edge>
-		<edge id="CD" source="C" target="D" directed="true">
-			<data key="attr0001">18</data>
-		</edge>
-		<edge id="CE" source="C" target="E" directed="true">
-			<data key="attr0001">6</data>
-		</edge>
-	</graph>
-</graphml>

+ 151 - 0
scopviz/src/main/resources/operatorgraph1.graphml

@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+  <!--Created by yEd 3.16.2.1-->
+  <key attr.name="priority" attr.type="double" for="graph" id="d0"/>
+  <key attr.name="description" attr.type="string" for="graph" id="d1"/>
+  <key for="port" id="d2" yfiles.type="portgraphics"/>
+  <key for="port" id="d3" yfiles.type="portgeometry"/>
+  <key for="port" id="d4" yfiles.type="portuserdata"/>
+  <key attr.name="x" attr.type="double" for="node" id="d5"/>
+  <key attr.name="y" attr.type="double" for="node" id="d6"/>
+  <key attr.name="ui.label" attr.type="string" for="node" id="d7"/>
+  <key attr.name="ui.class" attr.type="string" for="node" id="d8"/>
+  <key attr.name="process-need" attr.type="double" for="node" id="d9"/>
+  <key attr.name="typeofNode" attr.type="string" for="node" id="d10"/>
+  <key attr.name="identifier" attr.type="string" for="node" id="d11"/>
+  <key attr.name="url" attr.type="string" for="node" id="d12"/>
+  <key attr.name="description" attr.type="string" for="node" id="d13"/>
+  <key for="node" id="d14" yfiles.type="nodegraphics"/>
+  <key for="graphml" id="d15" yfiles.type="resources"/>
+  <key attr.name="url" attr.type="string" for="edge" id="d16"/>
+  <key attr.name="description" attr.type="string" for="edge" id="d17"/>
+  <key for="edge" id="d18" yfiles.type="edgegraphics"/>
+  <graph edgedefault="directed" id="TESTGRAPH1">
+    <data key="d0">0.8</data>
+    <data key="d1"><![CDATA[Testgraph 1]]></data>
+    <node id="n0">
+      <data key="d7"/>
+      <data key="d8"><![CDATA[source]]></data>
+      <data key="d10"><![CDATA[source]]></data>
+      <data key="d11"><![CDATA[src1]]></data>
+      <data key="d13"><![CDATA[a sensor]]></data>
+      <data key="d14">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="317.0" y="347.0"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="29.3359375" x="0.33203125" y="5.6494140625">SRC<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="octagon"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n1">
+      <data key="d7"/>
+      <data key="d8"><![CDATA[operator]]></data>
+      <data key="d9">20.0</data>
+      <data key="d10"><![CDATA[operator]]></data>
+      <data key="d11"><![CDATA[o1]]></data>
+      <data key="d13"><![CDATA[a filter]]></data>
+      <data key="d14">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="469.0" y="347.0"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="17.34765625" x="6.326171875" y="5.6494140625">o1<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n2">
+      <data key="d7"/>
+      <data key="d8"/>
+      <data key="d9">25.0</data>
+      <data key="d10"><![CDATA[operator]]></data>
+      <data key="d11"><![CDATA[o2]]></data>
+      <data key="d13"><![CDATA[some processing logic]]></data>
+      <data key="d14">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="641.0" y="347.0"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="17.34765625" x="6.326171875" y="5.6494140625">o2<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n3">
+      <data key="d7"/>
+      <data key="d8"><![CDATA[sink]]></data>
+      <data key="d10"><![CDATA[sink]]></data>
+      <data key="d11"><![CDATA[snk2]]></data>
+      <data key="d12"/>
+      <data key="d13"><![CDATA[an actuator]]></data>
+      <data key="d14">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="821.0" y="347.0"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="28.673828125" x="0.6630859375" y="5.6494140625">SNK<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e0" source="n0" target="n1">
+      <data key="d18">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e1" source="n1" target="n2">
+      <data key="d18">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e2" source="n2" target="n3">
+      <data key="d18">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+  </graph>
+  <data key="d15">
+    <y:Resources/>
+  </data>
+</graphml>

+ 686 - 0
scopviz/src/main/resources/underlay1.graphml

@@ -0,0 +1,686 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+  <!--Created by yEd 3.16.2.1-->
+  <key attr.name="Description" attr.type="string" for="graph" id="d0"/>
+  <key for="port" id="d1" yfiles.type="portgraphics"/>
+  <key for="port" id="d2" yfiles.type="portgeometry"/>
+  <key for="port" id="d3" yfiles.type="portuserdata"/>
+  <key attr.name="process-max" attr.type="double" for="node" id="d4"/>
+  <key attr.name="typeofNode" attr.type="string" for="node" id="d5"/>
+  <key attr.name="typeofDevice" attr.type="string" for="node" id="d6"/>
+  <key attr.name="lat" attr.type="double" for="node" id="d7"/>
+  <key attr.name="long" attr.type="double" for="node" id="d8"/>
+  <key attr.name="identifier" attr.type="string" for="node" id="d9"/>
+  <key attr.name="url" attr.type="string" for="node" id="d10"/>
+  <key attr.name="description" attr.type="string" for="node" id="d11"/>
+  <key for="node" id="d12" yfiles.type="nodegraphics"/>
+  <key for="graphml" id="d13" yfiles.type="resources"/>
+  <key attr.name="weight" attr.type="double" for="edge" id="d14"/>
+  <key attr.name="url" attr.type="string" for="edge" id="d15"/>
+  <key attr.name="description" attr.type="string" for="edge" id="d16"/>
+  <key for="edge" id="d17" yfiles.type="edgegraphics"/>
+  <graph edgedefault="undirected" id="G">
+    <data key="d0"><![CDATA[Testunderlay 1]]></data>
+    <node id="n0">
+      <data key="d4"><![CDATA[5]]></data>
+      <data key="d5"><![CDATA[procEn]]></data>
+      <data key="d6"><![CDATA[switch]]></data>
+      <data key="d7">49.8739</data>
+      <data key="d8">8.6591</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="-203.83852719837705" y="354.44412589211447"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.021484375" x="-6.0107421875" y="5.649414062500057">procEn<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n1">
+      <data key="d4">0</data>
+      <data key="d5"><![CDATA[source]]></data>
+      <data key="d6"><![CDATA[sensor]]></data>
+      <data key="d7">49.8854</data>
+      <data key="d8">8.6627</data>
+      <data key="d9"><![CDATA[src2]]></data>
+      <data key="d10"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="-73.63975453306284" y="-31.503916071923754"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="36.009765625" x="-3.0048828125" y="5.6494140625">SRC2<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="octagon"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n2">
+      <data key="d4"><![CDATA[30]]></data>
+      <data key="d5"><![CDATA[procEn]]></data>
+      <data key="d6"><![CDATA[laptop]]></data>
+      <data key="d7">49.8843</data>
+      <data key="d8">8.6541</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="21.960245466937522" y="54.496083928076246"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.021484375" x="-6.0107421875" y="5.6494140625">procEn<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n3">
+      <data key="d4"><![CDATA[20]]></data>
+      <data key="d5"><![CDATA[procEn]]></data>
+      <data key="d6"><![CDATA[network_middlebox]]></data>
+      <data key="d7">49.8828</data>
+      <data key="d8">8.6601</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="146.94036820040628" y="54.496083928076246"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.021484375" x="-6.0107421875" y="5.6494140625">procEn<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n4">
+      <data key="d4"><![CDATA[50]]></data>
+      <data key="d5"><![CDATA[procEn]]></data>
+      <data key="d6"><![CDATA[data_storage]]></data>
+      <data key="d7">49.8738</data>
+      <data key="d8">8.6549</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="-90.83852719837705" y="236.96867142460997"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.021484375" x="-6.0107421875" y="5.6494140625">procEn<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n5">
+      <data key="d4">0</data>
+      <data key="d5"><![CDATA[standard]]></data>
+      <data key="d6"><![CDATA[router]]></data>
+      <data key="d7">49.8769</data>
+      <data key="d8">8.6603</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="191.9006136673429" y="354.44412589211447"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="13.0" y="13.0">
+            <y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n6">
+      <data key="d4">0</data>
+      <data key="d5"><![CDATA[standard]]></data>
+      <data key="d6"><![CDATA[3G_lte_basestation]]></data>
+      <data key="d7">49.8841</data>
+      <data key="d8">8.6611</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="21.960245466937522" y="-31.503916071923754"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="13.0" y="13.0">
+            <y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n7">
+      <data key="d4">0</data>
+      <data key="d5"><![CDATA[source]]></data>
+      <data key="d6"><![CDATA[sensor]]></data>
+      <data key="d7">49.8779</data>
+      <data key="d8">8.651</data>
+      <data key="d9"><![CDATA[src1]]></data>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="-412.1590181322499" y="236.96867142460997"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="29.3359375" x="0.33203125" y="5.6494140625">SRC<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="octagon"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n8">
+      <data key="d4"><![CDATA[35]]></data>
+      <data key="d5"><![CDATA[procEn]]></data>
+      <data key="d6"><![CDATA[car]]></data>
+      <data key="d7">49.877</data>
+      <data key="d8">8.6525</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="-324.01987726653124" y="236.96867142460997"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.021484375" x="-6.0107421875" y="5.6494140625">procEn<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n9">
+      <data key="d4">0</data>
+      <data key="d5"/>
+      <data key="d6"><![CDATA[raspberry_pi]]></data>
+      <data key="d7">49.8813</data>
+      <data key="d8">8.662</data>
+      <data key="d9"><![CDATA[snk2]]></data>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="492.9006136673429" y="213.1686714246107"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="28.673828125" x="0.6630859375" y="5.6494140625">SNK<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n10">
+      <data key="d4"><![CDATA[28]]></data>
+      <data key="d5"><![CDATA[procEn]]></data>
+      <data key="d6"><![CDATA[desktop]]></data>
+      <data key="d7">49.8752</data>
+      <data key="d8">8.6616</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="62.080736400811475" y="354.44412589211447"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.021484375" x="-6.0107421875" y="5.6494140625">procEn<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n11">
+      <data key="d4"><![CDATA[35]]></data>
+      <data key="d5"><![CDATA[procEn]]></data>
+      <data key="d6"><![CDATA[smartphone]]></data>
+      <data key="d7">49.8765</data>
+      <data key="d8">8.6567</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="-203.83852719837705" y="236.96867142460997"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.021484375" x="-6.0107421875" y="5.6494140625">procEn<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n12">
+      <data key="d4">0</data>
+      <data key="d5"><![CDATA[standard]]></data>
+      <data key="d6"><![CDATA[router]]></data>
+      <data key="d7">49.8809</data>
+      <data key="d8">8.659049</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="391.8012273346858" y="213.1686714246107"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="13.0" y="13.0">
+            <y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n13">
+      <data key="d4">0</data>
+      <data key="d5"><![CDATA[standard]]></data>
+      <data key="d6"><![CDATA[router]]></data>
+      <data key="d7">49.8748</data>
+      <data key="d8">8.6587</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="-82.19877266531415" y="354.44412589211447"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="13.0" y="13.0">
+            <y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n14">
+      <data key="d4"><![CDATA[40]]></data>
+      <data key="d5"><![CDATA[procEn]]></data>
+      <data key="d6"><![CDATA[router]]></data>
+      <data key="d7">49.881</data>
+      <data key="d8">8.6532</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="342.16147280162295" y="54.496083928076246"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.021484375" x="-6.0107421875" y="5.6494140625">procEn<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n15">
+      <data key="d4">0</data>
+      <data key="d5"><![CDATA[standard]]></data>
+      <data key="d6"><![CDATA[router]]></data>
+      <data key="d7">49.8812</data>
+      <data key="d8">8.655</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="146.94036820040628" y="224.3373428492214"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="13.0" y="13.0">
+            <y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <node id="n16">
+      <data key="d4"><![CDATA[90]]></data>
+      <data key="d5"><![CDATA[procEn]]></data>
+      <data key="d6"><![CDATA[cloud_computing_server]]></data>
+      <data key="d7">49.876641</data>
+      <data key="d8">8.6611</data>
+      <data key="d9"/>
+      <data key="d12">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="30.0" x="269.37079776754604" y="224.3373428492214"/>
+          <y:Fill color="#FFCC00" transparent="false"/>
+          <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.021484375" x="-6.0107421875" y="5.6494140625">procEn<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:Shape type="ellipse"/>
+        </y:ShapeNode>
+      </data>
+    </node>
+    <edge id="e0" source="n7" target="n8">
+      <data key="d14">1.0</data>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e1" source="n1" target="n6">
+      <data key="d14">1.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e2" source="n6" target="n2">
+      <data key="d14">1.5</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e3" source="n2" target="n3">
+      <data key="d14">1.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e4" source="n8" target="n11">
+      <data key="d14">3.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e5" source="n11" target="n4">
+      <data key="d14">1.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e6" source="n2" target="n11">
+      <data key="d14">7.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+            <y:Point x="-188.83852719837705" y="69.49608392807625"/>
+          </y:Path>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e7" source="n12" target="n9">
+      <data key="d14">1.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e8" source="n10" target="n5">
+      <data key="d14">2.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e9" source="n11" target="n0">
+      <data key="d14">2.0</data>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e10" source="n0" target="n13">
+      <data key="d14">3.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e11" source="n13" target="n10">
+      <data key="d14">3.5</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e12" source="n3" target="n14">
+      <data key="d14">2.5</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e13" source="n14" target="n12">
+      <data key="d14">4.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+            <y:Point x="406.8012273346858" y="69.49608392807625"/>
+          </y:Path>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e14" source="n15" target="n3">
+      <data key="d14">6.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e15" source="n4" target="n10">
+      <data key="d14">2.5</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="1.5192635991885481" ty="-10.144125892114516">
+            <y:Point x="-21.399999999999977" y="251.96867142460997"/>
+            <y:Point x="-21.399999999999977" y="359.29999999999995"/>
+          </y:Path>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e16" source="n4" target="n15">
+      <data key="d14">5.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="-12.63132857538858" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e17" source="n15" target="n16">
+      <data key="d14">2.5</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e18" source="n16" target="n12">
+      <data key="d14">2.5</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="11.168671424610693"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e19" source="n5" target="n16">
+      <data key="d14">4.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="-0.37079776754598015" ty="10.56265715077862">
+            <y:Point x="206.9006136673429" y="249.9"/>
+          </y:Path>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+    <edge id="e20" source="n10" target="n15">
+      <data key="d14">4.0</data>
+      <data key="d16"/>
+      <data key="d17">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="1.8596317995936715" ty="12.63132857538858">
+            <y:Point x="77.08073640081147" y="251.96867142460997"/>
+          </y:Path>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="none"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+  </graph>
+  <data key="d13">
+    <y:Resources/>
+  </data>
+</graphml>

+ 0 - 64
scopviz/src/main/resources/underlay_example.graphml

@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
-	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	 xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
-	   http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
-   	<key id="attr0000" for="node" attr.name="ui.label" attr.type="string"/>
-	<key id="attr0001" for="edge" attr.name="weight" attr.type="int"/>
-	<key id="attr0002" for="node" attr.name="y" attr.type="double"/>
-	<key id="attr0003" for="node" attr.name="x" attr.type="double"/>
-	<key id="attr0004" for="node" attr.name="typeofNode"  attr.type="string"/>
-	<key id="attr0005" for="node" attr.name ="process-max" attr.type="double"/>
-	<key id="attr0006" for="node" attr.name="typeofDevice"  attr.type="string"/>
-	<graph id="UnderlayExample" edgedefault="undirected">
-		<node id="A">
-			<data key="attr0000">A</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">100</data>
-			<data key="attr0004">standard</data>
-			<data key="attr0006">desktop</data>
-		</node>
-		<node id="B">
-			<data key="attr0000">B</data>
-			<data key="attr0002">200</data>
-			<data key="attr0003">100</data>
-			<data key="attr0004">procEn</data>
-			<data key="attr0005">40</data>
-			<data key="attr0006">router</data>
-		</node>
-		<node id="C">
-			<data key="attr0000">C</data>
-			<data key="attr0002">100</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">procEn</data>
-			<data key="attr0005">30</data>
-			<data key="attr0006">switch</data>
-		</node>
-		<node id="D">
-			<data key="attr0000">D</data>
-			<data key="attr0002">200</data>
-			<data key="attr0003">200</data>
-			<data key="attr0004">procEn</data>
-			<data key="attr0005">100</data>
-			<data key="attr0006">smartphone</data>
-		</node>
-		<node id="E">
-			<data key="attr0000">E</data>
-			<data key="attr0002">185</data>
-			<data key="attr0003">135</data>
-			<data key="attr0006">router</data>
-		</node>
-		<edge id="AB" source="A" target="B" directed="false">
-			<data key="attr0001">33</data>
-		</edge>
-		<edge id="BC" source="B" target="C" directed="false">
-			<data key="attr0001">50</data>
-		</edge>
-		<edge id="CD" source="C" target="D" directed="false">
-			<data key="attr0001">18</data>
-		</edge>
-		<edge id="DB" source="D" target="B" directed="false">
-			<data key="attr0001">6</data>
-		</edge>
-	</graph>
-</graphml>