package models.objectOrientedTransfer;

import models.deltaAlgebra.ObjectNode;
import models.deltaAlgebra.ReferenceEdge;

import java.util.ArrayList;
import java.util.List;

public class ObjectHierarchy {
    private ObjectNode top;
    private List<ReferenceEdge> edges;
    private boolean isFlat = false;

    public ObjectHierarchy(ObjectNode top) {
        this.top = top;
        this.edges = new ArrayList<>();
        this.isFlat = true;
    }

    public ObjectHierarchy(List<ReferenceEdge> edges) {
        this.top = (ObjectNode) edges.getFirst().getSource();
        this.edges = edges;
        this.isFlat = false;
    }

    public ObjectNode getTop() {
        return top;
    }

    public List<ReferenceEdge> getEdges() {
        return edges;
    }

    public boolean isFlat() {
        return isFlat;
    }

    public int getDepth() {
        return edges.size();
    }

    public ReferenceEdge getEdge(int index) {
        return edges.get(index);
    }
}
