// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.czechaddress.addressdatabase;
/**
* Disassemles the <i>parent</i>-><i>parent</i>... branch of an AddressElement.
*
* @author Radomír Černoch, radomir.cernoch@gmail.com
*/
public class ParentResolver implements Comparable<ParentResolver> {
public Street parentStreet = null;
public Suburb parentSuburb = null;
public ViToCi parentViToCi = null;
public Region parentRegion = null;
public ParentResolver(AddressElement queryElement) {
if (queryElement.getParent() instanceof Street) {
parentStreet = (Street) queryElement.getParent();
queryElement = queryElement.getParent();
}
if (queryElement.getParent() instanceof Suburb) {
parentSuburb = (Suburb) queryElement.getParent();
queryElement = queryElement.getParent();
}
if (queryElement.getParent() instanceof ViToCi) {
parentViToCi = (ViToCi) queryElement.getParent();
queryElement = queryElement.getParent();
}
if (queryElement.getParent() instanceof Region) {
parentRegion = (Region) queryElement.getParent();
queryElement = queryElement.getParent();
}
}
/**
* Returns the value for the 'is_in=*' tag.
*/
public String getIsIn() {
String result = "";
String last = "";
if (parentSuburb != null && !last.equals(parentSuburb.getName())) {
result += parentSuburb.getName() + ", ";
last = parentSuburb.getName();
}
if (parentViToCi != null && !last.equals(parentViToCi.getName())) {
result += parentViToCi.getName() + ", ";
last = parentViToCi.getName();
}
if (parentRegion != null && parentRegion.getNuts3Name() != null &&
!last.equals(parentRegion.getNuts3Name())) {
result += parentRegion.getNuts3Name() + " kraj, ";
last = parentRegion.getNuts3Name();
}
return result + "CZ";
}
@Override
public int compareTo(ParentResolver o) {
int val = 0;
if (parentRegion != null && o.parentRegion != null)
val = parentRegion.compareTo(o.parentRegion);
if (val != 0)
return val;
if (parentViToCi != null && o.parentViToCi != null)
val = parentViToCi.compareTo(o.parentViToCi);
if (val != 0)
return val;
if (parentSuburb != null && o.parentSuburb != null)
val = parentSuburb.compareTo(o.parentSuburb);
if (val != 0)
return val;
if (parentStreet != null && o.parentStreet != null)
val = parentStreet.compareTo(o.parentStreet);
return val;
}
}