From 45d73d0278af0e96d77af7af3baa3742a25d145d Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com>
Date: Fri, 16 Sep 2011 22:33:47 -0400
Subject: [PATCH] CHECKPOINT: began to split up the class structure a bit more
---
.../syncleus/dann/graph/AssignableCloud.java | 35 ++++++++++++++++
.../syncleus/dann/graph/AssignableEdge.java | 29 +++++++++++++
.../syncleus/dann/graph/AssignableGraph.java | 16 ++++---
.../java/com/syncleus/dann/graph/Cloud.java | 5 ---
.../java/com/syncleus/dann/graph/Graph.java | 5 ++-
.../com/syncleus/dann/graph/HyperEdge.java | 10 ++---
.../syncleus/dann/graph/JoinableCloud.java | 36 ++++++++++++++++
.../com/syncleus/dann/graph/JoinableEdge.java | 29 +++++++++++++
.../syncleus/dann/graph/JoinableGraph.java | 42 +++++++++++++++++++
.../dann/graph/MixableBidirectedEdge.java | 17 ++++++--
.../com/syncleus/dann/graph/MutableCloud.java | 29 +++++++++++++
.../com/syncleus/dann/graph/MutableEdge.java | 4 +-
.../com/syncleus/dann/graph/MutableGraph.java | 15 +++----
.../syncleus/dann/graph/MutableHyperEdge.java | 11 +----
.../syncleus/dann/graph/PartibleCloud.java | 36 ++++++++++++++++
.../com/syncleus/dann/graph/PartibleEdge.java | 29 +++++++++++++
.../syncleus/dann/graph/PartibleGraph.java | 42 +++++++++++++++++++
17 files changed, 352 insertions(+), 38 deletions(-)
create mode 100644 src/main/java/com/syncleus/dann/graph/AssignableCloud.java
create mode 100644 src/main/java/com/syncleus/dann/graph/AssignableEdge.java
create mode 100644 src/main/java/com/syncleus/dann/graph/JoinableCloud.java
create mode 100644 src/main/java/com/syncleus/dann/graph/JoinableEdge.java
create mode 100644 src/main/java/com/syncleus/dann/graph/JoinableGraph.java
create mode 100644 src/main/java/com/syncleus/dann/graph/MutableCloud.java
create mode 100644 src/main/java/com/syncleus/dann/graph/PartibleCloud.java
create mode 100644 src/main/java/com/syncleus/dann/graph/PartibleEdge.java
create mode 100644 src/main/java/com/syncleus/dann/graph/PartibleGraph.java
diff --git a/src/main/java/com/syncleus/dann/graph/AssignableCloud.java b/src/main/java/com/syncleus/dann/graph/AssignableCloud.java
new file mode 100644
index 00000000..8ba2d67d
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/AssignableCloud.java
@@ -0,0 +1,35 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+import java.util.Map;
+import java.util.Set;
+
+public interface AssignableCloud<
+ T,
+ EP extends AssignableCloud.Endpoint<? extends T>
+ > extends Cloud<T,EP>
+{
+ interface Endpoint<T> extends Cloud.Endpoint<T>
+ {
+ void setTarget(T newTarget) throws InvalidEdgeException;
+ }
+
+ void reassign(Map<? extends EP,? extends T> reassignments) throws InvalidGraphException;
+}
diff --git a/src/main/java/com/syncleus/dann/graph/AssignableEdge.java b/src/main/java/com/syncleus/dann/graph/AssignableEdge.java
new file mode 100644
index 00000000..fe9d1d38
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/AssignableEdge.java
@@ -0,0 +1,29 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+public interface AssignableEdge<
+ T,
+ EP extends AssignableEdge.Endpoint<? extends T>
+ > extends Edge<T, EP>, AssignableCloud<T,EP>
+{
+ interface Endpoint<T> extends Edge.Endpoint<T>, AssignableCloud.Endpoint<T>
+ {
+ };
+}
diff --git a/src/main/java/com/syncleus/dann/graph/AssignableGraph.java b/src/main/java/com/syncleus/dann/graph/AssignableGraph.java
index 9be50dc7..4fdc973d 100644
--- a/src/main/java/com/syncleus/dann/graph/AssignableGraph.java
+++ b/src/main/java/com/syncleus/dann/graph/AssignableGraph.java
@@ -23,22 +23,28 @@ public interface AssignableGraph<
E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>,
NEP extends AssignableGraph.NodeEndpoint<N, E>,
EEP extends AssignableGraph.EdgeEndpoint<N, E>
- > extends Graph<N,E,NEP,EEP>
+ > extends Graph<N,E,NEP,EEP>, AssignableCloud<Object,AssignableGraph.Endpoint<?, N,E>>
{
+ interface Endpoint<
+ T,
+ N,
+ E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>
+ >
+ extends Graph.Endpoint<T,N,E>, AssignableCloud.Endpoint<T>
+ {
+ };
interface NodeEndpoint<
ON,
OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>>
- > extends Graph.NodeEndpoint<ON,OE>, Cloud.AssignableEndpoint<ON>
+ > extends Graph.NodeEndpoint<ON,OE>, AssignableCloud.Endpoint<ON>
{
- void setTarget(ON newTarget) throws InvalidGraphException;
};
interface EdgeEndpoint<
ON,
OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>>
- > extends Graph.EdgeEndpoint<ON,OE>, Cloud.AssignableEndpoint<OE>
+ > extends Graph.EdgeEndpoint<ON,OE>, AssignableCloud.Endpoint<OE>
{
- void setTarget(OE newTarget) throws InvalidGraphException;
};
}
diff --git a/src/main/java/com/syncleus/dann/graph/Cloud.java b/src/main/java/com/syncleus/dann/graph/Cloud.java
index 094c4cac..053fb050 100644
--- a/src/main/java/com/syncleus/dann/graph/Cloud.java
+++ b/src/main/java/com/syncleus/dann/graph/Cloud.java
@@ -40,11 +40,6 @@ public interface Cloud<
T getTarget();
};
- interface AssignableEndpoint<T> extends Cloud.Endpoint<T>
- {
- void setTarget(T newTarget) throws InvalidEdgeException;
- };
-
Set<EP> getEndpoints();
Set<EP> getEndpoints(Object target);
Set<T> getTargets();
diff --git a/src/main/java/com/syncleus/dann/graph/Graph.java b/src/main/java/com/syncleus/dann/graph/Graph.java
index 16484623..0b5e66b7 100644
--- a/src/main/java/com/syncleus/dann/graph/Graph.java
+++ b/src/main/java/com/syncleus/dann/graph/Graph.java
@@ -19,6 +19,7 @@
package com.syncleus.dann.graph;
import java.util.Set;
+import com.sun.xml.internal.org.jvnet.fastinfoset.ExternalVocabulary;
/**
* Represents a graph as a collection of nodes connected by edges. A graph does
@@ -34,11 +35,13 @@ import java.util.Set;
* @param <E> The type of edge for the given node type
*/
public interface Graph<
+ A,
N,
E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>,
+ AE extends Graph.Endpoint<A, N, E>,
NE extends Graph.NodeEndpoint<N, E>,
EE extends Graph.EdgeEndpoint<N, E>
- > extends Cloud<Object,Graph.Endpoint<?, N,E>>
+ > extends Cloud<A,AE>
{
interface Endpoint<
T,
diff --git a/src/main/java/com/syncleus/dann/graph/HyperEdge.java b/src/main/java/com/syncleus/dann/graph/HyperEdge.java
index 9bf41930..9a568910 100644
--- a/src/main/java/com/syncleus/dann/graph/HyperEdge.java
+++ b/src/main/java/com/syncleus/dann/graph/HyperEdge.java
@@ -19,13 +19,13 @@
package com.syncleus.dann.graph;
public interface HyperEdge<
- N,
- EP extends Edge.Endpoint<N>
- > extends Edge<N, EP>
+ T,
+ EP extends HyperEdge.Endpoint<? extends T>
+ > extends Edge<T, EP>
{
- interface Endpoint<NN, EN extends NN> extends Edge.Endpoint<NN, EN>
+ interface Endpoint<NN> extends Edge.Endpoint<NN>
{
};
- boolean isSymmetric(HyperEdge<N> symmetricEdge);
+ boolean isSymmetric(HyperEdge<T,EP> symmetricEdge);
}
diff --git a/src/main/java/com/syncleus/dann/graph/JoinableCloud.java b/src/main/java/com/syncleus/dann/graph/JoinableCloud.java
new file mode 100644
index 00000000..e0841a68
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/JoinableCloud.java
@@ -0,0 +1,36 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+import java.util.Map;
+import java.util.Set;
+
+public interface JoinableCloud<
+ T,
+ EP extends JoinableCloud.Endpoint<? extends T>
+ > extends Cloud<T,EP>
+{
+ interface Endpoint<T> extends Cloud.Endpoint<T>
+ {
+ }
+
+ EP join(T edge) throws InvalidGraphException;
+ Map<T, EP> joins(Set<? extends T> edges) throws InvalidGraphException;
+ Map<T, Set<EP>> joins(Map<? extends T,? extends Integer> edges) throws InvalidGraphException;
+}
diff --git a/src/main/java/com/syncleus/dann/graph/JoinableEdge.java b/src/main/java/com/syncleus/dann/graph/JoinableEdge.java
new file mode 100644
index 00000000..ba71ce8b
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/JoinableEdge.java
@@ -0,0 +1,29 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+public interface JoinableEdge<
+ T,
+ EP extends JoinableEdge.Endpoint<? extends T>
+ > extends Edge<T, EP>, JoinableCloud<T,EP>
+{
+ interface Endpoint<T> extends Edge.Endpoint<T>, JoinableCloud.Endpoint<T>
+ {
+ };
+}
diff --git a/src/main/java/com/syncleus/dann/graph/JoinableGraph.java b/src/main/java/com/syncleus/dann/graph/JoinableGraph.java
new file mode 100644
index 00000000..11d2fdda
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/JoinableGraph.java
@@ -0,0 +1,42 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+public interface JoinableGraph<
+ N,
+ E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>,
+ NEP extends JoinableGraph.NodeEndpoint<N, E>,
+ EEP extends JoinableGraph.EdgeEndpoint<N, E>
+ > extends Graph<N,E,NEP,EEP>
+{
+
+ interface NodeEndpoint<
+ ON,
+ OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>>
+ > extends Graph.NodeEndpoint<ON,OE>, JoinableCloud.Endpoint<ON>
+ {
+ };
+
+ interface EdgeEndpoint<
+ ON,
+ OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>>
+ > extends Graph.EdgeEndpoint<ON,OE>, JoinableCloud.Endpoint<OE>
+ {
+ };
+}
diff --git a/src/main/java/com/syncleus/dann/graph/MixableBidirectedEdge.java b/src/main/java/com/syncleus/dann/graph/MixableBidirectedEdge.java
index 283d5525..daa2fe26 100644
--- a/src/main/java/com/syncleus/dann/graph/MixableBidirectedEdge.java
+++ b/src/main/java/com/syncleus/dann/graph/MixableBidirectedEdge.java
@@ -18,9 +18,18 @@
******************************************************************************/
package com.syncleus.dann.graph;
-public interface MixableBidirectedEdge<N, LN extends N, RN extends N> extends Edge<N>
+public interface MixableBidirectedEdge<
+ T,
+ LT extends T,
+ RT extends T,
+ EP extends MixableBidirectedEdge.Endpoint<? extends T, ? extends LT, ? extends RT>
+ > extends Edge<T, EP>
{
- interface Endpoint<NN, EN extends NN, ON extends NN> extends Edge.Endpoint<NN, EN>
+ interface Endpoint<
+ NN,
+ EN extends NN,
+ ON extends NN
+ > extends Edge.Endpoint<NN>
{
enum Direction
{
@@ -31,8 +40,8 @@ public interface MixableBidirectedEdge<N, LN extends N, RN extends N> extends Ed
Endpoint<NN, ON,EN> getNeighbor();
};
- Endpoint<N, LN,RN> getLeftEndPoint();
- Endpoint<N, RN,LN> getRightEndPoint();
+ EP getLeftEndPoint();
+ EP getRightEndPoint();
boolean isIntroverted();
boolean isExtroverted();
boolean isDirected();
diff --git a/src/main/java/com/syncleus/dann/graph/MutableCloud.java b/src/main/java/com/syncleus/dann/graph/MutableCloud.java
new file mode 100644
index 00000000..dd606671
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/MutableCloud.java
@@ -0,0 +1,29 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+public interface MutableCloud<
+ T,
+ EP extends MutableCloud.Endpoint<? extends T>
+ > extends AssignableCloud<T,EP>, JoinableCloud<T,EP>, PartibleCloud<T, EP>
+{
+ interface Endpoint<T> extends AssignableCloud.Endpoint<T>, JoinableCloud.Endpoint<T>, PartibleCloud.Endpoint<T>
+ {
+ }
+}
diff --git a/src/main/java/com/syncleus/dann/graph/MutableEdge.java b/src/main/java/com/syncleus/dann/graph/MutableEdge.java
index 95592555..9abece6c 100644
--- a/src/main/java/com/syncleus/dann/graph/MutableEdge.java
+++ b/src/main/java/com/syncleus/dann/graph/MutableEdge.java
@@ -21,9 +21,9 @@ package com.syncleus.dann.graph;
public interface MutableEdge<
T,
EP extends MutableEdge.Endpoint<? extends T>
- > extends Edge<T, EP>, AssignableCloud<T,EP>
+ > extends AssignableEdge<T, EP>, JoinableEdge<T,EP>, PartibleEdge<T,EP>, MutableCloud<T,EP>
{
- interface Endpoint<T> extends Edge.Endpoint<T>, AssignableCloud.Endpoint<T>
+ interface Endpoint<T> extends AssignableEdge.Endpoint<T>, JoinableEdge.Endpoint<T>, PartibleEdge.Endpoint<T>, MutableCloud.Endpoint<T>
{
};
}
diff --git a/src/main/java/com/syncleus/dann/graph/MutableGraph.java b/src/main/java/com/syncleus/dann/graph/MutableGraph.java
index 109590b7..883213c2 100644
--- a/src/main/java/com/syncleus/dann/graph/MutableGraph.java
+++ b/src/main/java/com/syncleus/dann/graph/MutableGraph.java
@@ -24,21 +24,22 @@ import java.util.Set;
public interface MutableGraph<
N,
E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>,
- NE extends MutableGraph.NodeEndpoint<N, E>,
- EE extends MutableGraph.EdgeEndpoint<N, E>
- > extends AssignableGraph<N,E,NE,EE>
+ NEP extends MutableGraph.NodeEndpoint<N, E>,
+ EEP extends MutableGraph.EdgeEndpoint<N, E>
+ > extends Graph<N,E,NEP,EEP>
{
+
interface NodeEndpoint<
- N,
- E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>
- > extends AssignableGraph.NodeEndpoint<N,E>
+ ON,
+ OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>>
+ > extends Graph.NodeEndpoint<ON,OE>, PartibleCloud.Endpoint<ON>
{
};
interface EdgeEndpoint<
ON,
OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>>
- > extends AssignableGraph.EdgeEndpoint<ON,OE>
+ > extends Graph.EdgeEndpoint<ON,OE>, PartibleCloud.Endpoint<OE>
{
};
diff --git a/src/main/java/com/syncleus/dann/graph/MutableHyperEdge.java b/src/main/java/com/syncleus/dann/graph/MutableHyperEdge.java
index 3ba41f83..de36949f 100644
--- a/src/main/java/com/syncleus/dann/graph/MutableHyperEdge.java
+++ b/src/main/java/com/syncleus/dann/graph/MutableHyperEdge.java
@@ -22,17 +22,10 @@ import java.util.*;
public interface MutableHyperEdge<
T,
- EP extends Edge.Endpoint<T>
+ EP extends MutableHyperEdge.Endpoint<? extends T>
> extends HyperEdge<T,EP>, MutableEdge<T,EP>
{
- interface Endpoint<NN, EN extends NN> extends HyperEdge.Endpoint<NN, EN>, MutableEdge.Endpoint<NN, EN>
+ interface Endpoint<NN> extends HyperEdge.Endpoint<NN>, MutableEdge.Endpoint<NN>
{
};
-
- Endpoint<T, T> join(final T node) throws InvalidEdgeException;
- Map<T,Endpoint<T, T>> join(final Set<T> nodes) throws InvalidEdgeException;
- void leave(final Endpoint<T, T> endPoint) throws InvalidEdgeException;
- void leave(final Set<Endpoint<T, T>> endPoint) throws InvalidEdgeException;
- void clear() throws InvalidEdgeException;
- Map<T,Endpoint<T, T>> reconfigure(final Set<T> connectNodes, final Set<Endpoint<T, T>> disconnectEndPoints) throws InvalidEdgeException;
}
diff --git a/src/main/java/com/syncleus/dann/graph/PartibleCloud.java b/src/main/java/com/syncleus/dann/graph/PartibleCloud.java
new file mode 100644
index 00000000..82ba759c
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/PartibleCloud.java
@@ -0,0 +1,36 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+import java.util.Set;
+
+public interface PartibleCloud<
+ T,
+ EP extends PartibleCloud.Endpoint<? extends T>
+ > extends Cloud<T,EP>
+{
+ interface Endpoint<T> extends Cloud.Endpoint<T>
+ {
+ void part() throws InvalidEdgeException;
+ }
+
+ void leave(MutableGraph.EdgeEndpoint<?, ?> endpoint) throws InvalidGraphException;
+ void leave(Set<? extends MutableGraph.EdgeEndpoint<?, ?>> endpoints) throws InvalidGraphException;
+ void clear() throws InvalidGraphException;
+}
diff --git a/src/main/java/com/syncleus/dann/graph/PartibleEdge.java b/src/main/java/com/syncleus/dann/graph/PartibleEdge.java
new file mode 100644
index 00000000..1f43ef25
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/PartibleEdge.java
@@ -0,0 +1,29 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+public interface PartibleEdge<
+ T,
+ EP extends PartibleEdge.Endpoint<? extends T>
+ > extends Edge<T, EP>, PartibleCloud<T,EP>
+{
+ interface Endpoint<T> extends Edge.Endpoint<T>, PartibleCloud.Endpoint<T>
+ {
+ };
+}
diff --git a/src/main/java/com/syncleus/dann/graph/PartibleGraph.java b/src/main/java/com/syncleus/dann/graph/PartibleGraph.java
new file mode 100644
index 00000000..19547419
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/PartibleGraph.java
@@ -0,0 +1,42 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+public interface PartibleGraph<
+ N,
+ E extends Cloud<N,? extends Cloud.Endpoint<? extends N>>,
+ NEP extends PartibleGraph.NodeEndpoint<N, E>,
+ EEP extends PartibleGraph.EdgeEndpoint<N, E>
+ > extends Graph<N,E,NEP,EEP>
+{
+
+ interface NodeEndpoint<
+ ON,
+ OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>>
+ > extends Graph.NodeEndpoint<ON,OE>, PartibleCloud.Endpoint<ON>
+ {
+ };
+
+ interface EdgeEndpoint<
+ ON,
+ OE extends Cloud<ON,? extends Cloud.Endpoint<? extends ON>>
+ > extends Graph.EdgeEndpoint<ON,OE>, PartibleCloud.Endpoint<OE>
+ {
+ };
+}
--
GitLab