From 6a07fc479021dbf61143d432285c573faf38d6b9 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Thu, 7 May 2015 12:51:04 +1200 Subject: Implement address formatter --- src/org/traccar/geocode/Address.java | 48 +++++++++++++++++++ src/org/traccar/geocode/AddressFormat.java | 74 ++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 src/org/traccar/geocode/Address.java create mode 100644 src/org/traccar/geocode/AddressFormat.java (limited to 'src/org/traccar/geocode') diff --git a/src/org/traccar/geocode/Address.java b/src/org/traccar/geocode/Address.java new file mode 100644 index 000000000..660348509 --- /dev/null +++ b/src/org/traccar/geocode/Address.java @@ -0,0 +1,48 @@ +/* + * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) + * + * 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 org.traccar.geocode; + +public class Address { + + private String postcode; + public String getPostcode() { return postcode; } + public void setPostcode(String postcode) { this.postcode = postcode; } + + private String country; + public String getCountry() { return country; } + public void setCountry(String country) { this.country = country; } + + private String state; + public String getState() { return state; } + public void setState(String state) { this.state = state; } + + private String district; + public String getDistrict() { return district; } + public void setDistrict(String district) { this.district = district; } + + private String settlement; + public String getSettlement() { return settlement; } + public void setSettlement(String settlement) { this.settlement = settlement; } + + private String street; + public String getStreet() { return street; } + public void setStreet(String street) { this.street = street; } + + private String house; + public String getHouse() { return house; } + public void setHouse(String house) { this.house = house; } + +} diff --git a/src/org/traccar/geocode/AddressFormat.java b/src/org/traccar/geocode/AddressFormat.java new file mode 100644 index 000000000..972326975 --- /dev/null +++ b/src/org/traccar/geocode/AddressFormat.java @@ -0,0 +1,74 @@ +/* + * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) + * + * 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 org.traccar.geocode; + +import java.text.FieldPosition; +import java.text.Format; +import java.text.ParsePosition; + +/** + * Available parameters: + * + * %p - postcode + * %c - country + * %s - state + * %d - district + * %t - settlement (town) + * %r - street (road) + * %h - house + * + */ +public class AddressFormat extends Format { + + private final String format; + + public AddressFormat(String format) { + this.format = format; + } + + private static String replace(String s, String key, String value) { + if (value != null) { + s = s.replace(key, value); + } else { + s = s.replaceAll("[, ]*" + key, ""); + } + return s; + } + + @Override + public StringBuffer format(Object o, StringBuffer stringBuffer, FieldPosition fieldPosition) { + Address address = (Address) o; + String result = format; + + result = replace(result, "%p", address.getPostcode()); + result = replace(result, "%c", address.getCountry()); + result = replace(result, "%s", address.getState()); + result = replace(result, "%d", address.getDistrict()); + result = replace(result, "%t", address.getSettlement()); + result = replace(result, "%r", address.getStreet()); + result = replace(result, "%h", address.getHouse()); + + result = result.replaceAll("^[, ]*", ""); + + return stringBuffer.append(result); + } + + @Override + public Address parseObject(String s, ParsePosition parsePosition) { + throw new UnsupportedOperationException(); + } + +} -- cgit v1.2.3