Merge "Drop LabelType.getPosition()"
This commit is contained in:
@@ -37,7 +37,6 @@ public class LabelType {
|
|||||||
lt.setAbbreviatedName(ac.getAbbreviatedName());
|
lt.setAbbreviatedName(ac.getAbbreviatedName());
|
||||||
lt.setFunctionName(ac.getFunctionName());
|
lt.setFunctionName(ac.getFunctionName());
|
||||||
lt.setCopyMinScore(ac.isCopyMinScore());
|
lt.setCopyMinScore(ac.isCopyMinScore());
|
||||||
lt.setPosition(ac.getPosition());
|
|
||||||
return lt;
|
return lt;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +91,6 @@ public class LabelType {
|
|||||||
protected String abbreviatedName;
|
protected String abbreviatedName;
|
||||||
protected String functionName;
|
protected String functionName;
|
||||||
protected boolean copyMinScore;
|
protected boolean copyMinScore;
|
||||||
protected short position;
|
|
||||||
|
|
||||||
protected List<LabelValue> values;
|
protected List<LabelValue> values;
|
||||||
protected short maxNegative;
|
protected short maxNegative;
|
||||||
@@ -153,14 +151,6 @@ public class LabelType {
|
|||||||
this.functionName = functionName;
|
this.functionName = functionName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public short getPosition() {
|
|
||||||
return position;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPosition(short position) {
|
|
||||||
this.position = position;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<LabelValue> getValues() {
|
public List<LabelValue> getValues() {
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
package com.google.gerrit.common.data;
|
package com.google.gerrit.common.data;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -22,6 +23,7 @@ public class LabelTypes {
|
|||||||
protected List<LabelType> labelTypes;
|
protected List<LabelType> labelTypes;
|
||||||
private transient Map<String, LabelType> byId;
|
private transient Map<String, LabelType> byId;
|
||||||
private transient Map<String, LabelType> byLabel;
|
private transient Map<String, LabelType> byLabel;
|
||||||
|
private transient Map<String, Integer> positions;
|
||||||
|
|
||||||
protected LabelTypes() {
|
protected LabelTypes() {
|
||||||
}
|
}
|
||||||
@@ -71,4 +73,38 @@ public class LabelTypes {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
return labelTypes.toString();
|
return labelTypes.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Comparator<String> nameComparator() {
|
||||||
|
final Map<String, Integer> positions = positions();
|
||||||
|
return new Comparator<String>() {
|
||||||
|
@Override
|
||||||
|
public int compare(String left, String right) {
|
||||||
|
int lp = position(left);
|
||||||
|
int rp = position(right);
|
||||||
|
int cmp = lp - rp;
|
||||||
|
if (cmp == 0) {
|
||||||
|
cmp = left.compareTo(right);
|
||||||
|
}
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int position(String name) {
|
||||||
|
Integer p = positions.get(name);
|
||||||
|
return p != null ? p : positions.size();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, Integer> positions() {
|
||||||
|
if (positions == null) {
|
||||||
|
positions = new HashMap<String, Integer>();
|
||||||
|
if (labelTypes != null) {
|
||||||
|
int i = 0;
|
||||||
|
for (LabelType t : labelTypes) {
|
||||||
|
positions.put(t.getName(), i++);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return positions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -352,7 +352,7 @@ public class ChangeJson {
|
|||||||
LabelTypes labelTypes, boolean standard) throws OrmException {
|
LabelTypes labelTypes, boolean standard) throws OrmException {
|
||||||
// Don't use Maps.newTreeMap(Comparator) due to OpenJDK bug 100167.
|
// Don't use Maps.newTreeMap(Comparator) due to OpenJDK bug 100167.
|
||||||
Map<String, LabelInfo> labels =
|
Map<String, LabelInfo> labels =
|
||||||
new TreeMap<String, LabelInfo>(LabelOrdering.create(labelTypes));
|
new TreeMap<String, LabelInfo>(labelTypes.nameComparator());
|
||||||
for (SubmitRecord rec : submitRecords(cd)) {
|
for (SubmitRecord rec : submitRecords(cd)) {
|
||||||
if (rec.labels == null) {
|
if (rec.labels == null) {
|
||||||
continue;
|
continue;
|
||||||
@@ -485,7 +485,7 @@ public class ChangeJson {
|
|||||||
//
|
//
|
||||||
// Don't use Maps.newTreeMap(Comparator) due to OpenJDK bug 100167.
|
// Don't use Maps.newTreeMap(Comparator) due to OpenJDK bug 100167.
|
||||||
Map<String, LabelInfo> labels =
|
Map<String, LabelInfo> labels =
|
||||||
new TreeMap<String, LabelInfo>(LabelOrdering.create(labelTypes));
|
new TreeMap<String, LabelInfo>(labelTypes.nameComparator());
|
||||||
for (ApprovalCategory.Id id : categories) {
|
for (ApprovalCategory.Id id : categories) {
|
||||||
LabelType type = labelTypes.byId(id.get());
|
LabelType type = labelTypes.byId(id.get());
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
// Copyright (C) 2013 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.change;
|
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
|
||||||
import com.google.common.collect.Ordering;
|
|
||||||
import com.google.gerrit.common.data.LabelType;
|
|
||||||
import com.google.gerrit.common.data.LabelTypes;
|
|
||||||
|
|
||||||
class LabelOrdering {
|
|
||||||
public static Ordering<String> create(final LabelTypes labelTypes) {
|
|
||||||
return Ordering.natural().nullsLast().onResultOf(
|
|
||||||
new Function<String, Short>() {
|
|
||||||
@Override
|
|
||||||
public Short apply(String n) {
|
|
||||||
LabelType lt = labelTypes.byLabel(n);
|
|
||||||
return lt != null ? lt.getPosition() : null;
|
|
||||||
}
|
|
||||||
}).compound(Ordering.natural());
|
|
||||||
}
|
|
||||||
|
|
||||||
private LabelOrdering() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -88,8 +88,7 @@ public class ReviewerJson {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Don't use Maps.newTreeMap(Comparator) due to OpenJDK bug 100167.
|
// Don't use Maps.newTreeMap(Comparator) due to OpenJDK bug 100167.
|
||||||
out.approvals = new TreeMap<String,String>(LabelOrdering.create(
|
out.approvals = new TreeMap<String,String>(labelTypes.nameComparator());
|
||||||
labelTypes));
|
|
||||||
for (PatchSetApproval ca : approvals) {
|
for (PatchSetApproval ca : approvals) {
|
||||||
for (PermissionRange pr : ctl.getLabelRanges()) {
|
for (PermissionRange pr : ctl.getLabelRanges()) {
|
||||||
if (!pr.isEmpty()) {
|
if (!pr.isEmpty()) {
|
||||||
|
|||||||
@@ -39,13 +39,13 @@ public class GerritCommonTest extends PrologTestCase {
|
|||||||
|
|
||||||
LabelTypes types =
|
LabelTypes types =
|
||||||
new LabelTypes(Arrays.asList(
|
new LabelTypes(Arrays.asList(
|
||||||
category(0, "CRVW", "Code-Review",
|
category("CRVW", "Code-Review",
|
||||||
value(2, "Looks good to me, approved"),
|
value(2, "Looks good to me, approved"),
|
||||||
value(1, "Looks good to me, but someone else must approve"),
|
value(1, "Looks good to me, but someone else must approve"),
|
||||||
value(0, "No score"),
|
value(0, "No score"),
|
||||||
value(-1, "I would prefer that you didn't submit this"),
|
value(-1, "I would prefer that you didn't submit this"),
|
||||||
value(-2, "Do not submit")),
|
value(-2, "Do not submit")),
|
||||||
category(1, "VRIF", "Verified", value(1, "Verified"),
|
category("VRIF", "Verified", value(1, "Verified"),
|
||||||
value(0, "No score"), value(-1, "Fails"))));
|
value(0, "No score"), value(-1, "Fails"))));
|
||||||
ProjectConfig config = new ProjectConfig(new Project.NameKey("myproject"));
|
ProjectConfig config = new ProjectConfig(new Project.NameKey("myproject"));
|
||||||
config.createInMemory();
|
config.createInMemory();
|
||||||
@@ -71,11 +71,9 @@ public class GerritCommonTest extends PrologTestCase {
|
|||||||
return new LabelValue((short) value, text);
|
return new LabelValue((short) value, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static LabelType category(int pos, String id, String name,
|
private static LabelType category(String id, String name,
|
||||||
LabelValue... values) {
|
LabelValue... values) {
|
||||||
LabelType type = new LabelType(id, name, Arrays.asList(values));
|
return new LabelType(id, name, Arrays.asList(values));
|
||||||
type.setPosition((short) pos);
|
|
||||||
return type;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class Projects implements ProjectCache {
|
private static class Projects implements ProjectCache {
|
||||||
|
|||||||
Reference in New Issue
Block a user