All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jbpt.pm.IDataNode Maven / Gradle / Ivy

/**
 * 
 */
package org.jbpt.pm;

import java.util.ArrayList;
import java.util.Collection;

import org.jbpt.graph.abs.IDirectedEdge;
import org.jbpt.hypergraph.abs.IVertex;
import org.jbpt.pm.data.DataModel;
import org.jbpt.pm.data.DataState;


/**
 * Interface for nodes, that represents data objects of a {@link IProcessModel}.
 * 
 * @author Tobias Hoppe, Andreas Meyer
 * 
 */
public interface IDataNode extends INonFlowNode {

	/**
	 * Adds a {@link FlowNode} reading this {@link IDataNode}.
	 * 
	 * @param readingFlowNode
	 *            {@link FlowNode} reading this {@link IDataNode}
	 */
	public void addReadingFlow(IDirectedEdge readingFlow);

	/**
	 * Adds a {@link FlowNode} reading this {@link IDataNode}.
	 * 
	 * @param readingFlowNode
	 *            {@link FlowNode} reading this {@link IDataNode}
	 */
	public void addReadingFlowNode(IFlowNode readingFlowNode);

	/**
	 * Adds a {@link FlowNode} reading and writing this {@link IDataNode}.
	 * 
	 * @param readingWritingFlowNode
	 *            {@link FlowNode} reading and writing this {@link IDataNode}
	 */
	public void addReadWriteFlow(IDirectedEdge readingWritingFlow);

	/**
	 * Adds a {@link FlowNode} reading and writing this {@link IDataNode}.
	 * 
	 * @param readingWritingFlowNode
	 *            {@link FlowNode} reading and writing this {@link IDataNode}
	 */
	public void addReadWriteFlowNode(IFlowNode readingWritingFlowNode);

	/**
	 * Adds a {@link FlowNode} with unspecified reading/writing access of this
	 * {@link IDataNode}.
	 * 
	 * @param touchingFlowNode
	 *            {@link FlowNode} access this {@link IDataNode}
	 */
	public void addUnspecifiedFlow(IDirectedEdge touchingFlow);

	/**
	 * Adds a {@link FlowNode} with unspecified reading/writing access of this
	 * {@link IDataNode}.
	 * 
	 * @param touchingFlowNode
	 *            {@link FlowNode} access this {@link IDataNode}
	 */
	public void addUnspecifiedFlowNode(IFlowNode touchingFlowNode);

	/**
	 * Adds a {@link FlowNode} writing this {@link IDataNode}.
	 * 
	 * @param readingFlowNode
	 *            {@link FlowNode} writing this {@link IDataNode}
	 */
	public void addWritingFlow(IDirectedEdge writingFlow);

	/**
	 * Adds a {@link FlowNode} writing this {@link IDataNode}.
	 * 
	 * @param readingFlowNode
	 *            {@link FlowNode} writing this {@link IDataNode}
	 */
	public void addWritingFlowNode(IFlowNode writingFlownode);

	/**
	 * @return all {@link FlowNode}s reading or writing this
	 *         {@link IDataNode} and all {@link FlowNode}s with
	 *         unspecified access on this {@link IDataNode}.
	 */
	public Collection getConnectedFlowNodes();
	
	/**
	 * @return all {@link FlowNode}s reading this {@link IDataNode}.
	 */
	public Collection getReadingFlowNodes();

	/**
	 * @return all {@link FlowNode}s reading this {@link IDataNode}.
	 */
	public Collection> getReadingFlows();

	/**
	 * @return all {@link IFlowNode}s reading and writing this {@link IDataNode}.
	 * As well as all {@link IFlowNode}s with unspecified access on this {@link IDataNode}.
	 */
	public Collection getReadWriteFlowNodes();
	
	/**
	 * @return all {@link IFlowNode}s with unspecified access on this {@link IDataNode}.
	 */
	public Collection getUnspecifiedFlowNodes();

