// Path: src/main/java/com/ojn/gexf4j/core/Edge.java
// public interface Edge extends SlicableDatum<Edge> {
// 
// 	String getId();
// 	
// 	Node getSource();
// 	
// 	Node getTarget();
// 	Edge setTarget(Node target);
// 	
// 	boolean hasLabel();
// 	Edge clearLabel();
// 	String getLabel();
// 	Edge setLabel(String label);
// 	
// 	boolean hasWeight();
// 	Edge clearWeight();
// 	float getWeight();
// 	Edge setWeight(float weight);
// 
// 	EdgeType getEdgeType();
// 	Edge setEdgeType(EdgeType edgeType);
// 
// 	boolean hasColor();
// 	Edge clearColor();
// 	Color getColor();
// 	Edge setColor(Color color);
// 
// 	boolean hasThickness();
// 	Edge clearThickness();
// 	float getThickness();
// 	Edge setThickness(float thickness);
// 
// 	EdgeShape getShape();
// 	Edge setShape(EdgeShape shape);	
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/Node.java
// public interface Node extends SlicableDatum<Node>, HasNodes {
// 
// 	String getId();
// 	
// 	String getLabel();
// 	Node setLabel(String label);
// 	
// 	List<Edge> getEdges();
// 	
// 	Edge connectTo(Node target);
// 	Edge connectTo(String id, Node target);
// 	
// 	boolean hasEdgeTo(String id);
// 	
// 	boolean hasColor();
// 	Node clearColor();
// 	Color getColor();
// 	Node setColor(Color color);
// 	
// 	boolean hasPosition();
// 	Node clearPosition();
// 	Position getPosition();
// 	Node setPosition(Position position);
// 	
// 	boolean hasSize();
// 	Node clearSize();
// 	float getSize();
// 	Node setSize(float size);
// 	
// 	boolean hasShape();
// 	Node clearShape();
// 	NodeShapeEntity getShapeEntity();
// 	
// 	List<Node> getParentForList();
// 
// 	boolean hasPID();
// 	Node clearPID();
// 	String getPID();
// 	Node setPID(String pid);
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/impl/viz/NodeShapeImpl.java
// public class NodeShapeImpl implements NodeShapeEntity {
// 
// 	private NodeShape shape = NodeShape.NOTSET;
// 	private String uri = null;
// 	
// 	public NodeShapeImpl() {
// 		// do nothing
// 	}
// 	
// 	@Override
// 	public NodeShapeEntity clearUri() {
// 		uri = null;
// 		return this;
// 	}
// 
// 	@Override
// 	public NodeShape getNodeShape() {
// 		return shape;
// 	}
// 
// 	@Override
// 	public String getUri() {
// 		checkState(hasUri(), "URI has not been set.");
// 		return uri;
// 	}
// 
// 	@Override
// 	public boolean hasUri() {
// 		return (uri != null);
// 	}
// 
// 	@Override
// 	public NodeShapeEntity setNodeShape(NodeShape shape) {
// 		checkArgument(shape != NodeShape.NOTSET, "Node Shape cannot be NOTSET.");
// 		this.shape = shape;
// 		return this;
// 	}
// 
// 	@Override
// 	public NodeShapeEntity setUri(String uri) {
// 		checkArgument(uri != null, "URI cannot be set to null.");
// 		return this;
// 	}
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/viz/Color.java
// public interface Color {
// 
// 	int getR();
// 	Color setR(int r);
// 	
// 	int getG();
// 	Color setG(int g);
// 	
// 	int getB();
// 	Color setB(int b);
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/viz/NodeShape.java
// public enum NodeShape {
// 
// 	DISC,
// 	SQUARE,
// 	TRIANGLE,
// 	DIAMOND,
// 	IMAGE,
// 	NOTSET,
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/viz/NodeShapeEntity.java
// public interface NodeShapeEntity {
// 
// 	NodeShape getNodeShape();
// 	NodeShapeEntity setNodeShape(NodeShape shape);
// 	
// 	boolean hasUri();
// 	NodeShapeEntity clearUri();
// 	String getUri();
// 	NodeShapeEntity setUri(String uri);
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/viz/Position.java
// public interface Position {
// 
// 	float getX();
// 	Position setX(float x);
// 	
// 	float getY();
// 	Position setY(float y);
// 	
// 	float getZ();
// 	Position setZ(float z);
// }


import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import com.ojn.gexf4j.core.Edge;
import com.ojn.gexf4j.core.Node;
import com.ojn.gexf4j.core.impl.viz.NodeShapeImpl;
import com.ojn.gexf4j.core.viz.Color;
import com.ojn.gexf4j.core.viz.NodeShape;
import com.ojn.gexf4j.core.viz.NodeShapeEntity;
import com.ojn.gexf4j.core.viz.Position;
package com.ojn.gexf4j.core.impl;




public class NodeImpl extends SliceableDatumBase<Node> implements Node {

