Newer
Older
DesignCraft / src / main / java / models / deltaAlgebra / PrimitivePushDelta.java
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());
	}
}