package graphtea.extensions.algorithms;

import java.util.List;
import graphtea.graph.graph.Edge;
import graphtea.graph.graph.GraphModel;
import graphtea.graph.graph.Vertex;
import graphtea.platform.core.BlackBoard;
import graphtea.plugins.algorithmanimator.core.GraphAlgorithm;
import graphtea.plugins.algorithmanimator.extension.AlgorithmExtension;

import java.util.ArrayList;
/**
 * author: rostam
 * author: azin
 */
public class CholeskyFactorizationExtension extends GraphAlgorithm implements AlgorithmExtension {
    public CholeskyFactorizationExtension(BlackBoard blackBoard) {
        super(blackBoard);
    }

    @Override
    public void doAlgorithm() {
        GraphModel g = graphData.getGraph();
        while(g.getEdgesCount() > 0) {
            Vertex v1 = requestVertex(g, "select a vertex");
            step("Clique on neighbours");
            List<Vertex> vs = new ArrayList<>(g.directNeighbors(v1));
            for(Vertex vv1 : vs)
                for(Vertex vv2 : vs)
                    g.addEdge(new Edge(vv1,vv2));

            g.removeVertex(v1);

       }

        Vertex v2 = requestVertex(g, "select the second vertex");
        step("check the first vertex");
        //v1.setColor(2);
        step("check the second vertex");
        //v2.setColor(3);
        step("do the shit<br>" + getMatrixHTML(g));
        //g.addEdge(new Edge(v1, v2));
        step("goodbye<br>" + getMatrixHTML(g));
    }

    @Override
    public String getName() {
        return "Cholesky";
    }

    @Override
    public String getDescription() {
        return "blah blah blah";
    }
}
