summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_53.java
diff options
context:
space:
mode:
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.java54
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);