public static ForeignKey of(String key) { return new ForeignKey(key); }
public Map<String, Set<String>> getAllEdgeForeignKeys() { Map<String, Set<String>> result = new HashMap<>(); Map<String, Set<ForeignKey>> allEdgeForiegnKeys = getEdgeForeignKeys(); for (Map.Entry<String, Set<ForeignKey>> stringSetEntry : allEdgeForiegnKeys.entrySet()) { String key = stringSetEntry.getKey(); Set<ForeignKey> foreignKeys = stringSetEntry.getValue(); Set<String> foreignKeySet = new HashSet<>(); result.put(key, foreignKeySet); for (ForeignKey foreignKey : foreignKeys) { foreignKeySet.add(foreignKey.getCompositeKeys().get(0)); } } return result; }
if (!this.uncommittedRemovedInVertexLabels.contains(vertexLabel)) { if (vertexLabel.hasIDPrimaryKey()) { result.add(ForeignKey.of(vertexLabel.getFullName() + Topology.IN_VERTEX_COLUMN_END)); } else { ForeignKey foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { if (!vertexLabel.isDistributed() || !vertexLabel.getDistributionPropertyColumn().getName().equals(identifier)) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + Topology.IN_VERTEX_COLUMN_END); if (!this.uncommittedRemovedOutVertexLabels.contains(vertexLabel)) { if (vertexLabel.hasIDPrimaryKey()) { result.add(ForeignKey.of(vertexLabel.getFullName() + Topology.OUT_VERTEX_COLUMN_END)); } else { ForeignKey foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { if (!vertexLabel.isDistributed() || !vertexLabel.getDistributionPropertyColumn().getName().equals(identifier)) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + Topology.OUT_VERTEX_COLUMN_END);
String foreignKeySchema = foreignKey.getSchemaTable().getSchema(); String foreignKeyTable = foreignKey.getSchemaTable().getTable(); if ((direction == Direction.BOTH || direction == Direction.OUT) && foreignKey.isOut()) { SchemaTable schemaTable = SchemaTable.of(foreignKeySchema, VERTEX_PREFIX + SqlgUtil.removeTrailingOutId(foreignKeyTable)); if (passesLabelHasContainers(this.topology.getSqlgGraph(), true, schemaTable.toString())) { if ((direction == Direction.BOTH || direction == Direction.IN) && foreignKey.isIn()) { SchemaTable schemaTable = SchemaTable.of(foreignKeySchema, VERTEX_PREFIX + SqlgUtil.removeTrailingInId(foreignKeyTable)); if (passesLabelHasContainers(this.topology.getSqlgGraph(), true, schemaTable.toString())) {
private static void printEdgeInOutVertexIdFromClauseFor(SqlgGraph sqlgGraph, SchemaTableTree firstSchemaTableTree, SchemaTableTree lastSchemaTableTree, ColumnList cols) { Preconditions.checkState(lastSchemaTableTree.getSchemaTable().isEdgeTable()); Set<ForeignKey> edgeForeignKeys = sqlgGraph.getTopology().getEdgeForeignKeys().get(lastSchemaTableTree.getSchemaTable().toString()); for (ForeignKey edgeForeignKey : edgeForeignKeys) { if (firstSchemaTableTree == null || !firstSchemaTableTree.equals(lastSchemaTableTree) || firstSchemaTableTree.getDirection() != edgeForeignKey.getDirection()) { for (String foreignKey : edgeForeignKey.getCompositeKeys()) { String alias = lastSchemaTableTree.calculateAliasPropertyName(foreignKey); cols.addForeignKey(lastSchemaTableTree, foreignKey, alias); } } } }
if (!this.uncommittedRemovedInVertexLabels.contains(vertexLabel)) { if (vertexLabel.hasIDPrimaryKey()) { result.add(ForeignKey.of(vertexLabel.getFullName() + Topology.IN_VERTEX_COLUMN_END)); } else { ForeignKey foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { if (!vertexLabel.isDistributed() || !vertexLabel.getDistributionPropertyColumn().getName().equals(identifier)) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + Topology.IN_VERTEX_COLUMN_END); if (!this.uncommittedRemovedOutVertexLabels.contains(vertexLabel)) { if (vertexLabel.hasIDPrimaryKey()) { result.add(ForeignKey.of(vertexLabel.getFullName() + Topology.OUT_VERTEX_COLUMN_END)); } else { ForeignKey foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { if (!vertexLabel.isDistributed() || !vertexLabel.getDistributionPropertyColumn().getName().equals(identifier)) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + Topology.OUT_VERTEX_COLUMN_END);
String foreignKeySchema = foreignKey.getSchemaTable().getSchema(); String foreignKeyTable = foreignKey.getSchemaTable().getTable(); if ((direction == Direction.BOTH || direction == Direction.OUT) && foreignKey.isOut()) { SchemaTable schemaTable = SchemaTable.of(foreignKeySchema, VERTEX_PREFIX + SqlgUtil.removeTrailingOutId(foreignKeyTable)); if (passesLabelHasContainers(this.topology.getSqlgGraph(), true, schemaTable.toString())) { if ((direction == Direction.BOTH || direction == Direction.IN) && foreignKey.isIn()) { SchemaTable schemaTable = SchemaTable.of(foreignKeySchema, VERTEX_PREFIX + SqlgUtil.removeTrailingInId(foreignKeyTable)); if (passesLabelHasContainers(this.topology.getSqlgGraph(), true, schemaTable.toString())) {
private static void printEdgeInOutVertexIdFromClauseFor(SqlgGraph sqlgGraph, SchemaTableTree firstSchemaTableTree, SchemaTableTree lastSchemaTableTree, ColumnList cols) { Preconditions.checkState(lastSchemaTableTree.getSchemaTable().isEdgeTable()); Set<ForeignKey> edgeForeignKeys = sqlgGraph.getTopology().getEdgeForeignKeys().get(lastSchemaTableTree.getSchemaTable().toString()); for (ForeignKey edgeForeignKey : edgeForeignKeys) { if (firstSchemaTableTree == null || !firstSchemaTableTree.equals(lastSchemaTableTree) || firstSchemaTableTree.getDirection() != edgeForeignKey.getDirection()) { for (String foreignKey : edgeForeignKey.getCompositeKeys()) { String alias = lastSchemaTableTree.calculateAliasPropertyName(foreignKey); cols.addForeignKey(lastSchemaTableTree, foreignKey, alias); } } } }
if (!this.getSchema().getTopology().isSqlWriteLockHeldByCurrentThread() || !this.uncommittedRemovedInVertexLabels.contains(vertexLabel)) { if (vertexLabel.hasIDPrimaryKey()) { result.add(ForeignKey.of(vertexLabel.getFullName() + Topology.IN_VERTEX_COLUMN_END)); } else { ForeignKey foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { if (!vertexLabel.isDistributed() || !vertexLabel.getDistributionPropertyColumn().getName().equals(identifier)) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + Topology.IN_VERTEX_COLUMN_END); if (!this.getSchema().getTopology().isSqlWriteLockHeldByCurrentThread() || !this.uncommittedRemovedOutVertexLabels.contains(vertexLabel)) { if (vertexLabel.hasIDPrimaryKey()) { result.add(ForeignKey.of(vertexLabel.getFullName() + Topology.OUT_VERTEX_COLUMN_END)); } else { ForeignKey foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { if (!vertexLabel.isDistributed() || !vertexLabel.getDistributionPropertyColumn().getName().equals(identifier)) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + Topology.OUT_VERTEX_COLUMN_END);
if (foreignKey.isOut()) { String foreignKeySchema = foreignKey.getSchemaTable().getSchema(); String foreignKeyTable = foreignKey.getSchemaTable().getTable(); SchemaTable schemaTableTo = SchemaTable.of(foreignKeySchema, VERTEX_PREFIX + SqlgUtil.removeTrailingOutId(foreignKeyTable)); if (schemaTables.add(schemaTableTo) && passesLabelHasContainers(this.topology.getSqlgGraph(), true, schemaTableTo.toString())) { if (foreignKey.isIn()) { String foreignKeySchema = foreignKey.getSchemaTable().getSchema(); String foreignKeyTable = foreignKey.getSchemaTable().getTable(); SchemaTable schemaTableTo = SchemaTable.of(foreignKeySchema, VERTEX_PREFIX + SqlgUtil.removeTrailingInId(foreignKeyTable)); if (passesLabelHasContainers(this.topology.getSqlgGraph(), true, schemaTableTo.toString())) {
public Map<String, Set<String>> getAllEdgeForeignKeys() { Map<String, Set<String>> result = new HashMap<>(); Map<String, Set<ForeignKey>> allEdgeForiegnKeys = getEdgeForeignKeys(); for (Map.Entry<String, Set<ForeignKey>> stringSetEntry : allEdgeForiegnKeys.entrySet()) { String key = stringSetEntry.getKey(); Set<ForeignKey> foreignKeys = stringSetEntry.getValue(); Set<String> foreignKeySet = new HashSet<>(); result.put(key, foreignKeySet); for (ForeignKey foreignKey : foreignKeys) { foreignKeySet.add(foreignKey.getCompositeKeys().get(0)); } } return result; }
public static ForeignKey of(String key) { return new ForeignKey(key); }
if (!this.getSchema().getTopology().isSqlWriteLockHeldByCurrentThread() || !this.uncommittedRemovedInVertexLabels.contains(vertexLabel)) { if (vertexLabel.hasIDPrimaryKey()) { result.add(ForeignKey.of(vertexLabel.getFullName() + Topology.IN_VERTEX_COLUMN_END)); } else { ForeignKey foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { if (!vertexLabel.isDistributed() || !vertexLabel.getDistributionPropertyColumn().getName().equals(identifier)) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + Topology.IN_VERTEX_COLUMN_END); if (!this.getSchema().getTopology().isSqlWriteLockHeldByCurrentThread() || !this.uncommittedRemovedOutVertexLabels.contains(vertexLabel)) { if (vertexLabel.hasIDPrimaryKey()) { result.add(ForeignKey.of(vertexLabel.getFullName() + Topology.OUT_VERTEX_COLUMN_END)); } else { ForeignKey foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { if (!vertexLabel.isDistributed() || !vertexLabel.getDistributionPropertyColumn().getName().equals(identifier)) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + Topology.OUT_VERTEX_COLUMN_END);
if (foreignKey.isOut()) { String foreignKeySchema = foreignKey.getSchemaTable().getSchema(); String foreignKeyTable = foreignKey.getSchemaTable().getTable(); SchemaTable schemaTableTo = SchemaTable.of(foreignKeySchema, VERTEX_PREFIX + SqlgUtil.removeTrailingOutId(foreignKeyTable)); if (schemaTables.add(schemaTableTo) && passesLabelHasContainers(this.topology.getSqlgGraph(), true, schemaTableTo.toString())) { if (foreignKey.isIn()) { String foreignKeySchema = foreignKey.getSchemaTable().getSchema(); String foreignKeyTable = foreignKey.getSchemaTable().getTable(); SchemaTable schemaTableTo = SchemaTable.of(foreignKeySchema, VERTEX_PREFIX + SqlgUtil.removeTrailingInId(foreignKeyTable)); if (passesLabelHasContainers(this.topology.getSqlgGraph(), true, schemaTableTo.toString())) {
private void printLabeledEdgeInOutVertexIdFromClauseFor(ColumnList cols) { Preconditions.checkState(this.getSchemaTable().isEdgeTable()); Set<ForeignKey> edgeForeignKeys = this.sqlgGraph.getTopology().getEdgeForeignKeys().get(this.getSchemaTable().toString()); for (ForeignKey edgeForeignKey : edgeForeignKeys) { for (String foreignKey : edgeForeignKey.getCompositeKeys()) { String alias = cols.getAlias(this.getSchemaTable(), foreignKey, this.stepDepth); if (alias == null) { cols.addForeignKey(this, foreignKey, this.calculateLabeledAliasPropertyName(foreignKey)); } else { this.calculateLabeledAliasPropertyName(foreignKey, alias); } } } }
ForeignKey foreignKey; if (hasIDPrimaryKey()) { foreignKey = ForeignKey.of(this.getFullName() + Topology.OUT_VERTEX_COLUMN_END); } else { foreignKey = new ForeignKey(); for (String identifier : this.getIdentifiers()) { foreignKey.add(this.getFullName() + "." + identifier + Topology.OUT_VERTEX_COLUMN_END); ForeignKey foreignKey; if (this.hasIDPrimaryKey()) { foreignKey = ForeignKey.of(this.getFullName() + Topology.IN_VERTEX_COLUMN_END); } else { foreignKey = new ForeignKey(); for (String identifier : this.getIdentifiers()) { foreignKey.add(this.getFullName() + "." + identifier + Topology.IN_VERTEX_COLUMN_END);
private void printLabeledEdgeInOutVertexIdFromClauseFor(ColumnList cols) { Preconditions.checkState(this.getSchemaTable().isEdgeTable()); Set<ForeignKey> edgeForeignKeys = this.sqlgGraph.getTopology().getEdgeForeignKeys().get(this.getSchemaTable().toString()); for (ForeignKey edgeForeignKey : edgeForeignKeys) { for (String foreignKey : edgeForeignKey.getCompositeKeys()) { String alias = cols.getAlias(this.getSchemaTable(), foreignKey, this.stepDepth); if (alias == null) { cols.addForeignKey(this, foreignKey, this.calculateLabeledAliasPropertyName(foreignKey)); } else { this.calculateLabeledAliasPropertyName(foreignKey, alias); } } } }
ForeignKey foreignKey; if (hasIDPrimaryKey()) { foreignKey = ForeignKey.of(this.getFullName() + Topology.OUT_VERTEX_COLUMN_END); } else { foreignKey = new ForeignKey(); for (String identifier : this.getIdentifiers()) { foreignKey.add(this.getFullName() + "." + identifier + Topology.OUT_VERTEX_COLUMN_END); ForeignKey foreignKey; if (this.hasIDPrimaryKey()) { foreignKey = ForeignKey.of(this.getFullName() + Topology.IN_VERTEX_COLUMN_END); } else { foreignKey = new ForeignKey(); for (String identifier : this.getIdentifiers()) { foreignKey.add(this.getFullName() + "." + identifier + Topology.IN_VERTEX_COLUMN_END);
foreignKey = ForeignKey.of(vertexLabel.getFullName() + OUT_VERTEX_COLUMN_END); } else { foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + OUT_VERTEX_COLUMN_END); foreignKey = ForeignKey.of(vertexLabel.getFullName() + IN_VERTEX_COLUMN_END); } else { foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + IN_VERTEX_COLUMN_END);
foreignKey = ForeignKey.of(vertexLabel.getFullName() + OUT_VERTEX_COLUMN_END); } else { foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + OUT_VERTEX_COLUMN_END); foreignKey = ForeignKey.of(vertexLabel.getFullName() + IN_VERTEX_COLUMN_END); } else { foreignKey = new ForeignKey(); for (String identifier : vertexLabel.getIdentifiers()) { foreignKey.add(vertexLabel.getFullName() + "." + identifier + IN_VERTEX_COLUMN_END);