blob: 843835dc37b38b12e6850773c175d4d4a2823b32 [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.awt.Point;
import java.util.Collection;
import java.util.List;
import org.apache.airavata.workflow.model.component.Component;
public interface Node extends GraphPiece {
public static enum NodeExecutionState{
WAITING,
EXECUTING,
FAILED,
FINISHED
}
/**
* Returns the ID of the node.
*
* @return the ID of the node
*/
public String getID();
/**
* Returns the name of the node.
*
* @return the name of the node
*/
public String getName();
/**
* Sets the name of the node.
*
* @param name
* The name of the node
*/
public void setName(String name);
/**
* Returns the component.
*
* @return The component
*/
public Component getComponent();
/**
* Sets the component.
*
* @param component
* The component to set.
*/
public void setComponent(Component component);
/**
* @return The graph
*/
public Graph getGraph();
/**
* Returns the List of input ports.
*
* @return the List of input ports
*/
public List<DataPort> getInputPorts();
/**
* Returns the List of output ports.
*
* @return the List of output ports
*/
public List<DataPort> getOutputPorts();
/**
* Returns the input port of the specified index.
*
* @param index
* The specified index
* @return the input port of the specified index
*/
public DataPort getInputPort(int index);
/**
* Returns the output port of the specified index.
*
* @param index
* The specified index
* @return the uses port of the specified index
*/
public Port getOutputPort(int index);
/**
* @return The controlInPort.
*/
public ControlPort getControlInPort();
/**
* @return The List of controlOutPorts.
*/
public List<? extends ControlPort> getControlOutPorts();
/**
* @return The EPR (End Point Reference) Port.
*/
public Port getEPRPort();
/**
* Returns all ports that belong to this node.
*
* @return All ports that belong to this node.
*/
public Collection<? extends Port> getAllPorts();
/**
* Checks if this node contains a specified port.
*
* @param port
* The specified port
* @return true if this node contains port; false otherwise
*/
public boolean containsPort(Port port);
/**
* Sets the position of the node.
*
* @param point
* The position
*/
public void setPosition(Point point);
/**
* Gets the position of the node.
*
* @return The position of the node.
*/
public Point getPosition();
/**
* Gets whether this node has a break point set in it.
*
* @return Whether execution should pause at this node
*/
public boolean isBreak();
/**
* Sets or removes a break point in this node
*
* @param breakVal
* whether to add or remove a break point
*/
public void setBreak(boolean breakVal);
/**
* Check to see if all the input pors are already connected
*
* @return
*/
public boolean isAllInPortsConnected();
/**
* @param fromPortID
*/
public DataPort getOutputPort(String fromPortID);
/**
* @param id
*/
public DataPort getInputPort(String id);
/**
* @param b
*/
public void setRequireJoin(boolean b);
/**
* @return
*/
public boolean getRequireJoin();
public NodeExecutionState getState();
public void setState(NodeExecutionState state);
// public void executeDynamically();
public void registerObserver(NodeObserver o);
public void removeObserver(NodeObserver o);
public static enum NodeUpdateType{
STATE_CHANGED,
OTHER
}
public static interface NodeObserver{
public void nodeUpdated(NodeUpdateType type);
}
}