// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.czechaddress;
import java.util.Comparator;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
/**
* Utilities for handling {@link OsmPrimitive}s.
*
* @author Radomír Černoch, radomir.cernoch@gmail.com
*/
public final class PrimUtils {
// CHECKSTYLE.OFF: SingleSpaceSeparator
public static final String KEY_HIGHWAY = "highway";
public static final String KEY_PLACE = "place";
public static final String KEY_ADDR_CP = "addr:conscriptionnumber";
public static final String KEY_ADDR_CO = "addr:streetnumber";
public static final String KEY_ADDR_HOUSE_N = "addr:housenumber";
public static final String KEY_ADDR_STREET = "addr:street";
public static final String KEY_ADDR_CITY = "addr:city";
public static final String KEY_ADDR_COUNTRY = "addr:country";
public static final String KEY_IS_IN = "is_in";
public static final String KEY_NAME = "name";
// CHECKSTYLE.ON: SingleSpaceSeparator
private static final String[] keysToCompare = new String[]
{KEY_PLACE, KEY_NAME, KEY_ADDR_COUNTRY, KEY_ADDR_CITY, KEY_IS_IN,
KEY_ADDR_STREET, KEY_ADDR_CO, KEY_ADDR_CP };
/**
* Comparator for {@link OsmPrimitive}, which looks at 'addr:*' tags.
*/
public static final Comparator<OsmPrimitive> comparator =
new Comparator<OsmPrimitive>() {
@Override
public int compare(OsmPrimitive o1, OsmPrimitive o2) {
for (String key : keysToCompare) {
if (o1.get(key) == null) {
continue;
}
if (o2.get(key) == null) {
continue;
}
int val = o1.get(key).compareTo(o2.get(key));
if (val != 0) return val;
}
/*int val = o1.toString().compareTo(o2.toString());
if (val != 0) return val;*/
return o1.compareTo(o2);
}
};
private PrimUtils() {
// Hide default constructor for utilities classes
}
}