protected void buildSequence()

in google-cloud-spanner-hibernate-tools/src/main/java/com/google/cloud/spanner/hibernate/BitReversedSequenceStructure.java [92:126]


  protected void buildSequence(Database database) {
    Sequence sequence;
    Optional<AuxiliaryDatabaseObject> existing =
        database.getAuxiliaryDatabaseObjects().stream()
            .filter(aux -> aux.getExportIdentifier().equals(qualifiedSequenceName.render()))
            .findAny();
    if (existing.isPresent()) {
      sequence = ((BitReversedSequenceAuxiliaryDatabaseObject) existing.get()).sequence;
    } else {
      final Namespace namespace =
          database.locateNamespace(
              qualifiedSequenceName.getCatalogName(), qualifiedSequenceName.getSchemaName());
      sequence =
          namespace.createSequence(
              qualifiedSequenceName.getObjectName(),
              (physicalName) ->
                  new Sequence(
                      contributor,
                      namespace.getPhysicalName().getCatalog(),
                      namespace.getPhysicalName().getSchema(),
                      physicalName,
                      initialValue,
                      1));
      database.addAuxiliaryDatabaseObject(
          new BitReversedSequenceAuxiliaryDatabaseObject(sequence, excludedRanges));
      Iterator<Sequence> iterator = namespace.getSequences().iterator();
      while (iterator.hasNext()) {
        if (iterator.next() == sequence) {
          iterator.remove();
          break;
        }
      }
    }
    this.physicalSequenceName = sequence.getName();
  }