Package org.planit.graph
Class EdgeImpl
- java.lang.Object
-
- org.planit.graph.EdgeImpl
-
- All Implemented Interfaces:
Serializable,Cloneable,Comparable<Idable>,Edge,ExternalIdable,Idable
- Direct Known Subclasses:
DirectedEdgeImpl
public class EdgeImpl extends Object implements Edge, Cloneable
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 StringexternalIdExternal Id of the physical linkprotected 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 edgeprotected StringxmlIdXml Id of the physical link
-
Constructor Summary
Constructors Modifier Constructor Description protectedEdgeImpl(EdgeImpl edgeImpl)Copy constructor, input properties are not copied because shallow copy is considered dangerous at this pointprotectedEdgeImpl(IdGroupingToken groupId, Vertex vertexA, Vertex vertexB, double lengthKm)Constructor which injects link lengths directly
-
Method Summary
All Methods Static 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 membersEdgeImplclone()Clone the edge as is, all shared members are shallow copied, fully owned members are deep copiedbooleanequals(Object obj)protected static longgenerateEdgeId(IdGroupingToken groupId)Generate edge idStringgetExternalId()get external id of the entityorg.locationtech.jts.geom.LineStringgetGeometry()Collect the geometry of this linelonggetId()collect id of the entityObjectgetInputProperty(String key)Get input property by its keydoublegetLengthKm()Return length of this edge in kmStringgetName()get the name of the edgeVertexgetVertexA()Vertex A of the edgeVertexgetVertexB()Vertex B of the edgeStringgetXmlId()the id exposed to users as the "normal" id in the PLANit native xml formatbooleanhasExternalId()check if external id is available or notinthashCode()booleanremoveVertex(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 linkvoidsetExternalId(String externalId)set the external idvoidsetGeometry(org.locationtech.jts.geom.LineString lineString)set the geometry of this link as a line stringprotected voidsetId(long id)set id on this edgevoidsetLengthKm(double lengthInKm)set length of this edge in kmvoidsetName(String name)set the name of the edgeprotected voidsetVertexA(Vertex vertexA)set vertex Aprotected voidsetVertexB(Vertex vertexB)set vertex BvoidsetXmlId(String xmlId)set the external idbooleanvalidate()validate the contents of this edge-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.planit.utils.graph.Edge
hasGeometry, hasVertex, isGeometryInAbDirection, transformGeometry
-
Methods inherited from interface org.planit.utils.id.ExternalIdable
hasXmlId
-
Methods inherited from interface org.planit.utils.id.Idable
compareTo, idEquals, idHashCode
-
-
-
-
Field Detail
-
externalId
protected String externalId
External Id of the physical link
-
xmlId
protected String xmlId
Xml Id of the physical link
-
lineGeometry
protected org.locationtech.jts.geom.LineString lineGeometry
The line geometry of this link if set
-
name
protected String name
Name of the edge
-
lengthInKm
protected double lengthInKm
Length of edge
-
-
Constructor Detail
-
EdgeImpl
protected EdgeImpl(IdGroupingToken groupId, Vertex vertexA, Vertex vertexB, double lengthKm) throws PlanItException
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- Throws:
PlanItException- thrown if there is an error
-
EdgeImpl
protected EdgeImpl(EdgeImpl edgeImpl)
Copy constructor, input properties are not copied because shallow copy is considered dangerous at this point- Parameters:
edgeImpl- to copy
-
-
Method Detail
-
generateEdgeId
protected static long generateEdgeId(IdGroupingToken groupId)
Generate edge id- Parameters:
groupId- , contiguous id generation within this group for instances of this class- Returns:
- id of this Edge object
-
setId
protected void setId(long id)
set id on this edge- Parameters:
id- to set
-
setVertexB
protected void setVertexB(Vertex vertexB)
set vertex B- Parameters:
vertexB- to set
-
setVertexA
protected void setVertexA(Vertex vertexA)
set vertex A- Parameters:
vertexA- to set
-
setExternalId
public void setExternalId(String externalId)
set the external id- Specified by:
setExternalIdin interfaceExternalIdable- Parameters:
externalId- to set
-
getExternalId
public String getExternalId()
get external id of the entity- Specified by:
getExternalIdin interfaceExternalIdable- Returns:
- external id
-
getXmlId
public String getXmlId()
the id exposed to users as the "normal" id in the PLANit native xml format- Specified by:
getXmlIdin interfaceExternalIdable- Returns:
- xmlId
-
setXmlId
public void setXmlId(String xmlId)
set the external id- Specified by:
setXmlIdin interfaceExternalIdable- Parameters:
xmlId- to set
-
hasExternalId
public boolean hasExternalId()
check if external id is available or not- Specified by:
hasExternalIdin interfaceExternalIdable- Returns:
- true when nont null, false otherwise
-
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
-
getId
public long getId()
collect id of the entity
-
getVertexA
public Vertex getVertexA()
Vertex A of the edge- Specified by:
getVertexAin interfaceEdge- Returns:
- vertex A
-
getVertexB
public Vertex 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) throws PlanItException
Replace one of the vertices of the link- Specified by:
replacein interfaceEdge- Parameters:
vertexToReplace- the vertex to replacevertexToReplaceWith- the vertex to replace with- Returns:
- true when replaced, false otherwise
- Throws:
PlanItException- thrown if error
-
clone
public EdgeImpl clone()
Clone the edge as is, all shared members are shallow copied, fully owned members are deep copied
-
-