Persisting users diff formatting preferences
When a user changes diff formatting preferences and clicks the Update button the preferences will then be persisted in the database. This way a user doesn't have to adjust the diff formatting preferences each time it switches to the next file diff. Bug: issue 579 Change-Id: I52cd1dcf702ed04046b236228f994fb9042243d9 Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
This commit is contained in:

committed by
Shawn O. Pearce

parent
5a00b3161d
commit
077b2c5dd0
@@ -15,6 +15,7 @@
|
||||
package com.google.gerrit.server;
|
||||
|
||||
import com.google.gerrit.reviewdb.Account;
|
||||
import com.google.gerrit.reviewdb.AccountDiffPreference;
|
||||
import com.google.gerrit.reviewdb.AccountGroup;
|
||||
import com.google.gerrit.reviewdb.AccountProjectWatch;
|
||||
import com.google.gerrit.reviewdb.Change;
|
||||
@@ -178,6 +179,20 @@ public class IdentifiedUser extends CurrentUser {
|
||||
return state().getAccount();
|
||||
}
|
||||
|
||||
public AccountDiffPreference getAccountDiffPreference() {
|
||||
AccountDiffPreference diffPref;
|
||||
try {
|
||||
diffPref = dbProvider.get().accountDiffPreferences().get(getAccountId());
|
||||
if (diffPref == null) {
|
||||
diffPref = AccountDiffPreference.createDefault(getAccountId());
|
||||
}
|
||||
} catch (OrmException e) {
|
||||
log.warn("Cannot query account diff preferences", e);
|
||||
diffPref = AccountDiffPreference.createDefault(getAccountId());
|
||||
}
|
||||
return diffPref;
|
||||
}
|
||||
|
||||
public Set<String> getEmailAddresses() {
|
||||
if (emailAddresses == null) {
|
||||
emailAddresses = state().getEmailAddresses();
|
||||
|
@@ -14,9 +14,9 @@
|
||||
|
||||
package com.google.gerrit.server.patch;
|
||||
|
||||
import com.google.gerrit.common.data.PatchScriptSettings.Whitespace;
|
||||
import com.google.gerrit.reviewdb.Change;
|
||||
import com.google.gerrit.reviewdb.PatchSet;
|
||||
import com.google.gerrit.reviewdb.AccountDiffPreference.Whitespace;
|
||||
|
||||
/** Provides a cached list of {@link PatchListEntry}. */
|
||||
public interface PatchListCache {
|
||||
|
@@ -14,12 +14,11 @@
|
||||
|
||||
package com.google.gerrit.server.patch;
|
||||
|
||||
import static com.google.gerrit.common.data.PatchScriptSettings.Whitespace.IGNORE_NONE;
|
||||
|
||||
import com.google.gerrit.common.data.PatchScriptSettings.Whitespace;
|
||||
import com.google.gerrit.reviewdb.Change;
|
||||
import com.google.gerrit.reviewdb.PatchSet;
|
||||
import com.google.gerrit.reviewdb.Project;
|
||||
import com.google.gerrit.reviewdb.AccountDiffPreference.Whitespace;
|
||||
import com.google.gerrit.server.cache.Cache;
|
||||
import com.google.gerrit.server.cache.CacheModule;
|
||||
import com.google.gerrit.server.cache.EvictionPolicy;
|
||||
@@ -116,7 +115,7 @@ public class PatchListCacheImpl implements PatchListCache {
|
||||
}
|
||||
|
||||
public PatchList get(final Change change, final PatchSet patchSet) {
|
||||
return get(change, patchSet, IGNORE_NONE);
|
||||
return get(change, patchSet, Whitespace.IGNORE_NONE);
|
||||
}
|
||||
|
||||
public PatchList get(final Change change, final PatchSet patchSet,
|
||||
|
@@ -21,8 +21,8 @@ import static org.eclipse.jgit.lib.ObjectIdSerialization.readNotNull;
|
||||
import static org.eclipse.jgit.lib.ObjectIdSerialization.writeCanBeNull;
|
||||
import static org.eclipse.jgit.lib.ObjectIdSerialization.writeNotNull;
|
||||
|
||||
import com.google.gerrit.common.data.PatchScriptSettings.Whitespace;
|
||||
import com.google.gerrit.reviewdb.Project;
|
||||
import com.google.gerrit.reviewdb.AccountDiffPreference.Whitespace;
|
||||
|
||||
import org.eclipse.jgit.lib.AnyObjectId;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
|
@@ -32,7 +32,7 @@ import java.util.List;
|
||||
/** A version of the database schema. */
|
||||
public abstract class SchemaVersion {
|
||||
/** The current schema version. */
|
||||
private static final Class<? extends SchemaVersion> C = Schema_37.class;
|
||||
private static final Class<? extends SchemaVersion> C = Schema_38.class;
|
||||
|
||||
public static class Module extends AbstractModule {
|
||||
@Override
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user