@Override
    public void execute(GraphModel graphModel) {
        isCanceled = false;

        UndirectedGraph undirectedGraph = graphModel.getUndirectedGraphVisible();

        Column weaklyConnectedColumn = initializeWeaklyConnectedColumn(graphModel);
        Column stronglyConnectedColumn = null;
        if (isDirected) {
            stronglyConnectedColumn = initializeStronglyConnectedColumn(graphModel);
        }

        undirectedGraph.readLock();
        try {
            weaklyConnected(undirectedGraph, weaklyConnectedColumn);
            if (isDirected) {
                DirectedGraph directedGraph = graphModel.getDirectedGraphVisible();
                stronglyConnected(directedGraph, graphModel, stronglyConnectedColumn);
            }
        } finally {
            undirectedGraph.readUnlock();
        }
    }
@Test
    public void testColumnCreation() {
        GraphModel graphModel = GraphGenerator.generateNullUndirectedGraph(1);

        ConnectedComponents cc = new ConnectedComponents();
        cc.execute(graphModel);

        Assert.assertTrue(graphModel.getNodeTable().hasColumn(ConnectedComponents.WEAKLY));
    }