diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_53.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_53.java | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_53.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_53.java index 8207c31adc..e4aae2cd6d 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_53.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_53.java @@ -28,11 +28,13 @@ import static com.google.gerrit.common.data.Permission.SUBMIT; import com.google.gerrit.common.data.AccessSection; import com.google.gerrit.common.data.GroupReference; +import com.google.gerrit.common.data.LabelType; import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.PermissionRule; import com.google.gerrit.reviewdb.client.AccountGroup; -import com.google.gerrit.reviewdb.client.ApprovalCategory; +import com.google.gerrit.reviewdb.client.PatchSetApproval.LabelId; import com.google.gerrit.reviewdb.client.Project; +import com.google.gerrit.reviewdb.client.Project.InheritableBoolean; import com.google.gerrit.reviewdb.client.SystemConfig; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.GerritPersonIdent; @@ -41,6 +43,7 @@ import com.google.gerrit.server.extensions.events.GitReferenceUpdated; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.MetaDataUpdate; import com.google.gerrit.server.git.ProjectConfig; +import com.google.gerrit.server.schema.Schema_77.LegacyLabelTypes; import com.google.gwtorm.jdbc.JdbcSchema; import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; @@ -67,7 +70,7 @@ class Schema_53 extends SchemaVersion { private SystemConfig systemConfig; private Map<AccountGroup.Id, GroupReference> groupMap; - private Map<ApprovalCategory.Id, ApprovalCategory> categoryMap; + private LegacyLabelTypes labelTypes; private GroupReference projectOwners; private Map<Project.NameKey, Project.NameKey> parentsByProject; @@ -92,7 +95,7 @@ class Schema_53 extends SchemaVersion { protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException, SQLException { systemConfig = db.systemConfig().get(new SystemConfig.Key()); - categoryMap = db.approvalCategories().toMap(db.approvalCategories().all()); + labelTypes = Schema_77.getLegacyTypes(db); assignGroupUUIDs(db); readOldRefRights(db); @@ -103,13 +106,17 @@ class Schema_53 extends SchemaVersion { } private void deleteActionCategories(ReviewDb db) throws OrmException { - List<ApprovalCategory> delete = new ArrayList<ApprovalCategory>(); - for (ApprovalCategory category : categoryMap.values()) { - if (category.getPosition() < 0) { - delete.add(category); + try { + Statement stmt = ((JdbcSchema) db).getConnection().createStatement(); + try { + stmt.executeUpdate( + "DELETE FROM approval_categories WHERE position < 0"); + } finally { + stmt.close(); } + } catch (SQLException e) { + throw new OrmException(e); } - db.approvalCategories().delete(delete); } private void assignGroupUUIDs(ReviewDb db) throws OrmException { @@ -200,8 +207,7 @@ class Schema_53 extends SchemaVersion { private void loadProject(ResultSet rs, Project project) throws SQLException, OrmException { project.setDescription(rs.getString("description")); - project.setUseContributorAgreements("Y".equals(rs - .getString("use_contributor_agreements"))); + project.setUseContributorAgreements(asInheritableBoolean(rs, "use_contributor_agreements")); switch (rs.getString("submit_type").charAt(0)) { case 'F': @@ -221,12 +227,19 @@ class Schema_53 extends SchemaVersion { + rs.getString("submit_type") + " on project " + project.getName()); } - project.setUseSignedOffBy("Y".equals(rs.getString("use_signed_off_by"))); - project.setRequireChangeID("Y".equals(rs.getString("require_change_id"))); - project.setUseContentMerge("Y".equals(rs.getString("use_content_merge"))); + project.setUseSignedOffBy(asInheritableBoolean(rs, "use_signed_off_by")); + project.setRequireChangeID(asInheritableBoolean(rs, "require_change_id")); + project.setUseContentMerge(asInheritableBoolean(rs, "use_content_merge")); project.setParentName(rs.getString("parent_name")); } + private static InheritableBoolean asInheritableBoolean(ResultSet rs, String col) + throws SQLException { + return "Y".equals(rs.getString(col)) + ? Project.InheritableBoolean.TRUE + : Project.InheritableBoolean.INHERIT; + } + private void readOldRefRights(ReviewDb db) throws SQLException { rightsByProject = new HashMap<Project.NameKey, List<OldRefRight>>(); @@ -358,8 +371,7 @@ class Schema_53 extends SchemaVersion { if (3 <= old.max_value) { add(section, FORGE_SERVER, old.exclusive, rule(group)); - } else if (3 <= inheritedMax(config, old)) { - add(section, FORGE_SERVER, old.exclusive, deny(group)); + } else if (3 <= inheritedMax(config, old)) { add(section, FORGE_SERVER, old.exclusive, deny(group)); } } else { @@ -368,7 +380,9 @@ class Schema_53 extends SchemaVersion { if (old.min_value == 0 && old.max_value == 0) { rule.setDeny(); } - add(section, LABEL + varNameOf(old.category), old.exclusive, rule); + LabelType type = labelTypes.byLabel(new LabelId(old.category)); + String name = type != null ? type.getName() : old.category; + add(section, LABEL + name, old.exclusive, rule); } } } @@ -436,14 +450,6 @@ class Schema_53 extends SchemaVersion { return max; } - private String varNameOf(String id) { - ApprovalCategory category = categoryMap.get(new ApprovalCategory.Id(id)); - if (category == null) { - category = new ApprovalCategory(new ApprovalCategory.Id(id), id); - } - return category.getLabelName(); - } - private static void add(AccessSection section, String name, boolean exclusive, PermissionRule rule) { Permission p = section.getPermission(name, true); |