InitAdminUser: Don't assume the group ID of the Administrators group

When using a database configuration where auto-increment column values
are pre-allocated, it is possible that the "Administrators" group is
created with an ID other than "1". In this case, the created admin user
will not be added to the correct group, and will not have the correct
admin permissions.

Instead of hard-coding the group ID, get it from the database.

Bug: Issue 3698
Change-Id: Ie9b3f4f9166d03e91d58b2ec584c5ce47aa2021c
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitAdminUser.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitAdminUser.java
index c1f0090..3a4d0f2 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitAdminUser.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitAdminUser.java
@@ -23,6 +23,7 @@
 import com.google.gerrit.reviewdb.client.AccountExternalId;
 import com.google.gerrit.reviewdb.client.AccountGroup;
 import com.google.gerrit.reviewdb.client.AccountGroupMember;
+import com.google.gerrit.reviewdb.client.AccountGroupName;
 import com.google.gerrit.reviewdb.client.AuthType;
 import com.google.gerrit.reviewdb.server.ReviewDb;
 import com.google.gwtorm.server.SchemaFactory;
@@ -94,9 +95,11 @@
           a.setPreferredEmail(email);
           db.accounts().insert(Collections.singleton(a));
 
+          AccountGroupName adminGroup = db.accountGroupNames().get(
+              new AccountGroup.NameKey("Administrators"));
           AccountGroupMember m =
               new AccountGroupMember(new AccountGroupMember.Key(id,
-                  new AccountGroup.Id(1)));
+                  adminGroup.getId()));
           db.accountGroupMembers().insert(Collections.singleton(m));
         }
       }