package org.netbeans.gradle.project.properties;
import java.util.Map;
import org.jtrim.collections.CollectionsEx;
import org.jtrim.utils.ExceptionHelper;
abstract class AbstractFixedOrderNodeProperty extends AbstractConfigNodeProperty {
private final Map<String, Integer> order;
public AbstractFixedOrderNodeProperty(String... order) {
this.order = CollectionsEx.newHashMap(order.length);
for (int i = 0; i < order.length; i++) {
String key = order[i];
ExceptionHelper.checkNotNullArgument(key, "order[?]");
this.order.put(key, i);
}
}
@Override
public final int compare(String o1, String o2) {
Integer index1 = order.get(o1);
Integer index2 = order.get(o2);
if (index1 == null) {
return index2 == null
? DefaultConfigNodeProperty.INSTANCE.compare(o1, o2)
: 1;
}
if (index2 == null) {
return -1;
}
return Integer.compare(index1, index2);
}
}