package edu.brown.designer; import java.util.HashSet; import java.util.Set; import org.voltdb.catalog.Database; import org.voltdb.catalog.Procedure; import org.voltdb.types.PartitionMethodType; import edu.brown.graphs.AbstractDirectedTree; /** * @author Andy Pavlo <pavlo@cs.brown.edu> */ public class PartitionTree extends AbstractDirectedTree<DesignerVertex, DesignerEdge> { private static final long serialVersionUID = -7005176921187161150L; public enum EdgeAttributes { CONSTRAINT, WEIGHT, } public enum VertexAttributes { REMOVED, ATTRIBUTE, PARENT_ATTRIBUTE, METHOD, } private Double weight = 0.0; private final Set<Procedure> procedures = new HashSet<Procedure>(); public PartitionTree(Database catalog_db) { super(catalog_db); } public DesignerEdge createEdge(DesignerVertex parent, DesignerVertex child, DesignerEdge orig_edge) { DesignerEdge new_edge = new DesignerEdge(this, orig_edge); this.addEdge(new_edge, parent, child); this.addVertex(child); return (new_edge); } public Set<Procedure> getProcedures() { return this.procedures; } public Double getWeight() { return this.weight; } public void setWeight(Double weight) { this.weight = weight; } public boolean isReplicated(DesignerVertex vertex) { assert (vertex != null); if (vertex.hasAttribute(this, VertexAttributes.METHOD.name())) { return (vertex.getAttribute(this, VertexAttributes.METHOD.name()).equals(PartitionMethodType.REPLICATION)); } return (false); } }