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