package com.zillabyte.motherbrain.flow.graph;
import java.io.Serializable;
import com.zillabyte.motherbrain.flow.operations.Operation;
/****
* Represents all the connections inf a component/app
* @author jake
*
*/
public final class Connection implements Serializable {
/**
*
*/
private final FlowGraph flowGraph;
private static final long serialVersionUID = 5667910218342408671L;
final public static Integer DEFAULT_MAX_ITER = 100;
private final String _sourceId;
private final String _destId;
private final String _streamName;
private Boolean _loopBack = Boolean.FALSE;
private int _maxIter = DEFAULT_MAX_ITER;
public Connection(FlowGraph flowGraph, Operation source, Operation dest, String name, Boolean loopBack, Integer maxIter) {
this.flowGraph = flowGraph;
_sourceId = source.namespaceName();
_destId = dest.namespaceName();
_streamName = name;
_loopBack = loopBack;
_maxIter = Math.min(maxIter, DEFAULT_MAX_ITER);
}
public Connection(FlowGraph flowGraph, Operation source, Operation dest, String name) {
this(flowGraph, source, dest, name, false, 0);
}
public String destId() {
return _destId;
}
public String sourceId() {
return _sourceId;
}
public Boolean loopBack() {
return _loopBack;
}
public String streamName() {
return _streamName;
}
public Integer maxIterations() {
return _maxIter;
}
public Operation source() {
final Operation source = this.flowGraph.getById(_sourceId);
assert (source != null);
return source;
}
public Operation dest() {
final Operation dest = this.flowGraph.getById(_destId);
assert (dest != null);
return dest;
}
}