From a5a953db433e7602a7f6a2a9a74452c3d9fca6bb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=B6ren=20Henning?= <stu114708@informatik.uni-kiel.de>
Date: Tue, 26 Jan 2016 15:46:00 +0100
Subject: [PATCH] initial structure for graph model

---
 src/main/java/kieker/analysis/graph/Edge.java |  7 ++
 .../java/kieker/analysis/graph/Element.java   | 18 +++++
 .../java/kieker/analysis/graph/Graph.java     | 21 ++++++
 .../java/kieker/analysis/graph/Subgraph.java  |  5 ++
 .../java/kieker/analysis/graph/Vertex.java    | 15 +++++
 .../kieker/analysis/graph/impl/EdgeImp.java   |  9 +++
 .../analysis/graph/impl/ElementImpl.java      | 45 +++++++++++++
 .../kieker/analysis/graph/impl/GraphImpl.java | 66 +++++++++++++++++++
 .../analysis/graph/impl/VertexImpl.java       | 20 ++++++
 9 files changed, 206 insertions(+)
 create mode 100644 src/main/java/kieker/analysis/graph/Edge.java
 create mode 100644 src/main/java/kieker/analysis/graph/Element.java
 create mode 100644 src/main/java/kieker/analysis/graph/Graph.java
 create mode 100644 src/main/java/kieker/analysis/graph/Subgraph.java
 create mode 100644 src/main/java/kieker/analysis/graph/Vertex.java
 create mode 100644 src/main/java/kieker/analysis/graph/impl/EdgeImp.java
 create mode 100644 src/main/java/kieker/analysis/graph/impl/ElementImpl.java
 create mode 100644 src/main/java/kieker/analysis/graph/impl/GraphImpl.java
 create mode 100644 src/main/java/kieker/analysis/graph/impl/VertexImpl.java

