diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_119.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_119.java | 234 |
1 files changed, 0 insertions, 234 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_119.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_119.java deleted file mode 100644 index f6abca8fec..0000000000 --- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/Schema_119.java +++ /dev/null @@ -1,234 +0,0 @@ -// Copyright (C) 2015 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 static com.google.gerrit.reviewdb.client.CoreDownloadSchemes.ANON_GIT; -import static com.google.gerrit.reviewdb.client.CoreDownloadSchemes.ANON_HTTP; -import static com.google.gerrit.reviewdb.client.CoreDownloadSchemes.HTTP; -import static com.google.gerrit.reviewdb.client.CoreDownloadSchemes.REPO_DOWNLOAD; -import static com.google.gerrit.reviewdb.client.CoreDownloadSchemes.SSH; -import static com.google.gerrit.server.config.ConfigUtil.storeSection; - -import com.google.common.base.Preconditions; -import com.google.common.base.Strings; -import com.google.common.collect.ImmutableMap; -import com.google.gerrit.extensions.client.GeneralPreferencesInfo; -import com.google.gerrit.extensions.client.GeneralPreferencesInfo.DateFormat; -import com.google.gerrit.extensions.client.GeneralPreferencesInfo.DiffView; -import com.google.gerrit.extensions.client.GeneralPreferencesInfo.DownloadCommand; -import com.google.gerrit.extensions.client.GeneralPreferencesInfo.EmailStrategy; -import com.google.gerrit.extensions.client.GeneralPreferencesInfo.ReviewCategoryStrategy; -import com.google.gerrit.extensions.client.GeneralPreferencesInfo.TimeFormat; -import com.google.gerrit.reviewdb.client.Account; -import com.google.gerrit.reviewdb.server.ReviewDb; -import com.google.gerrit.server.GerritPersonIdent; -import com.google.gerrit.server.account.VersionedAccountPreferences; -import com.google.gerrit.server.config.AllUsersName; -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.UserConfigSections; -import com.google.gwtorm.jdbc.JdbcSchema; -import com.google.gwtorm.server.OrmException; -import com.google.inject.Inject; -import com.google.inject.Provider; -import java.io.IOException; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import org.eclipse.jgit.errors.ConfigInvalidException; -import org.eclipse.jgit.lib.BatchRefUpdate; -import org.eclipse.jgit.lib.NullProgressMonitor; -import org.eclipse.jgit.lib.PersonIdent; -import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.revwalk.RevWalk; - -public class Schema_119 extends SchemaVersion { - private static final ImmutableMap<String, String> LEGACY_DISPLAYNAME_MAP = - ImmutableMap.<String, String>of( - "ANON_GIT", ANON_GIT, - "ANON_HTTP", ANON_HTTP, - "HTTP", HTTP, - "SSH", SSH, - "REPO_DOWNLOAD", REPO_DOWNLOAD); - - private final GitRepositoryManager mgr; - private final AllUsersName allUsersName; - private final PersonIdent serverUser; - - @Inject - Schema_119( - Provider<Schema_118> prior, - GitRepositoryManager mgr, - AllUsersName allUsersName, - @GerritPersonIdent PersonIdent serverUser) { - super(prior); - this.mgr = mgr; - this.allUsersName = allUsersName; - this.serverUser = serverUser; - } - - @Override - protected void migrateData(ReviewDb db, UpdateUI ui) throws OrmException, SQLException { - JdbcSchema schema = (JdbcSchema) db; - Connection connection = schema.getConnection(); - String tableName = "accounts"; - String emailStrategy = "email_strategy"; - Set<String> columns = schema.getDialect().listColumns(connection, tableName); - Map<Account.Id, GeneralPreferencesInfo> imports = new HashMap<>(); - try (Statement stmt = ((JdbcSchema) db).getConnection().createStatement(); - ResultSet rs = - stmt.executeQuery( - "select " - + "account_id, " - + "maximum_page_size, " - + "show_site_header, " - + "use_flash_clipboard, " - + "download_url, " - + "download_command, " - + (columns.contains(emailStrategy) - ? emailStrategy + ", " - : "copy_self_on_email, ") - + "date_format, " - + "time_format, " - + "relative_date_in_change_table, " - + "diff_view, " - + "size_bar_in_change_table, " - + "legacycid_in_change_table, " - + "review_category_strategy, " - + "mute_common_path_prefixes " - + "from " - + tableName)) { - while (rs.next()) { - GeneralPreferencesInfo p = new GeneralPreferencesInfo(); - Account.Id accountId = new Account.Id(rs.getInt(1)); - p.changesPerPage = (int) rs.getShort(2); - p.showSiteHeader = toBoolean(rs.getString(3)); - p.useFlashClipboard = toBoolean(rs.getString(4)); - p.downloadScheme = convertToModernNames(rs.getString(5)); - p.downloadCommand = toDownloadCommand(rs.getString(6)); - p.emailStrategy = toEmailStrategy(rs.getString(7), columns.contains(emailStrategy)); - p.dateFormat = toDateFormat(rs.getString(8)); - p.timeFormat = toTimeFormat(rs.getString(9)); - p.relativeDateInChangeTable = toBoolean(rs.getString(10)); - p.diffView = toDiffView(rs.getString(11)); - p.sizeBarInChangeTable = toBoolean(rs.getString(12)); - p.legacycidInChangeTable = toBoolean(rs.getString(13)); - p.reviewCategoryStrategy = toReviewCategoryStrategy(rs.getString(14)); - p.muteCommonPathPrefixes = toBoolean(rs.getString(15)); - p.defaultBaseForMerges = GeneralPreferencesInfo.defaults().defaultBaseForMerges; - imports.put(accountId, p); - } - } - - if (imports.isEmpty()) { - return; - } - - try (Repository git = mgr.openRepository(allUsersName); - RevWalk rw = new RevWalk(git)) { - BatchRefUpdate bru = git.getRefDatabase().newBatchUpdate(); - for (Map.Entry<Account.Id, GeneralPreferencesInfo> e : imports.entrySet()) { - try (MetaDataUpdate md = - new MetaDataUpdate(GitReferenceUpdated.DISABLED, allUsersName, git, bru)) { - md.getCommitBuilder().setAuthor(serverUser); - md.getCommitBuilder().setCommitter(serverUser); - VersionedAccountPreferences p = VersionedAccountPreferences.forUser(e.getKey()); - p.load(md); - storeSection( - p.getConfig(), - UserConfigSections.GENERAL, - null, - e.getValue(), - GeneralPreferencesInfo.defaults()); - p.commit(md); - } - } - - bru.execute(rw, NullProgressMonitor.INSTANCE); - } catch (ConfigInvalidException | IOException ex) { - throw new OrmException(ex); - } - } - - private String convertToModernNames(String s) { - return !Strings.isNullOrEmpty(s) && LEGACY_DISPLAYNAME_MAP.containsKey(s) - ? LEGACY_DISPLAYNAME_MAP.get(s) - : s; - } - - private static DownloadCommand toDownloadCommand(String v) { - if (v == null) { - return DownloadCommand.CHECKOUT; - } - return DownloadCommand.valueOf(v); - } - - private static DateFormat toDateFormat(String v) { - if (v == null) { - return DateFormat.STD; - } - return DateFormat.valueOf(v); - } - - private static TimeFormat toTimeFormat(String v) { - if (v == null) { - return TimeFormat.HHMM_12; - } - return TimeFormat.valueOf(v); - } - - private static DiffView toDiffView(String v) { - if (v == null) { - return DiffView.SIDE_BY_SIDE; - } - return DiffView.valueOf(v); - } - - private static EmailStrategy toEmailStrategy(String v, boolean emailStrategyColumnExists) - throws OrmException { - if (v == null) { - return EmailStrategy.ENABLED; - } - if (emailStrategyColumnExists) { - return EmailStrategy.valueOf(v); - } - if (v.equals("N")) { - // EMAIL_STRATEGY='ENABLED' WHERE (COPY_SELF_ON_EMAIL='N') - return EmailStrategy.ENABLED; - } else if (v.equals("Y")) { - // EMAIL_STRATEGY='CC_ON_OWN_COMMENTS' WHERE (COPY_SELF_ON_EMAIL='Y') - return EmailStrategy.CC_ON_OWN_COMMENTS; - } else { - throw new OrmException("invalid value in accounts.copy_self_on_email: " + v); - } - } - - private static ReviewCategoryStrategy toReviewCategoryStrategy(String v) { - if (v == null) { - return ReviewCategoryStrategy.NONE; - } - return ReviewCategoryStrategy.valueOf(v); - } - - private static boolean toBoolean(String v) { - Preconditions.checkState(!Strings.isNullOrEmpty(v)); - return v.equals("Y"); - } -} |