diff options
author | Shawn O. Pearce <sop@google.com> | 2010-06-07 07:18:21 -0700 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2010-06-07 07:18:21 -0700 |
commit | fb190fe5de8151f0633016167f09fc805bc62286 (patch) | |
tree | 156c9969b8812407aa55e698bef84093ece6d8b8 | |
parent | b43316bac33b5ef1301c32bd83d7c942c0e6ad74 (diff) | |
download | gwtorm-fb190fe5de8151f0633016167f09fc805bc62286.tar.gz |
Honor a sequence's startValue in NoSQL
Use the startValue from the schema when starting a new counter
pool. This way Gerrit Code Review's account_id field will be
starting from a different value range than its account_group_id.
Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r-- | src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java | 2 | ||||
-rw-r--r-- | src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java b/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java index c426806..86f88a5 100644 --- a/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java +++ b/src/main/java/com/google/gwtorm/nosql/NoSqlDatabase.java @@ -84,7 +84,7 @@ public abstract class NoSqlDatabase<T extends Schema, S extends NoSqlSchema, A e } /** @return the derived model of the application's schema. */ - protected SchemaModel getSchemaModel() { + public SchemaModel getSchemaModel() { return schemaModel; } diff --git a/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java b/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java index 9792235..79e65bd 100644 --- a/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java +++ b/src/main/java/com/google/gwtorm/nosql/generic/GenericSchema.java @@ -51,7 +51,15 @@ public abstract class GenericSchema extends NoSqlSchema { if (val != null) { ctr = CounterShard.CODEC.decode(val); } else { - ctr = new CounterShard(1, Long.MAX_VALUE); + long start = 1; + for (SequenceModel s : getDatabase().getSchemaModel() + .getSequences()) { + if (poolName.equals(s.getSequenceName())) { + start = s.getSequence().startWith(); + break; + } + } + ctr = new CounterShard(start, Long.MAX_VALUE); } if (ctr.isEmpty()) { |