Move change formatting methods into DefaultChangeReportFormatter

This will allow custom implementations to override the URL while
maintaining the rest of the layout.

Also move ChangeUtil#cropSubject to its only caller in
DefaultChangeReportFormatter.

Change-Id: Ib09b706399b1029328c4207daeb545cf62a9d1d0
This commit is contained in:
Han-Wen Nienhuys
2018-08-30 15:52:54 +02:00
parent fd6f6cb1e7
commit d8b407f93b
2 changed files with 30 additions and 31 deletions

View File

@@ -37,17 +37,9 @@ public class ChangeUtil {
private static final Random UUID_RANDOM = new SecureRandom();
private static final BaseEncoding UUID_ENCODING = BaseEncoding.base16().lowerCase();
private static final int SUBJECT_MAX_LENGTH = 80;
private static final String SUBJECT_CROP_APPENDIX = "...";
private static final int SUBJECT_CROP_RANGE = 10;
public static final Ordering<PatchSet> PS_ID_ORDER =
Ordering.from(comparingInt(PatchSet::getPatchSetId));
public static String formatChangeUrl(String canonicalWebUrl, Change change) {
return canonicalWebUrl + "c/" + change.getProject().get() + "/+/" + change.getChangeId();
}
/** @return a new unique identifier for change message entities. */
public static String messageUuid() {
byte[] buf = new byte[8];
@@ -123,21 +115,6 @@ public class ChangeUtil {
id);
}
public static String cropSubject(String subject) {
if (subject.length() > SUBJECT_MAX_LENGTH) {
int maxLength = SUBJECT_MAX_LENGTH - SUBJECT_CROP_APPENDIX.length();
for (int cropPosition = maxLength;
cropPosition > maxLength - SUBJECT_CROP_RANGE;
cropPosition--) {
if (Character.isWhitespace(subject.charAt(cropPosition - 1))) {
return subject.substring(0, cropPosition) + SUBJECT_CROP_APPENDIX;
}
}
return subject.substring(0, maxLength) + SUBJECT_CROP_APPENDIX;
}
return subject;
}
public static String status(Change c) {
return c != null ? c.getStatus().name().toLowerCase() : "deleted";
}

View File

@@ -14,12 +14,16 @@
package com.google.gerrit.server.git;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.config.CanonicalWebUrl;
import com.google.inject.Inject;
/** Print a change description for use in git command-line progress. */
public class DefaultChangeReportFormatter implements ChangeReportFormatter {
private static final int SUBJECT_MAX_LENGTH = 80;
private static final String SUBJECT_CROP_APPENDIX = "...";
private static final int SUBJECT_CROP_RANGE = 10;
private final String canonicalWebUrl;
@Inject
@@ -37,19 +41,37 @@ public class DefaultChangeReportFormatter implements ChangeReportFormatter {
return formatChangeUrl(canonicalWebUrl, input);
}
@Override
public String changeClosed(ChangeReportFormatter.Input input) {
return String.format(
"change %s closed", ChangeUtil.formatChangeUrl(canonicalWebUrl, input.change()));
public static String formatChangeUrl(String canonicalWebUrl, Change change) {
return canonicalWebUrl + "c/" + change.getProject().get() + "/+/" + change.getChangeId();
}
private String formatChangeUrl(String url, Input input) {
@Override
public String changeClosed(ChangeReportFormatter.Input input) {
return String.format("change %s closed", formatChangeUrl(canonicalWebUrl, input.change()));
}
protected String cropSubject(String subject) {
if (subject.length() > SUBJECT_MAX_LENGTH) {
int maxLength = SUBJECT_MAX_LENGTH - SUBJECT_CROP_APPENDIX.length();
for (int cropPosition = maxLength;
cropPosition > maxLength - SUBJECT_CROP_RANGE;
cropPosition--) {
if (Character.isWhitespace(subject.charAt(cropPosition - 1))) {
return subject.substring(0, cropPosition) + SUBJECT_CROP_APPENDIX;
}
}
return subject.substring(0, maxLength) + SUBJECT_CROP_APPENDIX;
}
return subject;
}
protected String formatChangeUrl(String url, Input input) {
StringBuilder m =
new StringBuilder()
.append(" ")
.append(ChangeUtil.formatChangeUrl(url, input.change()))
.append(formatChangeUrl(url, input.change()))
.append(" ")
.append(ChangeUtil.cropSubject(input.subject()));
.append(cropSubject(input.subject()));
if (input.isEdit()) {
m.append(" [EDIT]");
}