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>
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 @@
   }
 
   /** @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 @@
           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()) {