private boolean hasOnlyOneInOutEdgeLabel(SchemaTable schemaTable) { Optional<Schema> schemaOptional = sqlgGraph.getTopology().getSchema(schemaTable.getSchema()); Preconditions.checkState(schemaOptional.isPresent(), "BUG: %s not found in the topology.", schemaTable.getSchema()); Schema schema = schemaOptional.get(); boolean result = true; if (schemaTable.isVertexTable()) { //Need to delete any in/out edges. Optional<VertexLabel> vertexLabelOptional = schema.getVertexLabel(schemaTable.withOutPrefix().getTable()); Preconditions.checkState(vertexLabelOptional.isPresent(), "BUG: %s not found in the topology.", schemaTable.withOutPrefix().getTable()); VertexLabel vertexLabel = vertexLabelOptional.get(); Collection<EdgeLabel> outEdgeLabels = vertexLabel.getOutEdgeLabels().values(); for (EdgeLabel edgeLabel : outEdgeLabels) { result = edgeLabel.getOutVertexLabels().size() == 1; if (!result) { break; } } if (result) { Collection<EdgeLabel> inEdgeLabels = vertexLabel.getInEdgeLabels().values(); for (EdgeLabel edgeLabel : inEdgeLabels) { result = edgeLabel.getInVertexLabels().size() == 1; if (!result) { break; } } } } return result; }
private boolean hasOnlyOneInOutEdgeLabel(SchemaTable schemaTable) { Optional<Schema> schemaOptional = sqlgGraph.getTopology().getSchema(schemaTable.getSchema()); Preconditions.checkState(schemaOptional.isPresent(), "BUG: %s not found in the topology.", schemaTable.getSchema()); Schema schema = schemaOptional.get(); boolean result = true; if (schemaTable.isVertexTable()) { //Need to delete any in/out edges. Optional<VertexLabel> vertexLabelOptional = schema.getVertexLabel(schemaTable.withOutPrefix().getTable()); Preconditions.checkState(vertexLabelOptional.isPresent(), "BUG: %s not found in the topology.", schemaTable.withOutPrefix().getTable()); VertexLabel vertexLabel = vertexLabelOptional.get(); Collection<EdgeLabel> outEdgeLabels = vertexLabel.getOutEdgeLabels().values(); for (EdgeLabel edgeLabel : outEdgeLabels) { result = edgeLabel.getOutVertexLabels().size() == 1; if (!result) { break; } } if (result) { Collection<EdgeLabel> inEdgeLabels = vertexLabel.getInEdgeLabels().values(); for (EdgeLabel edgeLabel : inEdgeLabels) { result = edgeLabel.getInVertexLabels().size() == 1; if (!result) { break; } } } } return result; }
for (VertexLabel lbl : edgeLabel.getInVertexLabels()) { if (edgeLabel.isValid()) { lbl.inEdgeLabels.remove(edgeLabel.getFullName());
for (VertexLabel lbl : edgeLabel.getInVertexLabels()) { if (edgeLabel.isValid()) { lbl.inEdgeLabels.remove(edgeLabel.getFullName());
sql.append(this.sqlgGraph.getSqlDialect().maybeWrapInQoutes(vertexLabel.getSchema().getName() + "." + vertexLabel.getName() + Topology.OUT_VERTEX_COLUMN_END)); for (VertexLabel vertexLabel : edgeLabel.getInVertexLabels()) { sql.append(", "); sql.append(this.sqlgGraph.getSqlDialect().maybeWrapInQoutes(vertexLabel.getSchema().getName() + "." + vertexLabel.getName() + Topology.IN_VERTEX_COLUMN_END));
sql.append(this.sqlgGraph.getSqlDialect().maybeWrapInQoutes(vertexLabel.getSchema().getName() + "." + vertexLabel.getName() + Topology.OUT_VERTEX_COLUMN_END)); for (VertexLabel vertexLabel : edgeLabel.getInVertexLabels()) { sql.append(", "); sql.append(this.sqlgGraph.getSqlDialect().maybeWrapInQoutes(vertexLabel.getSchema().getName() + "." + vertexLabel.getName() + Topology.IN_VERTEX_COLUMN_END));
/** * remove a given edge label * * @param edgeLabel the edge label * @param preserveData should we keep the SQL data */ void removeEdgeLabel(EdgeLabel edgeLabel, boolean preserveData) { getTopology().lock(); String fn = this.name + "." + EDGE_PREFIX + edgeLabel.getName(); if (!uncommittedRemovedEdgeLabels.contains(fn)) { uncommittedRemovedEdgeLabels.add(fn); TopologyManager.removeEdgeLabel(this.sqlgGraph, edgeLabel); for (VertexLabel lbl : edgeLabel.getOutVertexLabels()) { lbl.removeOutEdge(edgeLabel); } for (VertexLabel lbl : edgeLabel.getInVertexLabels()) { lbl.removeInEdge(edgeLabel); } if (!preserveData) { edgeLabel.delete(); } getTopology().fire(edgeLabel, "", TopologyChangeAction.DELETE); } }
/** * remove a given edge label * * @param edgeLabel the edge label * @param preserveData should we keep the SQL data */ void removeEdgeLabel(EdgeLabel edgeLabel, boolean preserveData) { getTopology().lock(); String fn = this.name + "." + EDGE_PREFIX + edgeLabel.getName(); if (!uncommittedRemovedEdgeLabels.contains(fn)) { uncommittedRemovedEdgeLabels.add(fn); TopologyManager.removeEdgeLabel(this.sqlgGraph, edgeLabel); for (VertexLabel lbl : edgeLabel.getOutVertexLabels()) { lbl.removeOutEdge(edgeLabel); } for (VertexLabel lbl : edgeLabel.getInVertexLabels()) { lbl.removeInEdge(edgeLabel); } if (!preserveData) { edgeLabel.delete(); } getTopology().fire(edgeLabel, "", TopologyChangeAction.DELETE); } }
throw new IllegalStateException("BOTH is not a supported direction"); case IN: ers = er.getEdgeLabel().getInVertexLabels(); break; case OUT:
throw new IllegalStateException("BOTH is not a supported direction"); case IN: ers = er.getEdgeLabel().getInVertexLabels(); break; case OUT:
Set<ForeignKey> getAllEdgeForeignKeys() { Set<ForeignKey> result = new HashSet<>(); for (VertexLabel vertexLabel : this.getInVertexLabels()) { if (!this.getSchema().getTopology().isSqlWriteLockHeldByCurrentThread() || !this.uncommittedRemovedInVertexLabels.contains(vertexLabel)) { if (vertexLabel.hasIDPrimaryKey()) {
Set<ForeignKey> getAllEdgeForeignKeys() { Set<ForeignKey> result = new HashSet<>(); for (VertexLabel vertexLabel : this.getInVertexLabels()) { if (!this.getSchema().getTopology().isSqlWriteLockHeldByCurrentThread() || !this.uncommittedRemovedInVertexLabels.contains(vertexLabel)) { if (vertexLabel.hasIDPrimaryKey()) {