Commit 360ca992 authored by Matthew Dawson's avatar Matthew Dawson
Browse files

Completely replace CVC generation into the java side.

Now the full contents of the CVC3 file are generated inside of Java, but the
actual saving and running of CVC3 still happen inside of matlab.  For now.

git-svn-id: https://groke.mcmaster.ca/svn/grad/colin/branches/TableTool_javization@10651 57e6efec-57d4-0310-aeb1-a6c144bb1a8b
parent d2baf897
Loading
Loading
Loading
Loading
+55 −39
Original line number Diff line number Diff line
@@ -38,41 +38,49 @@ final public class HierarchicalGridCVC3Generator implements HierarchcialGridChec
        m_variableDefinitions = variableDefinitions;
    }

    private String generateQueryPrefix() {
        if (!m_parentCellsCVC3Code.isEmpty()){
            String output = "(";
            output += StringUtils.join(m_parentCellsCVC3Code, " AND ");
            output += ") => ";
            return output;
        }
        return "";
    }

    private void outputCells() {
        System.out.println("OUTPUT " + m_currentCompleteQueries.size());

        // First is disjoint testing.
        output += "ECHO \"begin" + m_currentTCC + "\";\n";
        output += "PUSH;\n";
        m_output += "ECHO \"begin" + m_currentTCC + "\";\n";
        m_output += "PUSH;\n";

        output += "QUERY (";
        if (!m_parentCellsCVC3Code.isEmpty()){
            output += StringUtils.join(m_parentCellsCVC3Code, " AND ");
            output += ") => (";
        }
        output += StringUtils.join(m_currentDisjointQueries, " AND\n");
        output += ");\n";
        String query = "QUERY ";
        query += generateQueryPrefix();
        query += "(" + StringUtils.join(m_currentDisjointQueries, " AND\n");
        query += ");";
        m_queries.add(query);
        m_output += query + "\n";

        output += "POP;\n";
        output += "ECHO \"end" + m_currentTCC + "\";\n";
        m_output += "POP;\n";
        m_output += "ECHO \"end" + m_currentTCC + "\";\n";

        // Finished first TCC, increment counter.
        m_currentTCC++;

        // Next is complete.
        output += "ECHO \"begin" + m_currentTCC + "\";\n";
        output += "PUSH;\n";
        m_output += "ECHO \"begin" + m_currentTCC + "\";\n";
        m_output += "PUSH;\n";

        output += "QUERY (";
        if (!m_parentCellsCVC3Code.isEmpty()){
            output += StringUtils.join(m_parentCellsCVC3Code, " AND ");
            output += ") => (";
        }
        output += StringUtils.join(m_currentCompleteQueries, " OR ");
        output += ");\n";
        query = "QUERY ";
        query += generateQueryPrefix();
        query += "(" + StringUtils.join(m_currentCompleteQueries, " OR ");
        query += ");";
        m_queries.add(query);
        m_output += query + "\n";

        output += "POP;\n";
        output += "ECHO \"end" + m_currentTCC + "\";\n";
        m_output += "POP;\n";
        m_output += "ECHO \"end" + m_currentTCC + "\";\n";

        // Finished other TCC, increment counter.
        m_currentTCC++;
@@ -126,7 +134,14 @@ final public class HierarchicalGridCVC3Generator implements HierarchcialGridChec
        if (m_currentlyRunning) {
            outputCells();
        }
        return output;
        return m_output;
    }

    public List<String> getFinalQueries() {
        if (m_currentlyRunning) {
            outputCells();
        }
        return m_queries;
    }

    Deque<String> m_parentCellsCVC3Code = new ArrayDeque<String>();
@@ -137,7 +152,8 @@ final public class HierarchicalGridCVC3Generator implements HierarchcialGridChec
    boolean m_currentlyRunning = true;
    int m_currentTCC = 1;

    String output = "";
    String m_output = "";
    List<String> m_queries = new ArrayList<String>();

    // To fix properly.
    VariableParser m_variableDefinitions;