Changeset 15558 in osm for applications/editors/josm/plugins/czechaddress/src/org/openstreetmap/josm/plugins/czechaddress/addressdatabase
- Timestamp:
- 2009-06-03T01:31:58+02:00 (16 years ago)
- Location:
- applications/editors/josm/plugins/czechaddress/src/org/openstreetmap/josm/plugins/czechaddress/addressdatabase
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/czechaddress/src/org/openstreetmap/josm/plugins/czechaddress/addressdatabase/AddressElement.java
r15461 r15558 16 16 * @author Radomír Černoch radomir.cernoch@gmail.com 17 17 */ 18 public abstract class AddressElement { 18 public abstract class AddressElement implements Comparable<AddressElement> { 19 19 20 20 protected String name; 21 21 protected AddressElement parent = null; 22 23 protected static final String KEY_ADDR_CP = "addr:alternatenumber";24 protected static final String KEY_ADDR_CO = "addr:housenumber";25 protected static final String KEY_ADDR_STREET = "addr:street";26 protected static final String KEY_ADDR_CITY = "addr:city";27 protected static final String KEY_ADDR_COUNTRY = "addr:country";28 protected static final String KEY_IS_IN = "is_in";29 protected static final String KEY_NAME = "name";30 22 31 23 /** … … 199 191 elemValue.trim().toUpperCase())) ? 1 : -1; 200 192 } 201 193 194 public static int matchFieldAbbrev(String elemValue, String primValue) { 195 196 if (elemValue == null) return 0; 197 if (primValue == null) return -1; 198 199 return StringUtils.matchAbbrev(primValue, elemValue) ? 1 : -1; 200 } 201 202 202 203 203 protected int[] getFieldMatchList(OsmPrimitive primitive) { … … 211 211 } 212 212 213 public boolean isMatchable(OsmPrimitive prim) {214 return false;215 }216 217 218 213 public int getMatchQuality(OsmPrimitive primitive) { 219 214 … … 278 273 return result; 279 274 } 275 276 public int compareTo(AddressElement elem) { 277 278 ParentResolver r1 = new ParentResolver(this); 279 ParentResolver r2 = new ParentResolver(elem); 280 281 int retVal = r1.compareTo(r2); 282 if (retVal != 0) return retVal; 283 284 return getName().compareTo(((AddressElement) elem).getName()); 285 } 280 286 } -
applications/editors/josm/plugins/czechaddress/src/org/openstreetmap/josm/plugins/czechaddress/addressdatabase/Database.java
r15166 r15558 14 14 */ 15 15 public class Database { 16 17 private Database() {} 18 private static Database singleton = null; 19 public static Database getInstance() { 20 if (singleton == null) 21 singleton = new Database(); 22 23 return singleton; 24 } 16 25 17 26 /** -
applications/editors/josm/plugins/czechaddress/src/org/openstreetmap/josm/plugins/czechaddress/addressdatabase/House.java
r15461 r15558 4 4 import org.openstreetmap.josm.data.osm.OsmPrimitive; 5 5 import org.openstreetmap.josm.plugins.czechaddress.NotNullList; 6 import org.openstreetmap.josm.plugins.czechaddress.PrimUtils; 7 import org.openstreetmap.josm.plugins.czechaddress.StringUtils; 6 8 import org.openstreetmap.josm.plugins.czechaddress.proposal.Proposal; 7 9 … … 139 141 140 142 // First field is the AlternateNubmer 141 result[0] = matchField(this.cp, prim.get(KEY_ADDR_CP)); 143 result[0] = matchField(this.cp, prim.get(PrimUtils.KEY_ADDR_CP)); 142 144 143 145 // Second field is the Housenumber 144 146 if (parent instanceof Street) 145 result[1] = Math.min( matchField(parent.getName(), prim.get(KEY_ADDR_STREET)), 146 matchField(this.co, prim.get(KEY_ADDR_CO)) ); 147 result[1] = Math.min( 148 matchFieldAbbrev(parent.getName(), prim.get(PrimUtils.KEY_ADDR_STREET)), 149 matchField( this.co, prim.get(PrimUtils.KEY_ADDR_CO)) ); 147 150 return result; 148 151 } … … 160 163 ParentResolver pr = new ParentResolver(this); 161 164 162 props.add(getStringFieldDiff(KEY_ADDR_CP, prim.get(KEY_ADDR_CP), getCP())); 163 props.add(getStringFieldDiff(KEY_ADDR_CO, prim.get(KEY_ADDR_CO), getCO())); 164 165 props.add(getStringFieldDiff(KEY_ADDR_COUNTRY, 166 prim.get(KEY_ADDR_COUNTRY), "CZ")); 165 props.add(getStringFieldDiff(PrimUtils.KEY_ADDR_CP, prim.get(PrimUtils.KEY_ADDR_CP), getCP())); 166 props.add(getStringFieldDiff(PrimUtils.KEY_ADDR_CO, prim.get(PrimUtils.KEY_ADDR_CO), getCO())); 167 168 props.add(getStringFieldDiff(PrimUtils.KEY_ADDR_COUNTRY, 169 prim.get(PrimUtils.KEY_ADDR_COUNTRY), "CZ")); 167 170 168 171 if (pr.parentStreet != null) 169 props.add(getStringFieldDiff(KEY_ADDR_STREET, 170 prim.get(KEY_ADDR_STREET), 172 props.add(getStringFieldDiff(PrimUtils.KEY_ADDR_STREET, 173 prim.get(PrimUtils.KEY_ADDR_STREET), 171 174 pr.parentStreet.getName())); 172 173 /* if (pr.parentViToCi != null) { 174 String targetIsIn = ""; 175 176 if ((pr.parentSuburb != null) && 177 !(pr.parentViToCi.getName().equals(pr.parentSuburb.getName()))) 178 targetIsIn += pr.parentSuburb.getName() + ", "; 179 180 targetIsIn += pr.parentViToCi.getName() + ", "; 181 182 if (pr.parentRegion != null) 183 targetIsIn += pr.parentRegion.getNuts3Name() + " kraj, "; 184 185 targetIsIn += "CZ"; 186 187 props.add(getStringFieldDiff(KEY_ADDR_CITY, 188 prim.get(KEY_ADDR_CITY), 189 pr.parentViToCi.getName())); 190 */ 191 192 175 193 176 if (parent.parent != null) // For sure our parent is a ElemWithStreets 194 props.add(getStringFieldDiff(KEY_IS_IN, 195 prim.get(KEY_IS_IN), 177 props.add(getStringFieldDiff(PrimUtils.KEY_IS_IN, 178 prim.get(PrimUtils.KEY_IS_IN), 196 179 parent.parent.getIsIn())); 197 /* }*/198 180 199 181 // If we have added any proposal so far, add the source info as well. … … 204 186 } 205 187 206 public boolean isMatchable(OsmPrimitive prim) { 188 public static boolean isMatchable(OsmPrimitive prim) { 207 189 208 190 for (String key : prim.keySet()) { … … 211 193 return true; 212 194 } 213 214 195 return false; 215 196 } 197 198 @Override 199 public int compareTo(AddressElement o) { 200 // Most important criterion is the street 201 int val = super.compareTo(o); 202 if (val != 0) return val; 203 if (!(o instanceof House)) return val; 204 205 House house = (House) o; 206 207 // Second most important is the "CO" 208 if (co != null && house.co != null) 209 val = co.compareTo(house.co); 210 if (val != 0) return val; 211 212 // Third most important is the "CP" 213 if (cp != null && house.cp != null) 214 val = cp.compareTo(house.cp); 215 return val; 216 } 216 217 } -
applications/editors/josm/plugins/czechaddress/src/org/openstreetmap/josm/plugins/czechaddress/addressdatabase/ParentResolver.java
r15166 r15558 10 10 * @author Radomír Černoch, radomir.cernoch@gmail.com 11 11 */ 12 public class ParentResolver { 12 public class ParentResolver implements Comparable<ParentResolver> { 13 13 14 14 public Street parentStreet = null; … … 39 39 } 40 40 } 41 42 public int compareTo(ParentResolver o) { 43 int val = 0; 44 45 if (parentRegion != null && o.parentRegion != null) 46 val = parentRegion.compareTo(o.parentRegion); 47 if (val != 0) 48 return val; 49 50 if (parentViToCi != null && o.parentViToCi != null) 51 val = parentViToCi.compareTo(o.parentViToCi); 52 if (val != 0) 53 return val; 54 55 if (parentSuburb != null && o.parentSuburb != null) 56 val = parentSuburb.compareTo(o.parentSuburb); 57 if (val != 0) 58 return val; 59 60 if (parentStreet != null && o.parentStreet != null) 61 val = parentStreet.compareTo(o.parentStreet); 62 return val; 63 } 41 64 }
Note:
See TracChangeset
for help on using the changeset viewer.