Package org.goplanit.graph
Class EdgeImpl<V extends Vertex>
- java.lang.Object
-
- org.goplanit.utils.id.IdAbleImpl
-
- org.goplanit.utils.id.ExternalIdAbleImpl
-
- org.goplanit.graph.GraphEntityImpl
-
- org.goplanit.graph.EdgeImpl<V>
-
- All Implemented Interfaces:
Serializable,Comparable<IdAble>,Edge,GraphEntity,ExternalIdAble,IdAble,ManagedId
- Direct Known Subclasses:
ConjugateEdgeImpl,DirectedEdgeImpl
public class EdgeImpl<V extends Vertex> extends GraphEntityImpl implements Edge
Edge class connecting two vertices via some geometry. Each edge has one or two underlying edge segments in a particular direction which may carry additional information for each particular direction of the edge.- Author:
- markr
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<String,Object>inputPropertiesGeneric input property storageprotected DoublelengthInKmLength of edgeprotected org.locationtech.jts.geom.LineStringlineGeometryThe line geometry of this link if setprotected StringnameName of the edge-
Fields inherited from interface org.goplanit.utils.graph.Edge
EDGE_ID_CLASS
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedEdgeImpl(EdgeImpl<V> other, boolean deepCopy)Copy constructorprotectedEdgeImpl(IdGroupingToken groupId, V vertexA, V vertexB)Constructor which injects link lengths directlyprotectedEdgeImpl(IdGroupingToken groupId, V vertexA, V vertexB, double lengthKm)Constructor which injects link lengths directly
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddInputProperty(String key, Object value)Add a property from the original input that is not part of the readily available link membersEdgeImpl<V>deepClone()An id entity should always support a deep copy, i.e., all "owned" members will be deep copied when a clone of this instance is created via this call.org.locationtech.jts.geom.LineStringgetGeometry()Collect the geometry of this lineObjectgetInputProperty(String key)Get input property by its keydoublegetLengthKm()Return length of this edge in kmStringgetName()get the name of the edgeVgetVertexA()Vertex A of the edgeVgetVertexB()Vertex B of the edgebooleanremoveVertex(Vertex vertex)Remove vertex from edgebooleanremoveVertexA()remove vertex A by setting it to nullbooleanremoveVertexB()remove vertex B by setting it to nullbooleanreplace(Vertex vertexToReplace, Vertex vertexToReplaceWith)Replace one of the vertices of the linkvoidsetGeometry(org.locationtech.jts.geom.LineString lineString)set the geometry of this link as a line stringvoidsetLengthKm(double lengthInKm)set length of this edge in kmvoidsetName(String name)set the name of the edgeprotected voidsetVertexA(V vertexA)set vertex Aprotected voidsetVertexB(V vertexB)set vertex BEdgeImpl<V>shallowClone()Create a shallow copy of this entitybooleanvalidate()validate the contents of this edge-
Methods inherited from class org.goplanit.graph.GraphEntityImpl
generateAndSetId, generateId, recreateManagedIds, toString
-
Methods inherited from class org.goplanit.utils.id.ExternalIdAbleImpl
getExternalId, getXmlId, setExternalId, setXmlId
-
Methods inherited from class org.goplanit.utils.id.IdAbleImpl
equals, generateAndSetId, getId, hashCode, setId
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.goplanit.utils.graph.Edge
createEnvelope, getIdClass, hasGeometry, hasName, hasVertex, hasVertexA, hasVertexB, hasVertices, isGeometryInAbDirection, isGeometryInAbDirection, isVertexA, populateBasicGeometry, transformGeometry, updateGeometryInjectCoordinateAtProjectedLocation
-
Methods inherited from interface org.goplanit.utils.id.ExternalIdAble
appendExternalId, appendExternalId, getExternalId, getIdsAsString, getSplitExternalId, getSplitExternalId, getXmlId, hasExternalId, hasXmlId, setExternalId, setXmlId, setXmlId
-
Methods inherited from interface org.goplanit.utils.id.IdAble
compareTo, getId, idEquals, idHashCode
-
Methods inherited from interface org.goplanit.utils.id.ManagedId
recreateManagedIds, resetChildManagedIdEntities
-
-
-
-
Constructor Detail
-
EdgeImpl
protected EdgeImpl(IdGroupingToken groupId, V vertexA, V vertexB)
Constructor which injects link lengths directly- Parameters:
groupId- , contiguous id generation within this group for instances of this classvertexA- first vertex in the linkvertexB- second vertex in the link
-
EdgeImpl
protected EdgeImpl(IdGroupingToken groupId, V vertexA, V vertexB, double lengthKm)
Constructor which injects link lengths directly- Parameters:
groupId- , contiguous id generation within this group for instances of this classvertexA- first vertex in the linkvertexB- second vertex in the linklengthKm- length of the link
-
-
Method Detail
-
setVertexB
protected void setVertexB(V vertexB)
set vertex B- Parameters:
vertexB- to set
-
setVertexA
protected void setVertexA(V vertexA)
set vertex A- Parameters:
vertexA- to set
-
getGeometry
public org.locationtech.jts.geom.LineString getGeometry()
Collect the geometry of this line- Specified by:
getGeometryin interfaceEdge- Returns:
- lineString
-
setGeometry
public void setGeometry(org.locationtech.jts.geom.LineString lineString)
set the geometry of this link as a line string- Specified by:
setGeometryin interfaceEdge- Parameters:
lineString- to set
-
removeVertex
public boolean removeVertex(Vertex vertex)
Remove vertex from edge- Specified by:
removeVertexin interfaceEdge- Parameters:
vertex- to remove- Returns:
- true when successful false otherwise
-
removeVertexB
public boolean removeVertexB()
remove vertex B by setting it to null- Returns:
- true
-
removeVertexA
public boolean removeVertexA()
remove vertex A by setting it to null- Returns:
- true
-
addInputProperty
public void addInputProperty(String key, Object value)
Add a property from the original input that is not part of the readily available link members- Specified by:
addInputPropertyin interfaceEdge- Parameters:
key- (name) of input propertyvalue- of input property
-
getInputProperty
public Object getInputProperty(String key)
Get input property by its key- Specified by:
getInputPropertyin interfaceEdge- Parameters:
key- of input property- Returns:
- value retrieved value of input property
-
getLengthKm
public double getLengthKm()
Return length of this edge in km- Specified by:
getLengthKmin interfaceEdge- Returns:
- length of this edge in km
-
setLengthKm
public void setLengthKm(double lengthInKm)
set length of this edge in km- Specified by:
setLengthKmin interfaceEdge- Parameters:
lengthInKm- of this edge in km
-
getVertexA
public V getVertexA()
Vertex A of the edge- Specified by:
getVertexAin interfaceEdge- Returns:
- vertex A
-
getVertexB
public V getVertexB()
Vertex B of the edge- Specified by:
getVertexBin interfaceEdge- Returns:
- vertex B
-
getName
public String getName()
get the name of the edge
-
setName
public void setName(String name)
set the name of the edge
-
replace
public boolean replace(Vertex vertexToReplace, Vertex vertexToReplaceWith)
Replace one of the vertices of the link
-
shallowClone
public EdgeImpl<V> shallowClone()
Create a shallow copy of this entity- Specified by:
shallowClonein interfaceEdge- Specified by:
shallowClonein interfaceGraphEntity- Specified by:
shallowClonein interfaceIdAble- Specified by:
shallowClonein classGraphEntityImpl- Returns:
- shallow copy of entity
-
deepClone
public EdgeImpl<V> deepClone()
An id entity should always support a deep copy, i.e., all "owned" members will be deep copied when a clone of this instance is created via this call. To be used with caution if not called by managed id container related code- Specified by:
deepClonein interfaceEdge- Specified by:
deepClonein interfaceGraphEntity- Specified by:
deepClonein interfaceIdAble- Specified by:
deepClonein classGraphEntityImpl- Returns:
- deep copy of entity
-
-