Class NodeEdgeConnectorItem
- All Implemented Interfaces:
INodeConnectorItem
,Serializable
,Cloneable
NodeEdgeConnnectorItem
holds the two Strings
of the start and the end location.
Each NodeEdgeConnnectorItem
is describing for example the time, distance etc. between two
Nodes
and is itself contained within a INodeEdgeConnector
The INodeConnectorItem
can be populated with realistic data on distance and time
needed between two locations. If not populated, air distance and average speed is being used.
The Nodes
are filtered before the INodeconnector
is being populated. If one
Node
is only accessible in December and another one only in January the Optimizer
never puts them in the same Route
which is more efficient and the specific data on the
distance between these Nodes
does not need to be acquired.
Implementation example:
List<INodeConnectorItem> connectionItems = new ArrayList<INodeConnectorItem>();
// Add connections from resources
INodeConnectorItem connectionJackHeilbronn = new NodeEdgeConnectorItem();
connectionJackHeilbronn.setFromOptimizationElement(resourceJackHeilbronn);
connectionJackHeilbronn.setToOptimizationElement(cityHeilbronn);
connectionJackHeilbronn.setDistance(Quantities.getQuantity(2, KILO(METRE)));
connectionJackHeilbronn.setDrivingTime(Duration.ofMinutes(10));
connectionItems.add(connectionJackHeilbronn);
// Add some connection items => The rest will be generated as fall back solution to bird
// distances.
INodeConnectorItem connectionKoelnOberhausen = new NodeEdgeConnectorItem();
connectionKoelnOberhausen.setFromOptimizationElement(cityKoeln);
connectionKoelnOberhausen.setToOptimizationElement(cityOberhausen);
connectionJackHeilbronn.setDistance(Quantities.getQuantity(20, KILO(METRE)));
connectionKoelnOberhausen.doAutoCalculateTime(true); // The time will be calculated based on the provided distance
connectionItems.add(connectionKoelnOberhausen);
INodeConnectorItem connectionOberhausenKoeln = new NodeEdgeConnectorItem();
connectionOberhausenKoeln.setFromOptimizationElement(cityOberhausen);
connectionOberhausenKoeln.setToOptimizationElement(cityKoeln);
connectionJackHeilbronn.setDistance(Quantities.getQuantity(20, KILO(METRE)));
connectionOberhausenKoeln.doAutoCalculateTime( true); // The time will be calculated based on the provided distance
connectionItems.add(connectionOberhausenKoeln);
INodeEdgeConnector myNodeConnector = new NodeEdgeConnector();
// Add items to connector
myNodeConnector.putNodeConnections(connectionItems);
// Set NodeEdgeConnector
setNodeConnector(this.myNodeConnector);
- Since:
- 03/08/2019
- Version:
- 16/09/2019
- Author:
- DNA
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
doAutoCalculateTime
(boolean isDoAutoCalculateTime) In case only a distance is provided by a user, the missing driving time information can be calculated on the fly.long
Gets the base traveling time in milliseconds.long
getBaseTimeMillis
(Instant time) Gets the driving time as function of time.Gets theIConnectionByTimeStore
of a connection.double
Gets the distance in meters.double
getDistanceMeter
(Instant time) Gets the distance as function of time.Gets theoptimization element
(usually aNode
) from which theconnection
starts.getShiftedCopy
(INodeConnectorItem deltaItem) getShiftedCopy
(ReducedNodeEdgeConnectorItem deltaItem) long
getTimeMillis
(IResource visitor) Gets the traveling time in milliseconds correct for potential visitor modifications.long
getTimeMillis
(IResource visitor, Instant time) Gets the driving time as function of time.Gets theoptimization element
(usually aNode
) at which theconnection
ends.boolean
Checks if theconnection
iscreated on the fly
in case theconnection
is not found in theINodeEdgeConnector
which means it was created on the fly by itsIBackupElementConnector
.boolean
Checks if the driving time has to be approximated by calculation because only distance but no exact driving time has been provided by the user.void
setConnectionByTimeStore
(IConnectionByTimeStore connectionByTimeStore) Sets theconnectionByTimeStore
.void
setDistance
(javax.measure.Quantity<javax.measure.quantity.Length> distance) Setsdistance
of the specificconnection
.void
setDistanceMeter
(double distanceMeter) Deprecated.void
setDrivingTime
(Duration duration) Sets thedriving time
of that specificconnection
.void
setFromOptimizationElement
(IOptimizationElement fromOptimizationElement) Sets theoptimization element
(usually aNode
) from which theconnection
starts.void
setIsCreatedOnTheFly
(boolean isCreatedOnTheFly) Marks theconnection
ascreated on the fly
in case theconnection
is not found in theINodeEdgeConnector
which means it was created on the fly by itsIBackupElementConnector
.void
setTimeMillis
(long timeMillis) Deprecated.void
setToOptimizationElement
(IOptimizationElement toOptimizationElement) Sets theoptimization element
(usually aNode
) at which theconnection
ends.toString()
-
Constructor Details
-
NodeEdgeConnectorItem
public NodeEdgeConnectorItem()
-
-
Method Details
-
doAutoCalculateTime
public void doAutoCalculateTime(boolean isDoAutoCalculateTime) Description copied from interface:INodeConnectorItem
In case only a distance is provided by a user, the missing driving time information can be calculated on the fly.- Specified by:
doAutoCalculateTime
in interfaceINodeConnectorItem
- Parameters:
isDoAutoCalculateTime
- the boolean to be set
-
isDoAutoCalculateTime
public boolean isDoAutoCalculateTime()Description copied from interface:INodeConnectorItem
Checks if the driving time has to be approximated by calculation because only distance but no exact driving time has been provided by the user.- Specified by:
isDoAutoCalculateTime
in interfaceINodeConnectorItem
- Returns:
- the isDoAutoCalculateTime
- See Also:
-
getDistanceMeter
public double getDistanceMeter()Description copied from interface:INodeConnectorItem
Gets the distance in meters.- Specified by:
getDistanceMeter
in interfaceINodeConnectorItem
- Returns:
- the double distanceMeter
-
getBaseTimeMillis
public long getBaseTimeMillis()Description copied from interface:INodeConnectorItem
Gets the base traveling time in milliseconds.- Specified by:
getBaseTimeMillis
in interfaceINodeConnectorItem
- Returns:
- the base time millis
-
getTimeMillis
Description copied from interface:INodeConnectorItem
Gets the traveling time in milliseconds correct for potential visitor modifications.- Specified by:
getTimeMillis
in interfaceINodeConnectorItem
- Parameters:
visitor
- the visitor- Returns:
- the long potentially modified timeMillis
-
getDistanceMeter
Description copied from interface:INodeConnectorItem
Gets the distance as function of time. If aIConnectionByTimeStore
is present an input Instant will be used to extract the corresponding value. In case no store is present, the instant time is ignored.Internally, when the distance information of the connection is requested, the departure time of the from element is used as input.
- Specified by:
getDistanceMeter
in interfaceINodeConnectorItem
- Parameters:
time
- the instant time- Returns:
- the set distanceMeter or the distanceMeter of the localDateTime
-
getTimeMillis
Description copied from interface:INodeConnectorItem
Gets the driving time as function of time. Further, the driving time has potential modifications by the visitor assigned. If aIConnectionByTimeStore
is present an input Instant will be used to extract the corresponding value. In case no store is present, the instant time is ignored.Internally, when the driving time information of the connection is requested, the departure time of the from element is used as input.
- Specified by:
getTimeMillis
in interfaceINodeConnectorItem
- Parameters:
visitor
- the visitortime
- the instant time- Returns:
- the set timeMillis or the timeMillis (modified by the visitor) for the LocalDateTime
-
getBaseTimeMillis
Description copied from interface:INodeConnectorItem
Gets the driving time as function of time. Further, the driving time has potential modifications by the visitor assigned. If aIConnectionByTimeStore
is present an input Instant will be used to extract the corresponding value. In case no store is present, the instant time is ignored.Internally, when the driving time information of the connection is requested, the departure time of the from element is used as input.
- Specified by:
getBaseTimeMillis
in interfaceINodeConnectorItem
- Parameters:
time
- the instant time- Returns:
- the set timeMillis or the timeMillis of the LocalDateTime
-
setDrivingTime
Description copied from interface:INodeConnectorItem
Sets thedriving time
of that specificconnection
.Please note that the same
connection
in the other direction can have a differentdriving time
.- Specified by:
setDrivingTime
in interfaceINodeConnectorItem
- Parameters:
duration
- the duration of the driving time
-
setDistance
public void setDistance(javax.measure.Quantity<javax.measure.quantity.Length> distance) Description copied from interface:INodeConnectorItem
Setsdistance
of the specificconnection
.- Specified by:
setDistance
in interfaceINodeConnectorItem
- Parameters:
distance
- Quantity of the distance to be set
-
setDistanceMeter
Deprecated.Description copied from interface:INodeConnectorItem
Deprecated methodSets the
distance
of aconnection
in meters.- Specified by:
setDistanceMeter
in interfaceINodeConnectorItem
- Parameters:
distanceMeter
- the double distance in meter to be set
-
setTimeMillis
Deprecated.Description copied from interface:INodeConnectorItem
Deprecated methodSets the
duration
of aconnection
in milliseconds.- Specified by:
setTimeMillis
in interfaceINodeConnectorItem
- Parameters:
timeMillis
- the long milliseconds to be set
-
getConnectionByTimeStore
Description copied from interface:INodeConnectorItem
Gets theIConnectionByTimeStore
of a connection. In case the driving time is a function of the clock-time itself a connection store can be defined. For example, using a certain connection during a rushhour at a Monday morning takes longer compared to a Sunday afternoon.Further, the distance can be also modeled as a function of time, for example if another path is taken depending on the time.
- Specified by:
getConnectionByTimeStore
in interfaceINodeConnectorItem
- Returns:
- the connectionByTimeStore
-
setConnectionByTimeStore
Description copied from interface:INodeConnectorItem
Sets theconnectionByTimeStore
. In case the driving time is a function of the clock-time itself a connection store can be defined. For example, using a certain connection during a rushhour at a Monday morning takes longer compared to a Sunday afternoon.- Specified by:
setConnectionByTimeStore
in interfaceINodeConnectorItem
- Parameters:
connectionByTimeStore
- the iConnectionByTimeStore
-
getFromOptimizationElement
Description copied from interface:INodeConnectorItem
Gets theoptimization element
(usually aNode
) from which theconnection
starts.- Specified by:
getFromOptimizationElement
in interfaceINodeConnectorItem
- Returns:
- the fromOptimizationElement
-
setFromOptimizationElement
Description copied from interface:INodeConnectorItem
Sets theoptimization element
(usually aNode
) from which theconnection
starts.- Specified by:
setFromOptimizationElement
in interfaceINodeConnectorItem
- Parameters:
fromOptimizationElement
- the iOptimizationElement to be set
-
getToOptimizationElement
Description copied from interface:INodeConnectorItem
Gets theoptimization element
(usually aNode
) at which theconnection
ends.- Specified by:
getToOptimizationElement
in interfaceINodeConnectorItem
- Returns:
- the toOptimizationElement
-
setToOptimizationElement
Description copied from interface:INodeConnectorItem
Sets theoptimization element
(usually aNode
) at which theconnection
ends.- Specified by:
setToOptimizationElement
in interfaceINodeConnectorItem
- Parameters:
toOptimizationElement
- the iOptimizationElement to be set
-
setIsCreatedOnTheFly
public void setIsCreatedOnTheFly(boolean isCreatedOnTheFly) Description copied from interface:INodeConnectorItem
Marks theconnection
ascreated on the fly
in case theconnection
is not found in theINodeEdgeConnector
which means it was created on the fly by itsIBackupElementConnector
.- Specified by:
setIsCreatedOnTheFly
in interfaceINodeConnectorItem
- Parameters:
isCreatedOnTheFly
- the boolean to be set
-
isCreatedOnTheFly
public boolean isCreatedOnTheFly()Description copied from interface:INodeConnectorItem
Checks if theconnection
iscreated on the fly
in case theconnection
is not found in theINodeEdgeConnector
which means it was created on the fly by itsIBackupElementConnector
.- Specified by:
isCreatedOnTheFly
in interfaceINodeConnectorItem
- Returns:
- the set status of isCreatedOnTheFly
-
toString
-
getShiftedCopy
- Specified by:
getShiftedCopy
in interfaceINodeConnectorItem
-
getShiftedCopy
- Specified by:
getShiftedCopy
in interfaceINodeConnectorItem
-