diff --git a/src/main/java/kieker/analysis/graph/Edge.java b/src/main/java/kieker/analysis/graph/Edge.java
new file mode 100644
index 00000000..bc29f760
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/Edge.java
@@ -0,0 +1,7 @@
+package kieker.analysis.graph;
+
+public interface Edge extends Element {
+
+	// public Vertex getVertex(Direction direction) throws IllegalArgumentException;
+
+}
diff --git a/src/main/java/kieker/analysis/graph/Element.java b/src/main/java/kieker/analysis/graph/Element.java
new file mode 100644
index 00000000..b90e87b7
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/Element.java
@@ -0,0 +1,18 @@
+package kieker.analysis.graph;
+
+import java.util.Set;
+
+public abstract interface Element {
+
+	public <T> T getProperty(String key);
+
+	public Set<String> getPropertyKeys();
+
+	public void setProperty(String key, Object value);
+
+	public <T> T removeProperty(String key);
+
+	public void remove();
+
+	public Object getId();
+}
diff --git a/src/main/java/kieker/analysis/graph/Graph.java b/src/main/java/kieker/analysis/graph/Graph.java
new file mode 100644
index 00000000..0719646b
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/Graph.java
@@ -0,0 +1,21 @@
+package kieker.analysis.graph;
+
+public interface Graph {
+
+	public Vertex addVertex(Object id);
+
+	public Vertex getVertex(Object id);
+
+	public void removeVertex(Vertex vertex);
+
+	public Iterable<Vertex> getVertices();
+
+	public Edge addEdge(Object id, Vertex outVertex, Vertex inVertex);
+
+	public Edge getEdge(Object id);
+
+	public void removeEdge(Edge edge);
+
+	public Iterable<Edge> getEdges();
+
+}
diff --git a/src/main/java/kieker/analysis/graph/Subgraph.java b/src/main/java/kieker/analysis/graph/Subgraph.java
new file mode 100644
index 00000000..a3beca7c
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/Subgraph.java
@@ -0,0 +1,5 @@
+package kieker.analysis.graph;
+
+public interface Subgraph {
+
+}
diff --git a/src/main/java/kieker/analysis/graph/Vertex.java b/src/main/java/kieker/analysis/graph/Vertex.java
new file mode 100644
index 00000000..2581b37b
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/Vertex.java
@@ -0,0 +1,15 @@
+package kieker.analysis.graph;
+
+public interface Vertex extends Element {
+
+	public Boolean hasSubgraph();
+
+	public Graph getSubgraph();
+
+	// public Iterable<Edge> getEdges(Direction direction, String... labels);
+
+	// public Iterable<Vertex> getVertices(Direction direction, String... labels);
+
+	// public Edge addEdge(String label, Vertex inVertex);
+
+}
diff --git a/src/main/java/kieker/analysis/graph/impl/EdgeImp.java b/src/main/java/kieker/analysis/graph/impl/EdgeImp.java
new file mode 100644
index 00000000..fcf66bd4
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/impl/EdgeImp.java
@@ -0,0 +1,9 @@
+package kieker.analysis.graph.impl;
+
+import kieker.analysis.graph.Edge;
+
+class EdgeImp extends ElementImpl implements Edge {
+
+	// public Vertex getVertex(Direction direction) throws IllegalArgumentException;
+
+}
diff --git a/src/main/java/kieker/analysis/graph/impl/ElementImpl.java b/src/main/java/kieker/analysis/graph/impl/ElementImpl.java
new file mode 100644
index 00000000..6a1af0ef
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/impl/ElementImpl.java
@@ -0,0 +1,45 @@
+package kieker.analysis.graph.impl;
+
+import java.util.Set;
+
+import kieker.analysis.graph.Element;
+
+abstract class ElementImpl implements Element {
+
+	@Override
+	public <T> T getProperty(final String key) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Set<String> getPropertyKeys() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public void setProperty(final String key, final Object value) {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public <T> T removeProperty(final String key) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public void remove() {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public Object getId() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
diff --git a/src/main/java/kieker/analysis/graph/impl/GraphImpl.java b/src/main/java/kieker/analysis/graph/impl/GraphImpl.java
new file mode 100644
index 00000000..c6bc37f5
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/impl/GraphImpl.java
@@ -0,0 +1,66 @@
+package kieker.analysis.graph.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import kieker.analysis.graph.Edge;
+import kieker.analysis.graph.Graph;
+import kieker.analysis.graph.Vertex;
+
+public class GraphImpl implements Graph {
+
+	protected Map<String, Vertex> vertices = new HashMap<String, Vertex>();
+	protected Map<String, Edge> edges = new HashMap<String, Edge>();
+
+	public GraphImpl() {}
+
+	@Override
+	public Vertex addVertex(final Object id) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Vertex getVertex(final Object id) {
+		// TODO exception if not exists
+		String idString = id.toString();
+		return this.vertices.get(idString);
+	}
+
+	@Override
+	public Iterable<Vertex> getVertices() {
+		return new ArrayList<Vertex>(this.vertices.values());
+	}
+
+	@Override
+	public void removeVertex(final Vertex vertex) {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public Edge addEdge(final Object id, final Vertex outVertex, final Vertex inVertex) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Edge getEdge(final Object id) {
+		// TODO exception if not exists
+		String idString = id.toString();
+		return this.edges.get(idString);
+	}
+
+	@Override
+	public Iterable<Edge> getEdges() {
+		return new ArrayList<Edge>(this.edges.values());
+	}
+
+	@Override
+	public void removeEdge(final Edge edge) {
+		// TODO Auto-generated method stub
+
+	}
+
+}
diff --git a/src/main/java/kieker/analysis/graph/impl/VertexImpl.java b/src/main/java/kieker/analysis/graph/impl/VertexImpl.java
new file mode 100644
index 00000000..44f3e069
--- /dev/null
+++ b/src/main/java/kieker/analysis/graph/impl/VertexImpl.java
@@ -0,0 +1,20 @@
+package kieker.analysis.graph.impl;
+
+import kieker.analysis.graph.Graph;
+import kieker.analysis.graph.Vertex;
+
+class VertexImpl extends ElementImpl implements Vertex {
+
+	@Override
+	public Boolean hasSubgraph() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public Graph getSubgraph() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}
-- 
GitLab