Package org.goplanit.network
Class LayeredNetwork<U extends NetworkLayer,T extends NetworkLayers<U>>
- java.lang.Object
-
- org.goplanit.component.PlanitComponent<Network>
-
- org.goplanit.network.Network
-
- org.goplanit.network.LayeredNetwork<U,T>
-
- Type Parameters:
U
- transport layer base classT
- transport layer container class where each layer extends<U>
- All Implemented Interfaces:
Serializable
,Comparable<IdAble>
,EventListener
,PlanitComponentListener
,EventListener
,ExternalIdAble
,IdAble
- Direct Known Subclasses:
TopologicalLayerNetwork
public abstract class LayeredNetwork<U extends NetworkLayer,T extends NetworkLayers<U>> extends Network
A transport network with one or more layers. One can choose the container for the different layers as a generic type that defines the container level operations available. Each container has a certain base class for the TransportLayer entities which is the second generic type. This allows one to have a base class for each layer, while the layer itself can derive from this base level. This way the user has maximum flexibility regarding what the functionality and properties of each layer are and how they are exposed via the container- Author:
- markr
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.goplanit.network.Network
MACROSCOPIC_NETWORK, networkIdGroupingToken
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
LayeredNetwork(LayeredNetwork<U,T> other, boolean deepCopy, ManagedIdDeepCopyMapper<Mode> modeMapper, ManagedIdDeepCopyMapper<U> layerMapper)
Copy constructor.LayeredNetwork(IdGroupingToken tokenId)
Default constructor
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract T
createLayersContainer(IdGroupingToken networkIdToken)
Derived type is to provide the actual layer implementationsabstract LayeredNetwork
deepClone()
deep clone on planit component should attempt to also update internal dependencies between deep cloned containers where possibleU
getLayerByMode(Mode mode)
collect a layer by modeU
getLayerByPredefinedModeType(PredefinedModeType predefinedModeType)
collect a layer by predefined mode type (we exclude custom mode types)Modes
getModes()
Collect the modesT
getTransportLayers()
Collect the transport layersboolean
isEmpty()
Empty when all layers in the layers container are emptyvoid
reset()
All components should be able to reset going back to some representative initial stateabstract LayeredNetwork
shallowClone()
Create a shallow copy of this entity-
Methods inherited from class org.goplanit.network.Network
collectSettingsAsKeyValueMap, getNetworkGroupingTokenId, logInfo
-
Methods inherited from class org.goplanit.component.PlanitComponent
equals, getComponentType, getExternalId, getId, getIdGroupingToken, getKnownSupportedEventTypes, getXmlId, hashCode, onPlanitComponentEvent, setExternalId, setXmlId
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.goplanit.utils.event.EventListener
hasKnownSupportedEventTypes
-
Methods inherited from interface org.goplanit.utils.id.ExternalIdAble
appendExternalId, appendExternalId, getIdsAsString, getSplitExternalId, getSplitExternalId, hasExternalId, hasXmlId, setXmlId
-
Methods inherited from interface org.goplanit.utils.id.IdAble
compareTo, idEquals, idHashCode
-
-
-
-
Constructor Detail
-
LayeredNetwork
public LayeredNetwork(IdGroupingToken tokenId)
Default constructor- Parameters:
tokenId
- to use for id generation
-
LayeredNetwork
protected LayeredNetwork(LayeredNetwork<U,T> other, boolean deepCopy, ManagedIdDeepCopyMapper<Mode> modeMapper, ManagedIdDeepCopyMapper<U> layerMapper)
Copy constructor.- Parameters:
other
- to copydeepCopy
- when true, create a deep copy, shallow copy otherwisemodeMapper
- to use for tracking mapping between original and copied modeslayerMapper
- to use for tracking mapping between original and copied layers
-
-
Method Detail
-
createLayersContainer
protected abstract T createLayersContainer(IdGroupingToken networkIdToken)
Derived type is to provide the actual layer implementations- Parameters:
networkIdToken
- to use- Returns:
- infrastructure layers container
-
getLayerByMode
public U getLayerByMode(Mode mode)
collect a layer by mode- Parameters:
mode
- to collect layer for- Returns:
- corresponding layer, (null if not found)
-
getLayerByPredefinedModeType
public U getLayerByPredefinedModeType(PredefinedModeType predefinedModeType)
collect a layer by predefined mode type (we exclude custom mode types)- Parameters:
predefinedModeType
- to collect layer for- Returns:
- corresponding layer, (null if not found)
-
getModes
public Modes getModes()
Collect the modes- Returns:
- modes container
-
getTransportLayers
public T getTransportLayers()
Collect the transport layers- Returns:
- transport layers container
-
reset
public void reset()
All components should be able to reset going back to some representative initial state
-
isEmpty
public boolean isEmpty()
Empty when all layers in the layers container are empty
-
shallowClone
public abstract LayeredNetwork shallowClone()
Create a shallow copy of this entity- Specified by:
shallowClone
in interfaceIdAble
- Specified by:
shallowClone
in classNetwork
- Returns:
- shallow copy of entity
-
deepClone
public abstract LayeredNetwork deepClone()
deep clone on planit component should attempt to also update internal dependencies between deep cloned containers where possible
-
-