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