Package edu.brown.designer

Examples of edu.brown.designer.DesignerVertex


        // traverse the likely
        // best candidate first, thereby pruning other branches more quickly
        final Map<Column, Double> column_weights = new HashMap<Column, Double>();
        // SortedMap<Double, Collection<Column>> weighted_columnsets = new
        // TreeMap<Double, Collection<Column>>(Collections.reverseOrder());
        DesignerVertex vertex = agraph.getVertex(catalog_tbl);
        assert (vertex != null) : "No vertex exists in AccesGraph for " + catalog_tbl;
        if (debug.val)
            LOG.debug("Retreiving edges for " + vertex + " from AccessGraph");
        Collection<DesignerEdge> edges = agraph.getIncidentEdges(vertex);
        if (edges == null) {
View Full Code Here


    public static ObjectHistogram<Column> generateProcedureColumnAccessHistogram(final DesignerInfo info, final DesignerHints hints, final AccessGraph agraph, final Procedure catalog_proc) throws Exception {
        if (debug.val)
            LOG.debug("Constructing column access histogram for " + catalog_proc.getName());
        ObjectHistogram<Column> column_histogram = new ObjectHistogram<Column>();
        for (Table catalog_tbl : CatalogUtil.getReferencedTables(catalog_proc)) {
            DesignerVertex v = agraph.getVertex(catalog_tbl);
            for (DesignerEdge e : agraph.getIncidentEdges(v)) {
                Collection<DesignerVertex> vertices = agraph.getVertices();
                if (vertices.size() != 1) {
                    DesignerVertex v0 = CollectionUtil.get(vertices, 0);
                    DesignerVertex v1 = CollectionUtil.get(vertices, 1);
                    if (v0.equals(v) && v1.equals(v))
                        continue;
                }

                double edge_weight = e.getTotalWeight();
                PredicatePairs predicates = e.getAttribute(AccessGraph.EdgeAttributes.COLUMNSET.name());
View Full Code Here

        this.setEnabled(true);
        this.element = edge;
       
        GraphVisualizationPanel<DesignerVertex, DesignerEdge> visualizer = this.parent.getCurrentVisualizer();
        IGraph<DesignerVertex, DesignerEdge> graph = (IGraph<DesignerVertex, DesignerEdge>)visualizer.getGraph();
        DesignerVertex source = null;
        DesignerVertex dest = null;
        if (graph.getEdgeType(edge) == EdgeType.DIRECTED) {
            source = graph.getSource(edge);
            dest = graph.getDest(edge);
        } else {
            ArrayList<DesignerVertex> vertices = new ArrayList<DesignerVertex>(graph.getIncidentVertices(edge));
            source = vertices.get(0);
            dest = vertices.get(1);
        }
       
        //
        // Reinitialize Edge Information
        //
        JPanel panel = new JPanel();
        panel.setLayout(new GridBagLayout());
        JLabel label = null;
       
        GridBagConstraints c = AbstractViewer.getConstraints();

        c.gridx = 0;
        c.gridy = 0;
        label = new JLabel("ID:");
        label.setFont(AbstractViewer.key_font);
        panel.add(label, c);

        c.gridx = 1;
        this.idLabel = new JLabel(source != null ? Integer.toString(edge.hashCode()) : "null");
        this.idLabel.setFont(AbstractViewer.value_font);
        panel.add(this.idLabel, c);
       
        c.gridx = 0;
        c.gridy++;
        label = new JLabel("Source:");
        label.setFont(AbstractViewer.key_font);
        panel.add(label, c);

        c.gridx = 1;
        this.sourceVertexLabel = new JLabel(source != null ? source.toString() : "null");
        this.sourceVertexLabel.setFont(AbstractViewer.value_font);
        panel.add(this.sourceVertexLabel, c);
       
        c.gridx = 0;
        c.gridy++;
        label = new JLabel("Destination:");
        label.setFont(AbstractViewer.key_font);
        panel.add(label, c);
       
        c.gridx = 1;
        this.destVertexLabel = new JLabel(dest != null ? dest.toString() : "null");
        this.destVertexLabel.setFont(AbstractViewer.value_font);
        panel.add(this.destVertexLabel, c);

        /*
        c.gridx = 0;
View Full Code Here

            @Override
            public void valueChanged(ListSelectionEvent e) {
                Table catalog_tbl = tables.get(partitonTable.getSelectedRow());
                GraphVisualizationPanel<DesignerVertex, DesignerEdge> visualizer = PartitionPlanPanel.this.parent.getCurrentVisualizer();
                IGraph<DesignerVertex, DesignerEdge> graph = (IGraph<DesignerVertex, DesignerEdge>)visualizer.getGraph();
                DesignerVertex vertex = graph.getVertex(catalog_tbl);
                visualizer.selectVertex(vertex);
                return;
            }
        });
       
View Full Code Here

        for (DesignerEdge e : orig_agraph.getEdges()) {
            // Split up the ColumnSet into separate edges, one per entry
            PredicatePairs cset = e.getAttribute(EdgeAttributes.COLUMNSET);
            assert (cset != null);
            Collection<DesignerVertex> vertices = orig_agraph.getIncidentVertices(e);
            DesignerVertex v0 = CollectionUtil.first(vertices);
            DesignerVertex v1 = v0;
            if (vertices.size() > 1)
                v1 = CollectionUtil.get(vertices, 1);
            assert (v1 != null);

            Table catalog_tbl0 = v0.getCatalogItem();
            assert (catalog_tbl0 != null);
            Table catalog_tbl1 = v1.getCatalogItem();
            assert (catalog_tbl1 != null);

            if (d)
                LOG.debug(String.format("%s <-> %s\n%s", v0, v1, cset));
View Full Code Here

            if (!cset.isEmpty()) {
                if (debug_table)
                    LOG.trace("Creating scan edge to " + table0 + " for " + catalog_stmt);
                // if (debug) if (d) LOG.debug("Scan Column SET[" +
                // table0.getName() + "]: " + cset.debug());
                DesignerVertex vertex = agraph.getVertex(table0);
                AccessType atype = (catalog_stmt.getQuerytype() == QueryType.INSERT.getValue() ? AccessType.INSERT : AccessType.SCAN);
                this.addEdge(agraph, atype, cset, vertex, vertex, catalog_stmt);
            }
            // --------------------------------------------------------------
        } // FOR
View Full Code Here

            } // FOR
        } // FOR

        // Now create the edges between the vertices
        for (Pair<CatalogType, CatalogType> table_pair : table_csets.keySet()) {
            DesignerVertex vertex0 = agraph.getVertex((Table) table_pair.getFirst());
            DesignerVertex vertex1 = agraph.getVertex((Table) table_pair.getSecond());
            PredicatePairs cset = table_csets.get(table_pair);

            if (t) {
                LOG.trace("Vertex0: " + vertex0.getCatalogKey());
                LOG.trace("Vertex1: " + vertex0.getCatalogKey());
View Full Code Here

     * @throws Exception
     */
    protected void createImplicitEdges(AccessGraph agraph, Collection<Table> proc_tables, Statement catalog_stmt0, Table catalog_tbl) throws Exception {
        // For each SCAN edge for this vertex, check whether the column has a
        // foreign key
        DesignerVertex vertex = agraph.getVertex(catalog_tbl);
        if (d) LOG.debug("Creating Implicit Edges for " + catalog_tbl);
        Collection<DesignerEdge> scanEdges = agraph.getIncidentEdges(vertex,
                                                                 AccessGraph.EdgeAttributes.ACCESSTYPE.name(),
                                                                 AccessType.SCAN);
        if (t) LOG.trace("\t" + catalog_tbl.getName() + " Incident Edges: " + scanEdges);
        for (DesignerEdge edge : scanEdges) {
            PredicatePairs scan_cset = (PredicatePairs) edge.getAttribute(AccessGraph.EdgeAttributes.COLUMNSET.name());
            if (t) LOG.trace("\tSCAN EDGE: " + edge); // + "\n" +
                                                   // scan_cset.debug());

            // For each table that our foreign keys reference, will construct a
            // ColumnSet mapping
            Map<Table, PredicatePairs> fkey_column_xrefs = new HashMap<Table, PredicatePairs>();
            if (t) LOG.trace("\tOUR COLUMNS: " + scan_cset.findAllForParent(Column.class, catalog_tbl));
            for (Column catalog_col : scan_cset.findAllForParent(Column.class, catalog_tbl)) {
                // Get the foreign key constraint for this column and then add
                // it to the ColumnSet
                Collection<Constraint> catalog_consts = CatalogUtil.getConstraints(catalog_col.getConstraints());
                catalog_consts = CatalogUtil.findAll(catalog_consts, "type", ConstraintType.FOREIGN_KEY.getValue());
                if (!catalog_consts.isEmpty()) {
                    assert (catalog_consts.size() == 1) : CatalogUtil.getDisplayName(catalog_col) + " has " + catalog_consts.size() + " foreign key constraints: " + catalog_consts;
                    Constraint catalog_const = CollectionUtil.first(catalog_consts);
                    Table catalog_fkey_tbl = catalog_const.getForeignkeytable();
                    assert (catalog_fkey_tbl != null);

                    // Important! We only want to include tables that are
                    // actually referenced in this procedure
                    if (proc_tables.contains(catalog_fkey_tbl)) {
                        Column catalog_fkey_col = CollectionUtil.first(catalog_const.getForeignkeycols()).getColumn();
                        assert (catalog_fkey_col != null);

                        // TODO: Use real ExpressionType from the entry
                        if (!fkey_column_xrefs.containsKey(catalog_fkey_tbl)) {
                            fkey_column_xrefs.put(catalog_fkey_tbl, new PredicatePairs());
                        }
                        // if (debug) System.err.println("Foreign Keys: " +
                        // CollectionUtil.getFirst(catalog_const.getForeignkeycols()).getColumn());
                        // if (debug) System.err.println("catalog_fkey_tbl: " +
                        // catalog_fkey_tbl);
                        // if (debug) System.err.println("catalog_col: " +
                        // catalog_col);
                        // if (debug) System.err.println("catalog_fkey_col: " +
                        // catalog_fkey_col);
                        // if (debug) System.err.println("fkey_column_xrefs: " +
                        // fkey_column_xrefs.get(catalog_fkey_tbl));
                        fkey_column_xrefs.get(catalog_fkey_tbl).add(catalog_col, catalog_fkey_col, ExpressionType.COMPARE_EQUAL);
                    } else {
                        if (t) LOG.trace("\tSkipping Implict Reference Join for " + catalog_fkey_tbl + " because it is not used in " + this.catalog_proc);
                    }
                } else if (t) {
                    LOG.warn("\tNo foreign keys found for " + catalog_col.fullName());
                }
            } // FOR

            // Now for each table create an edge from our table to the table
            // referenced in the foreign
            // key using all the columdns referenced by in the SCAN predicates
            for (Table catalog_fkey_tbl : fkey_column_xrefs.keySet()) {
                DesignerVertex other_vertex = agraph.getVertex(catalog_fkey_tbl);
                PredicatePairs implicit_cset = fkey_column_xrefs.get(catalog_fkey_tbl);
                if (t)
                    LOG.trace("\t" + catalog_tbl + "->" + catalog_fkey_tbl + "\n" + implicit_cset.debug());
                Collection<DesignerEdge> edges = agraph.findEdgeSet(vertex, other_vertex);
                if (edges.isEmpty()) {
View Full Code Here

     */
    protected DesignerEdge addEdge(AccessGraph agraph, AccessType access_type, PredicatePairs cset, DesignerVertex v0, DesignerVertex v1, Statement... catalog_stmts) {

        // Sort the vertices by their CatalogTypes
        if (v0.getCatalogItem().compareTo(v1.getCatalogItem()) > 0) {
            DesignerVertex temp = v0;
            v0 = v1;
            v1 = temp;
        }

        String stmts_debug = "";
View Full Code Here

    public void generate(AbstractDirectedGraph<DesignerVertex, DesignerEdge> graph) throws Exception {
        Collection<Table> catalog_tables = info.catalogContext.getDataTables();
        for (Table catalog_table : catalog_tables) {
            assert (catalog_table.getSystable() == false) : "Unexpected " + catalog_table;
            graph.addVertex(new DesignerVertex(catalog_table));
        } // FOR

        //
        // We first need to generate the list of candidate root tables
        // These are the tables that do not have any foreign key references
        //
        Map<DesignerVertex, List<Column>> fkey_ref_cols = new HashMap<DesignerVertex, List<Column>>();
        Map<DesignerVertex, List<Constraint>> fkey_ref_consts = new HashMap<DesignerVertex, List<Constraint>>();
        for (Table catalog_table : catalog_tables) {
            DesignerVertex vertex = graph.getVertex(catalog_table);
            fkey_ref_cols.put(vertex, new ArrayList<Column>());
            fkey_ref_consts.put(vertex, new ArrayList<Constraint>());

            LOG.debug("Inspecting table '" + catalog_table.getName() + "'");

            //
            // Constraints
            //
            for (Constraint catalog_const : catalog_table.getConstraints()) {
                //
                // Foreign Key Constraint
                //
                if (catalog_const.getType() == ConstraintType.FOREIGN_KEY.getValue()) {
                    if (catalog_const.getForeignkeytable() == null) {
                        throw new Exception("ERROR: The table is null for foreign key constraint '" + catalog_const + "' for table '" + catalog_table + "'");
                    } else if (catalog_const.getForeignkeycols().isEmpty()) {
                        throw new Exception("ERROR: The list of columns are empty for foreign key constraint '" + catalog_const + "' for table '" + catalog_table + "'");
                    }
                    for (ColumnRef catalog_col_ref : catalog_const.getForeignkeycols()) {
                        fkey_ref_cols.get(vertex).add(catalog_col_ref.getColumn());
                    } // FOR
                    fkey_ref_consts.get(vertex).add(catalog_const);
                }
            } // FOR
              //
              // Columns ????????
              //
              // for (Column catalog_col : catalog_table.getColumns()) {
            // LOG.debug("Inspecting column '" + catalog_col.getName() +
            // "' in table '" + catalog_table.getName() + "'");
            // } // FOR
        } // FOR
          //
          // Build the dependency graph's edges
          //
        for (Table catalog_table : catalog_tables) {
            // For each vertex, get the list of foreign key references to point
            // to it and
            // make a new edge between the parent and child
            DesignerVertex vertex = graph.getVertex(catalog_table);
            for (int ctr = 0, cnt = fkey_ref_consts.get(vertex).size(); ctr < cnt; ctr++) {
                Constraint catalog_const = fkey_ref_consts.get(vertex).get(ctr);
                Column catalog_col = fkey_ref_cols.get(vertex).get(ctr);

                //
                // Grab the table object used in this foreign key constraint
                // We then get the vertex that we're using to represent it
                //
                Table catalog_fkey_table = catalog_const.getForeignkeytable();
                DesignerVertex other_vertex = graph.getVertex(catalog_fkey_table);
                if (other_vertex == null) {
                    throw new Exception("ERROR: The constraint '" + catalog_const + "' on '" + vertex + "' uses an unknown table '" + catalog_fkey_table.getName() + "'");
                }
                PredicatePairs cset = new PredicatePairs();
                // FIXME cset.add(catalog_const.getFkeycolumn, catalog_col);
View Full Code Here

TOP

Related Classes of edu.brown.designer.DesignerVertex

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.