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