Fill in missing intermediate label values automatically
Change-Id: I81e6052ee22fea91267d0f428fe008c5cb13b132
diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/data/LabelType.java b/gerrit-common/src/main/java/com/google/gerrit/common/data/LabelType.java
index ae21a4e..9afa804 100644
--- a/gerrit-common/src/main/java/com/google/gerrit/common/data/LabelType.java
+++ b/gerrit-common/src/main/java/com/google/gerrit/common/data/LabelType.java
@@ -75,6 +75,32 @@
return abbr.toString();
}
+ private static List<LabelValue> sortValues(List<LabelValue> values) {
+ values = new ArrayList<LabelValue>(values);
+ if (values.size() <= 1) {
+ return Collections.unmodifiableList(values);
+ }
+ Collections.sort(values, new Comparator<LabelValue>() {
+ public int compare(LabelValue o1, LabelValue o2) {
+ return o1.getValue() - o2.getValue();
+ }
+ });
+ short min = values.get(0).getValue();
+ short max = values.get(values.size() - 1).getValue();
+ short v = min;
+ short i = 0;
+ List<LabelValue> result = new ArrayList<LabelValue>(max - min + 1);
+ // Fill in any missing values with empty text.
+ while (i < values.size()) {
+ while (v < values.get(i).getValue()) {
+ result.add(new LabelValue(v++, ""));
+ }
+ v++;
+ result.add(values.get(i++));
+ }
+ return Collections.unmodifiableList(result);
+ }
+
protected String name;
protected String id;
@@ -96,12 +122,7 @@
public LabelType(String name, List<LabelValue> valueList) {
this.name = checkName(name);
canOverride = true;
- values = new ArrayList<LabelValue>(valueList);
- Collections.sort(values, new Comparator<LabelValue>() {
- public int compare(LabelValue o1, LabelValue o2) {
- return o1.getValue() - o2.getValue();
- }
- });
+ values = sortValues(valueList);
abbreviatedName = defaultAbbreviation(name);
functionName = "MaxWithBlock";
diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/data/LabelValue.java b/gerrit-common/src/main/java/com/google/gerrit/common/data/LabelValue.java
index c349376..cd29e05 100644
--- a/gerrit-common/src/main/java/com/google/gerrit/common/data/LabelValue.java
+++ b/gerrit-common/src/main/java/com/google/gerrit/common/data/LabelValue.java
@@ -49,8 +49,11 @@
}
public String format() {
- return new StringBuilder().append(formatValue())
- .append(' ').append(text).toString();
+ StringBuilder sb = new StringBuilder(formatValue());
+ if (!text.isEmpty()) {
+ sb.append(' ').append(text);
+ }
+ return sb.toString();
}
@Override