blob: 6e8ac570ca5b969d46c62f45cee5df2c012f9b76 [file] [log] [blame]
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.airavata.workflow.model.graph;
import java.util.Collection;
import java.util.List;
import com.google.gson.JsonElement;
import org.xmlpull.infoset.XmlElement;
public interface Graph extends GraphPiece {
/**
* Returns if the graph should be editable
* @return
*/
public boolean isEditable();
/**
* set if graph can be edited
* @param editable
*/
public void setEditable(boolean editable);
/**
* Returns the ID of this graph.
*
* @return The ID of this graph
*/
public String getID();
/**
* Sets the name of this graph.
*
* @param name
* The name to set
*/
public void setName(String name);
/**
* Returns the name of this graph.
*
* @return The name
*/
public String getName();
/**
* Returns the description of this graph.
*
* @return The description.
*/
public String getDescription();
/**
* Sets the description of this graph.
*
* @param description
* The description to set.
*/
public void setDescription(String description);
/**
* Returns the list of the nodes of this graph.
*
* It's a list because the order of input nodes matters.
*
* @return the list of the nodes
*/
public List<? extends Node> getNodes();
/**
* Returns the list of the ports of this graph.
*
* @return the list of the ports
*/
public Collection<? extends Port> getPorts();
/**
* Returns the list of edges of this graph.
*
* @return the list of edges
*/
public Collection<? extends Edge> getEdges();
/**
* Removes a specified node from this graph.
*
* @param node
* the node to delete
* @throws GraphException
* If the specified node does not exist in the graph
*/
public void removeNode(Node node) throws GraphException;
/**
* Returns a node with a specified ID.
*
* @param nodeID
* The specified ID.
* @return The node with the specified ID if exists; null otherwise
*/
public Node getNode(String nodeID);
/**
* Returns a port with a specified ID.
*
* @param portID
* The specified ID.
* @return The port with the specified ID if exists; null otherwise
*/
public Port getPort(String portID);
/**
* Adds an edge between two ports specified. If the edge already exists between two ports, it returns null without
* creating a new one.
*
* @param fromPort
* The port the edge is connected from
* @param toPort
* The port the edge is connected to
* @return The edge added
* @throws GraphException
*/
public Edge addEdge(Port fromPort, Port toPort) throws GraphException;
/**
* Removes a specified edge.
*
* @param edge
* The edge to remove.
* @throws GraphException
*/
public void removeEdge(Edge edge) throws GraphException;
/**
* Removes an Edge between two specified ports.
*
* @param fromPort
* @param toPort
* @throws GraphException
*/
public void removeEdge(Port fromPort, Port toPort) throws GraphException;
/**
* Checks if an Edge exist between two specified ports.
*
* @param fromPort
* @param toPort
* @return true if an Edge exists; false otherwise;
*/
public boolean containsEdge(Port fromPort, Port toPort);
/**
* Imports a Graph to this Graph.
*
* @param graph
* the Graph to import
* @throws GraphException
*/
public void importGraph(Graph graph) throws GraphException;
/**
* @return The graph XML
*/
public XmlElement toXML();
public com.google.gson.JsonObject toJSON();
/**
* @param multipleSelectedNodes
* @throws GraphException
*/
}