package models.deltaAlgebra;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class PrimitivePullPushDelta extends PrimitiveDelta {
private ReferenceEdge pullEdge = null;
private ReferenceEdge pushEdge = null;
public PrimitivePullPushDelta(ReferenceEdge pullEdge, ReferenceEdge pushEdge, String dataName) {
super(dataName);
this.pullEdge = pullEdge;
this.pushEdge = pushEdge;
}
@Override
public ObjectNode getCoordinator() {
return (ObjectNode) pushEdge.getSource();
}
@Override
public List<ReferenceEdge> getPullEdges() {
List<ReferenceEdge> pullEdges = new ArrayList<>();
pullEdges.add(pullEdge);
return pullEdges;
}
@Override
public List<ReferenceEdge> getPushEdges() {
List<ReferenceEdge> pushEdges = new ArrayList<>();
pushEdges.add(pushEdge);
return pushEdges;
}
@Override
public ReferenceEdge getDefinedEdge() {
return new ReferenceEdge((ObjectNode) pullEdge.getDestination(), (ObjectNode) pushEdge.getDestination(), dataName, pullEdge.getMultiplicity());
}
@Override
public ObjectNode getDataType() {
return (ObjectNode) pullEdge.getDestination();
}
public ReferenceEdge getPullEdge() {
return pullEdge;
}
public ReferenceEdge getPushEdge() {
return pushEdge;
}
@Override
public PrimitivePullPushDelta copy() {
return new PrimitivePullPushDelta(pullEdge, pushEdge, dataName);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || !(o instanceof PrimitivePullPushDelta)) return false;
PrimitivePullPushDelta another = (PrimitivePullPushDelta) o;
return pullEdge.equals(another.pullEdge) && pushEdge.equals(another.pushEdge);
}
@Override
public int hashCode() {
return Objects.hash(pullEdge.hashCode(), pushEdge.hashCode());
}
}