RebuildNotedb: Elide project names instead of truncating them
The project name in the progress monitor should not exceed 50 characters so that the whole monitor line fits into 80 characters. This is why the project name was truncated if it was longer. When projects are organized hierarchically many projects may share the same prefix and then truncating is bad because one cannot differentiate the truncated names. This is why the project names should be rather elided. Change-Id: I6164f07f98254c41014e62767c8f13d3618d8eb6 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
// 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.common;
|
||||
|
||||
public class FormatUtil {
|
||||
public static String elide(String s, int max) {
|
||||
if (s == null || s.length() <= max) {
|
||||
return s;
|
||||
}
|
||||
int len = (max - 3) / 2;
|
||||
return s.substring(0, len) + "..." + s.substring(s.length() - len);
|
||||
}
|
||||
}
|
@@ -138,15 +138,9 @@ class Message extends Composite {
|
||||
}
|
||||
|
||||
private void setName(boolean open) {
|
||||
name.setInnerText(open ? authorName(info) : elide(authorName(info), 20));
|
||||
}
|
||||
|
||||
private static String elide(final String s, final int len) {
|
||||
if (s == null || s.length() <= len || len <= 10) {
|
||||
return s;
|
||||
}
|
||||
int i = (len - 3) / 2;
|
||||
return s.substring(0, i) + "..." + s.substring(s.length() - i);
|
||||
name.setInnerText(open
|
||||
? authorName(info)
|
||||
: com.google.gerrit.common.FormatUtil.elide(authorName(info), 20));
|
||||
}
|
||||
|
||||
void autoOpen() {
|
||||
|
@@ -25,6 +25,7 @@ import com.google.common.util.concurrent.Futures;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.common.util.concurrent.ListeningExecutorService;
|
||||
import com.google.common.util.concurrent.MoreExecutors;
|
||||
import com.google.gerrit.common.FormatUtil;
|
||||
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
|
||||
import com.google.gerrit.extensions.registration.DynamicSet;
|
||||
import com.google.gerrit.lifecycle.LifecycleManager;
|
||||
@@ -124,10 +125,10 @@ public class RebuildNotedb extends SiteProgram {
|
||||
allUsersRepo.getRefDatabase().newBatchUpdate();
|
||||
List<ListenableFuture<?>> futures = Lists.newArrayList();
|
||||
|
||||
// Here, we truncate the project name to 50 characters to ensure that
|
||||
// Here, we elide the project name to 50 characters to ensure that
|
||||
// the whole monitor line for a project fits on one line (<80 chars).
|
||||
final MultiProgressMonitor mpm = new MultiProgressMonitor(System.out,
|
||||
truncateProjectName(project.get()));
|
||||
FormatUtil.elide(project.get(), 50));
|
||||
final Task doneTask =
|
||||
mpm.beginSubTask("done", changesByProject.get(project).size());
|
||||
final Task failedTask =
|
||||
@@ -167,17 +168,6 @@ public class RebuildNotedb extends SiteProgram {
|
||||
return ok.get() ? 0 : 1;
|
||||
}
|
||||
|
||||
private static String truncateProjectName(String projectName) {
|
||||
int monitorStringMaxLength = 50;
|
||||
String monitorString = (projectName.length() > monitorStringMaxLength)
|
||||
? projectName.substring(0, monitorStringMaxLength)
|
||||
: projectName;
|
||||
if (projectName.length() > monitorString.length()) {
|
||||
monitorString = monitorString + "...";
|
||||
}
|
||||
return monitorString;
|
||||
}
|
||||
|
||||
private static void execute(BatchRefUpdate bru, Repository repo)
|
||||
throws IOException {
|
||||
try (RevWalk rw = new RevWalk(repo)) {
|
||||
|
Reference in New Issue
Block a user