diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_38.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_38.java | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_38.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_38.java new file mode 100644 index 0000000000..59d6fa24ea --- /dev/null +++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_38.java @@ -0,0 +1,67 @@ +// Copyright (C) 2010 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.server.schema; + +import com.google.gerrit.reviewdb.Account; +import com.google.gerrit.reviewdb.AccountDiffPreference; +import com.google.gerrit.reviewdb.ReviewDb; +import com.google.gwtorm.client.OrmException; +import com.google.gwtorm.jdbc.JdbcSchema; +import com.google.inject.Inject; +import com.google.inject.Provider; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +public class Schema_38 extends SchemaVersion { + @Inject + Schema_38(Provider<Schema_37> prior) { + super(prior); + } + + /** + * Migrate the account.default_context column to account_diff_preferences.context column. + * <p> + * Other fields in account_diff_preferences will be filled in with their defaults as + * defined in the {@link AccountDiffPreference#createDefault(com.google.gerrit.reviewdb.Account.Id)} + */ + @Override + protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException, + SQLException { + List<AccountDiffPreference> newPrefs = + new ArrayList<AccountDiffPreference>(); + + Statement stmt = ((JdbcSchema) db).getConnection().createStatement(); + try { + ResultSet result = + stmt.executeQuery("SELECT account_id, default_context" + + " FROM accounts WHERE default_context <> 10"); + while (result.next()) { + int accountId = result.getInt(1); + short defaultContext = result.getShort(2); + AccountDiffPreference diffPref = AccountDiffPreference.createDefault(new Account.Id(accountId)); + diffPref.setContext(defaultContext); + newPrefs.add(diffPref); + } + } finally { + stmt.close(); + } + + db.accountDiffPreferences().insert(newPrefs); + } +} |