	/**
	 * @return all {@link IFlowNode}s writing this {@link IDataNode}.
	 */
	public Collection getWritingFlowNodes();

	/**
	 * @return all {@link IFlowNode}s writing this {@link IDataNode}.
	 */
	public Collection> getWritingFlows();

	/**
	 * Removes a {@link FlowNode} connecting to this {@link IDataNode}.
	 * 
	 * @param connectedFlowNode
	 *            {@link FlowNode} being somehow connected to this {@link IDataNode}
	 */
	public void removeConnectedFlowNode(IFlowNode connectedFlowNode);
	
	/**
	 * Removes a {@link FlowNode} reading this {@link IDataNode}.
	 * 
	 * @param readFlowNode
	 *            {@link FlowNode} reading this {@link IDataNode}
	 */
	void removeReadFlowNode(IFlowNode readFlowNode);
	
	/**
	 * Removes a {@link FlowNode} reading this {@link IDataNode}
	 * without updating the corresponding read list from the {@link FlowNode}.
	 * 
	 * @param readFlowNode
	 *            {@link FlowNode} reading this {@link IDataNode}
	 */
	void removeReadFlowNodeOnly(IFlowNode readFlowNode);

	/**
	 * Removes a {@link FlowNode} reading and writing this {@link IDataNode}.
	 * 
	 * @param readingWritingFlowNode
	 *            {@link FlowNode} reading and writing this {@link IDataNode}
	 */
	void removeReadWriteFlowNode(IFlowNode readWriteFlowNode);

	/**
	 * Removes a {@link FlowNode} reading and writing this {@link IDataNode}
	 * without updating the corresponding readWrite list from the {@link FlowNode}.
	 * 
	 * @param readingWritingFlowNode
	 *            {@link FlowNode} reading and writing this {@link IDataNode}
	 */
	void removeReadWriteFlowNodeOnly(IFlowNode readWriteFlowNode);

	/**
	 * Removes a {@link FlowNode} writing this {@link IDataNode}.
	 * 
	 * @param writtenFlowNode
	 *            {@link FlowNode} writing this {@link IDataNode}
	 */
	void removeWriteFlowNode(IFlowNode writtenFlowNode);
	
	/**
	 * Removes a {@link FlowNode} writing this {@link IDataNode}
	 * without updating the corresponding write list from the {@link FlowNode}.
	 * 
	 * @param writtenFlowNode
	 *            {@link FlowNode} writing this {@link IDataNode}
	 */
	void removeWriteFlowNodeOnly(IFlowNode writtenFlowNode);

	/**
	 * Removes a {@link FlowNode} with unspecified access to this {@link IDataNode}.
	 * 
	 * @param unspecifiedFlowNode
	 *            {@link FlowNode} with unspecified access to this {@link IDataNode}
	 */
	void removeUnspecifiedFlowNode(IFlowNode unspecifiedFlowNode);

	/**
	 * Removes a {@link FlowNode} with unspecified access to this {@link IDataNode}
	 * without updating the corresponding access list from the {@link FlowNode}.
	 * 
	 * @param unspecifiedFlowNode
	 *            {@link FlowNode} with unspecified access to this {@link IDataNode}
	 */
	void removeUnspecifiedFlowNodeOnly(IFlowNode unspecifiedFlowNode);
	
	/**
	 * @return the data model
	 */
	public DataModel getModel();

	/**
	 * @param dm the datamodel to set
	 */
	public void setModel(DataModel dm);
	
	/**
	 * @return ArrayList containing all predecessor data nodes considering
	 * aggregation and generalization data connections only (in the {@link DataModel}).
	 */
	public ArrayList getDirectPredecessorsAggG();
	
	/**
	 * @return ArrayList containing all successor data nodes considering
	 * aggregation and generalization data connections only (in the {@link DataModel}).
	 */
	public ArrayList getDirectSuccessorsAggG();
	
	/**
	 * @return {@link DataState} associated to the data node
	 */
	public DataState getDataState();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy