public GlobalUniqueIndex ensureGlobalUniqueIndexExist(final Set<PropertyColumn> properties) { String globalUniqueIndexName = GlobalUniqueIndex.globalUniqueIndexName(this.topology, properties); Optional<GlobalUniqueIndex> globalIndexOptional = this.getGlobalUniqueIndex(globalUniqueIndexName); if (!globalIndexOptional.isPresent()) { //take any property properties.iterator().next().getParentLabel().getSchema().getTopology().lock(); globalIndexOptional = this.getGlobalUniqueIndex(globalUniqueIndexName); if (!globalIndexOptional.isPresent()) { GlobalUniqueIndex globalUniqueIndex = GlobalUniqueIndex.createGlobalUniqueIndex(this.sqlgGraph, this.topology, globalUniqueIndexName, properties); this.uncommittedGlobalUniqueIndexes.put(globalUniqueIndexName, globalUniqueIndex); this.getTopology().fire(globalUniqueIndex, "", TopologyChangeAction.CREATE); return globalUniqueIndex; } else { return globalIndexOptional.get(); } } else { return globalIndexOptional.get(); } }
public GlobalUniqueIndex ensureGlobalUniqueIndexExist(final Set<PropertyColumn> properties) { String globalUniqueIndexName = GlobalUniqueIndex.globalUniqueIndexName(this.topology, properties); Optional<GlobalUniqueIndex> globalIndexOptional = this.getGlobalUniqueIndex(globalUniqueIndexName); if (!globalIndexOptional.isPresent()) { //take any property properties.iterator().next().getParentLabel().getSchema().getTopology().lock(); globalIndexOptional = this.getGlobalUniqueIndex(globalUniqueIndexName); if (!globalIndexOptional.isPresent()) { GlobalUniqueIndex globalUniqueIndex = GlobalUniqueIndex.createGlobalUniqueIndex(this.sqlgGraph, this.topology, globalUniqueIndexName, properties); this.uncommittedGlobalUniqueIndexes.put(globalUniqueIndexName, globalUniqueIndex); this.getTopology().fire(globalUniqueIndex, "", TopologyChangeAction.CREATE); return globalUniqueIndex; } else { return globalIndexOptional.get(); } } else { return globalIndexOptional.get(); } }