// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
package graphtea.plugins.visualization.corebasics.basics;

import java.util.List;
import graphtea.graph.graph.Vertex;

import java.util.ArrayList;

/**
 * @author Rouzbeh Ebrahimi
 */
public class Cycle {
    ArrayList<Vertex> cycleVertices;
    boolean isCycleEnded;

    public Cycle(ArrayList<Vertex> cycleVertices) {
        int cycleSize = cycleVertices.size();
        if (cycleVertices.get(0).equals(cycleVertices.get(cycleSize))) {
            this.cycleVertices = cycleVertices;
            isCycleEnded = true;
        }
    }

    public Cycle() {
        cycleVertices = new ArrayList<>();
        isCycleEnded = false;
    }

    public void add(Vertex v) {
        this.cycleVertices.add(v);
    }

    public boolean endCycle(Vertex v) {
        if (this.cycleVertices.get(0).equals(v)) {
            this.cycleVertices.add(v);
            isCycleEnded = true;
            return true;
        } else {
            return false;
        }
    }

    public ArrayList<Vertex> getCycle() {
        if (isCycleEnded) return this.cycleVertices;
        else return null;
    }
}