	private String id = "";
	private String label = "";
	private Color color = null;
	private String pid = null;
	private Position position = null;
	private NodeShapeEntity shape = null;
	private float size = Float.MIN_VALUE;
	private List<Node> nodes = null;
// Path: src/main/java/com/ojn/gexf4j/core/Edge.java
// public interface Edge extends SlicableDatum<Edge> {
// 
// 	String getId();
// 	
// 	Node getSource();
// 	
// 	Node getTarget();
// 	Edge setTarget(Node target);
// 	
// 	boolean hasLabel();
// 	Edge clearLabel();
// 	String getLabel();
// 	Edge setLabel(String label);
// 	
// 	boolean hasWeight();
// 	Edge clearWeight();
// 	float getWeight();
// 	Edge setWeight(float weight);
// 
// 	EdgeType getEdgeType();
// 	Edge setEdgeType(EdgeType edgeType);
// 
// 	boolean hasColor();
// 	Edge clearColor();
// 	Color getColor();
// 	Edge setColor(Color color);
// 
// 	boolean hasThickness();
// 	Edge clearThickness();
// 	float getThickness();
// 	Edge setThickness(float thickness);
// 
// 	EdgeShape getShape();
// 	Edge setShape(EdgeShape shape);	
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/Node.java
// public interface Node extends SlicableDatum<Node>, HasNodes {
// 
// 	String getId();
// 	
// 	String getLabel();
// 	Node setLabel(String label);
// 	
// 	List<Edge> getEdges();
// 	
// 	Edge connectTo(Node target);
// 	Edge connectTo(String id, Node target);
// 	
// 	boolean hasEdgeTo(String id);
// 	
// 	boolean hasColor();
// 	Node clearColor();
// 	Color getColor();
// 	Node setColor(Color color);
// 	
// 	boolean hasPosition();
// 	Node clearPosition();
// 	Position getPosition();
// 	Node setPosition(Position position);
// 	
// 	boolean hasSize();
// 	Node clearSize();
// 	float getSize();
// 	Node setSize(float size);
// 	
// 	boolean hasShape();
// 	Node clearShape();
// 	NodeShapeEntity getShapeEntity();
// 	
// 	List<Node> getParentForList();
// 
// 	boolean hasPID();
// 	Node clearPID();
// 	String getPID();
// 	Node setPID(String pid);
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/impl/viz/NodeShapeImpl.java
// public class NodeShapeImpl implements NodeShapeEntity {
// 
// 	private NodeShape shape = NodeShape.NOTSET;
// 	private String uri = null;
// 	
// 	public NodeShapeImpl() {
// 		// do nothing
// 	}
// 	
// 	@Override
// 	public NodeShapeEntity clearUri() {
// 		uri = null;
// 		return this;
// 	}
// 
// 	@Override
// 	public NodeShape getNodeShape() {
// 		return shape;
// 	}
// 
// 	@Override
// 	public String getUri() {
// 		checkState(hasUri(), "URI has not been set.");
// 		return uri;
// 	}
// 
// 	@Override
// 	public boolean hasUri() {
// 		return (uri != null);
// 	}
// 
// 	@Override
// 	public NodeShapeEntity setNodeShape(NodeShape shape) {
// 		checkArgument(shape != NodeShape.NOTSET, "Node Shape cannot be NOTSET.");
// 		this.shape = shape;
// 		return this;
// 	}
// 
// 	@Override
// 	public NodeShapeEntity setUri(String uri) {
// 		checkArgument(uri != null, "URI cannot be set to null.");
// 		return this;
// 	}
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/viz/Color.java
// public interface Color {
// 
// 	int getR();
// 	Color setR(int r);
// 	
// 	int getG();
// 	Color setG(int g);
// 	
// 	int getB();
// 	Color setB(int b);
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/viz/NodeShape.java
// public enum NodeShape {
// 
// 	DISC,
// 	SQUARE,
// 	TRIANGLE,
// 	DIAMOND,
// 	IMAGE,
// 	NOTSET,
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/viz/NodeShapeEntity.java
// public interface NodeShapeEntity {
// 
// 	NodeShape getNodeShape();
// 	NodeShapeEntity setNodeShape(NodeShape shape);
// 	
// 	boolean hasUri();
// 	NodeShapeEntity clearUri();
// 	String getUri();
// 	NodeShapeEntity setUri(String uri);
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/viz/Position.java
// public interface Position {
// 
// 	float getX();
// 	Position setX(float x);
// 	
// 	float getY();
// 	Position setY(float y);
// 	
// 	float getZ();
// 	Position setZ(float z);
// }


// Path: src/main/java/com/ojn/gexf4j/core/impl/NodeImpl.java
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import com.ojn.gexf4j.core.Edge;
import com.ojn.gexf4j.core.Node;
import com.ojn.gexf4j.core.impl.viz.NodeShapeImpl;
import com.ojn.gexf4j.core.viz.Color;
import com.ojn.gexf4j.core.viz.NodeShape;
import com.ojn.gexf4j.core.viz.NodeShapeEntity;
import com.ojn.gexf4j.core.viz.Position;

package com.ojn.gexf4j.core.impl;




public class NodeImpl extends SliceableDatumBase<Node> implements Node {

	private String id = "";
	private String label = "";
	private Color color = null;
	private String pid = null;
	private Position position = null;
	private NodeShapeEntity shape = null;
	private float size = Float.MIN_VALUE;
	private List<Node> nodes = null;
	private List<Edge> edges = null;