Package org.jfree.data.flow
Class DefaultFlowDataset<K extends java.lang.Comparable<K>>
- java.lang.Object
-
- org.jfree.data.general.AbstractDataset
-
- org.jfree.data.flow.DefaultFlowDataset<K>
-
- Type Parameters:
K- the type for the keys used to identify sources and destinations (instances should be immutable,Stringis a good default choice).
- All Implemented Interfaces:
java.io.ObjectInputValidation,java.io.Serializable,java.lang.Cloneable,PublicCloneable,FlowDataset<K>,Dataset
public class DefaultFlowDataset<K extends java.lang.Comparable<K>> extends AbstractDataset implements FlowDataset<K>, PublicCloneable, java.io.Serializable
A dataset representing flows between source and destination nodes.- Since:
- 1.5.3
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<FlowKey,java.util.Map<java.lang.String,java.lang.Object>>flowPropertiesFlow properties.private java.util.Map<FlowKey<K>,java.lang.Number>flowsStorage for the flows.private java.util.Map<NodeKey,java.util.Map<java.lang.String,java.lang.Object>>nodePropertiesNode properties.private java.util.List<java.util.List<K>>nodesThe nodes at each stage.
-
Constructor Summary
Constructors Constructor Description DefaultFlowDataset()Creates a new dataset that is initially empty.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Objectclone()Returns a clone of the dataset.booleanequals(java.lang.Object obj)Tests this dataset for equality with an arbitrary object.java.util.Set<FlowKey<K>>getAllFlows()Returns a set of keys for all the flows in the dataset.java.util.Set<NodeKey<K>>getAllNodes()Returns the set of keys for all the nodes in the dataset.java.util.List<K>getDestinations(int stage)Returns a list of the destination nodes for the specified stage.java.lang.NumbergetFlow(int stage, K source, K destination)Returns the flow between a source node and a destination node at a specified stage.java.lang.ObjectgetFlowProperty(FlowKey<K> flowKey, java.lang.String propertyKey)Returns the value of a property, if specified, for the specified flow.java.util.List<FlowKey<K>>getInFlows(NodeKey nodeKey)Returns a list of flow keys for all the flows coming into this node.java.lang.ObjectgetNodeProperty(NodeKey<K> nodeKey, java.lang.String propertyKey)Returns the value of a property, if specified, for the specified node.java.util.List<FlowKey>getOutFlows(NodeKey nodeKey)Returns a list of flow keys for all the flows going out of this node.java.util.List<K>getSources(int stage)Returns a list of the source nodes for the specified stage.intgetStageCount()Returns the number of flow stages.inthashCode()voidsetFlow(int stage, K source, K destination, double flow)Sets the flow between a source node and a destination node at the specified stage.voidsetFlowProperty(FlowKey<K> flowKey, java.lang.String propertyKey, java.lang.Object value)Sets a property for the specified flow and notifies registered listeners that the dataset has changed.voidsetNodeProperty(NodeKey<K> nodeKey, java.lang.String propertyKey, java.lang.Object value)Sets a property for the specified node and notifies registered listeners that the dataset has changed.-
Methods inherited from class org.jfree.data.general.AbstractDataset
addChangeListener, canEqual, fireDatasetChanged, getGroup, getNotify, hasListener, notifyListeners, removeChangeListener, setGroup, setNotify, validateObject
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.jfree.data.general.Dataset
addChangeListener, getGroup, removeChangeListener, setGroup
-
-
-
-
Field Detail
-
nodes
private java.util.List<java.util.List<K extends java.lang.Comparable<K>>> nodes
The nodes at each stage. The list will have N+1 entries, where N is the number of stages - the last entry contains the destination nodes for the final stage.
-
nodeProperties
private java.util.Map<NodeKey,java.util.Map<java.lang.String,java.lang.Object>> nodeProperties
Node properties.
-
flows
private java.util.Map<FlowKey<K extends java.lang.Comparable<K>>,java.lang.Number> flows
Storage for the flows.
-
flowProperties
private java.util.Map<FlowKey,java.util.Map<java.lang.String,java.lang.Object>> flowProperties
Flow properties.
-
-
Method Detail
-
getSources
public java.util.List<K> getSources(int stage)
Returns a list of the source nodes for the specified stage.- Specified by:
getSourcesin interfaceFlowDataset<K extends java.lang.Comparable<K>>- Parameters:
stage- the stage (0 togetStageCount() - 1).- Returns:
- A list of source nodes (possibly empty but never
null).
-
getDestinations
public java.util.List<K> getDestinations(int stage)
Returns a list of the destination nodes for the specified stage.- Specified by:
getDestinationsin interfaceFlowDataset<K extends java.lang.Comparable<K>>- Parameters:
stage- the stage (0 togetStageCount() - 1).- Returns:
- A list of destination nodes (possibly empty but never
null).
-
getAllNodes
public java.util.Set<NodeKey<K>> getAllNodes()
Returns the set of keys for all the nodes in the dataset.- Specified by:
getAllNodesin interfaceFlowDataset<K extends java.lang.Comparable<K>>- Returns:
- The set of keys for all the nodes in the dataset (possibly empty
but never
null).
-
getNodeProperty
public java.lang.Object getNodeProperty(NodeKey<K> nodeKey, java.lang.String propertyKey)
Returns the value of a property, if specified, for the specified node.- Specified by:
getNodePropertyin interfaceFlowDataset<K extends java.lang.Comparable<K>>- Parameters:
nodeKey- the node key (nullnot permitted).propertyKey- the node key (nullnot permitted).- Returns:
- The property value, or
null.
-
setNodeProperty
public void setNodeProperty(NodeKey<K> nodeKey, java.lang.String propertyKey, java.lang.Object value)
Sets a property for the specified node and notifies registered listeners that the dataset has changed.- Parameters:
nodeKey- the node key (nullnot permitted).propertyKey- the property key (nullnot permitted).value- the property value.
-
getFlow
public java.lang.Number getFlow(int stage, K source, K destination)Returns the flow between a source node and a destination node at a specified stage. This must be 0 or greater. The dataset can returnnullto represent an unknown value.- Specified by:
getFlowin interfaceFlowDataset<K extends java.lang.Comparable<K>>- Parameters:
stage- the stage index (0 togetStageCount()- 1).source- the source (nullnot permitted).destination- the destination (nullnot permitted).- Returns:
- The flow (zero or greater, possibly
null).
-
setFlow
public void setFlow(int stage, K source, K destination, double flow)Sets the flow between a source node and a destination node at the specified stage. A new stage will be added ifstageis equal togetStageCount().- Parameters:
stage- the stage (0 togetStageCount().source- the source (nullnot permitted).destination- the destination (nullnot permitted).flow- the flow (0 or greater).
-
getFlowProperty
public java.lang.Object getFlowProperty(FlowKey<K> flowKey, java.lang.String propertyKey)
Returns the value of a property, if specified, for the specified flow.- Specified by:
getFlowPropertyin interfaceFlowDataset<K extends java.lang.Comparable<K>>- Parameters:
flowKey- flowKey (nullnot permitted).propertyKey- the property key (nullnot permitted).- Returns:
- The property value, or
null.
-
setFlowProperty
public void setFlowProperty(FlowKey<K> flowKey, java.lang.String propertyKey, java.lang.Object value)
Sets a property for the specified flow and notifies registered listeners that the dataset has changed.- Parameters:
flowKey- the node key (nullnot permitted).propertyKey- the property key (nullnot permitted).value- the property value.
-
getStageCount
public int getStageCount()
Returns the number of flow stages. A flow dataset always has one or more stages, so this method will return1even for an empty dataset (one with no sources, destinations or flows defined).- Specified by:
getStageCountin interfaceFlowDataset<K extends java.lang.Comparable<K>>- Returns:
- The number of flow stages.
-
getAllFlows
public java.util.Set<FlowKey<K>> getAllFlows()
Returns a set of keys for all the flows in the dataset.- Specified by:
getAllFlowsin interfaceFlowDataset<K extends java.lang.Comparable<K>>- Returns:
- A set.
-
getInFlows
public java.util.List<FlowKey<K>> getInFlows(NodeKey nodeKey)
Returns a list of flow keys for all the flows coming into this node.- Parameters:
nodeKey- the node key (nullnot permitted).- Returns:
- A list of flow keys (possibly empty but never
null).
-
getOutFlows
public java.util.List<FlowKey> getOutFlows(NodeKey nodeKey)
Returns a list of flow keys for all the flows going out of this node.- Parameters:
nodeKey- the node key (nullnot permitted).- Returns:
- A list of flow keys (possibly empty but never
null).
-
clone
public java.lang.Object clone() throws java.lang.CloneNotSupportedExceptionReturns a clone of the dataset.- Specified by:
clonein interfacePublicCloneable- Overrides:
clonein classAbstractDataset- Returns:
- A clone of the dataset.
- Throws:
java.lang.CloneNotSupportedException- if there is a problem with cloning.
-
equals
public boolean equals(java.lang.Object obj)
Tests this dataset for equality with an arbitrary object. This method will returntrueif the object implements theFlowDatasetand defines the exact same set of nodes and flows as this dataset.- Overrides:
equalsin classAbstractDataset- Parameters:
obj- the object to test equality against (nullpermitted).- Returns:
- A boolean.
-
hashCode
public int hashCode()
- Overrides:
hashCodein classAbstractDataset
-
-