View Javadoc
1   package nl.mineleni.cbsviewer.servlet.gazetteer.lusclient;
2   
3   import static nl.mineleni.cbsviewer.util.NumberConstants.OPENLS_ZOOMSCALE_GEMEENTE;
4   import static nl.mineleni.cbsviewer.util.NumberConstants.OPENLS_ZOOMSCALE_PLAATS;
5   import static nl.mineleni.cbsviewer.util.NumberConstants.OPENLS_ZOOMSCALE_PROVINCIE;
6   import static nl.mineleni.cbsviewer.util.NumberConstants.OPENLS_ZOOMSCALE_STANDAARD;
7   
8   import org.slf4j.Logger;
9   import org.slf4j.LoggerFactory;
10  
11  /**
12   * OpenLSClientAddress is een "DAO" achtige voor een OpenLS adres.
13   * 
14   * @author mprins
15   */
16  public class OpenLSClientAddress {
17      /**
18       * de string gemeente tussen haakjes. * {@value}
19       */
20      public static final String APPEND_GEMEENTE = " (gemeente)";
21  
22      /**
23       * de string plaats tussen haakjes. {@value}
24       */
25      public static final String APPEND_PLAATS = " (plaats)";
26  
27      /**
28       * de string provincie tussen haakjes. * {@value}
29       */
30      public static final String APPEND_PROVINCIE = " (provincie)";
31  
32      /** onze LOGGER. */
33      private static final Logger LOGGER = LoggerFactory
34              .getLogger(OpenLSClientAddress.class);
35      /** string weergave van dit adres. */
36      private String addressString = null;
37      /** "provincie" voor dit adres. */
38      private String countrySubdivision = "";
39      /** "gemeente" voor dit adres. */
40      private String municipality = "";
41      /** "plaatsnaam" voor dit adres. */
42      private String municipalitySubdivision = "";
43      /** postcode voor dit adres. */
44      private String postalCode = "";
45      /** straat voor dit adres. */
46      private String streetName = "";
47      /** huisnummer voor dit adres. */
48      private String streetNumber = "";
49      /** x coordinaat voor dit adres. */
50      private String xCoord = "";
51      /** y coordinaat voor dit adres. */
52      private String yCoord = "";
53  
54      /**
55       * Instantiates a new open ls client address.
56       */
57      public OpenLSClientAddress() {
58      }
59  
60      /**
61       * Instantiates a new open ls client address.
62       * 
63       * @param xCoord
64       *            de x coord
65       * @param yCoord
66       *            de y coord
67       * @param postalCode
68       *            de postcode
69       * @param streetName
70       *            de straatnaam
71       * @param streetNumber
72       *            het huisnummer
73       * @param countrySubdivision
74       *            de provincie
75       * @param municipality
76       *            de gemeente
77       * @param municipalitySubdivision
78       *            de plaatsnaam
79       */
80      public OpenLSClientAddress(final String xCoord, final String yCoord,
81              final String postalCode, final String streetName,
82              final String streetNumber, final String countrySubdivision,
83              final String municipality, final String municipalitySubdivision) {
84          this.xCoord = xCoord;
85          this.yCoord = yCoord;
86          this.postalCode = postalCode;
87          this.streetName = streetName;
88          this.streetNumber = streetNumber;
89          this.countrySubdivision = countrySubdivision;
90          this.municipality = municipality;
91          this.municipalitySubdivision = municipalitySubdivision;
92      }
93  
94      /**
95       * geeft het adres als string in de vorm straat - postcode - stad - gemeente
96       * - provincie.
97       * 
98       * @return de address string
99       * @see #toString()
100      */
101     public String getAddressString() {
102         if (this.addressString != null) { return this.addressString; }
103 
104         final StringBuilder sb = new StringBuilder();
105         sb.append(this.streetName);
106         String spacer = sb.length() < 1 ? "" : " - ";
107 
108         sb.append(sb.length() < 1 ? ""
109                 : (!this.streetNumber.equals("") ? spacer + this.streetNumber
110                         : ""));
111 
112         sb.append(!this.postalCode.equals("") ? spacer + this.postalCode : "");
113 
114         spacer = sb.length() < 1 ? "" : " - ";
115         sb.append(!this.municipalitySubdivision.equals("") ? spacer
116                 + this.municipalitySubdivision + APPEND_PLAATS : "");
117 
118         spacer = sb.toString().equals("") ? "" : " - ";
119         if (this.municipalitySubdivision.equals("")) {
120             sb.append(!this.municipality.equals("") ? spacer
121                     + this.municipality + APPEND_GEMEENTE : "");
122         }
123 
124         spacer = sb.length() < 1 ? "" : " - ";
125         if (this.municipality.equals("")) {
126             sb.append(!this.countrySubdivision.equals("") ? spacer
127                     + this.countrySubdivision + APPEND_PROVINCIE : "");
128         }
129         this.addressString = sb.toString();
130         LOGGER.debug("Adres is: " + this.addressString);
131         return this.addressString;
132     }
133 
134     /**
135      * Gets de "provincie" voor dit adres.
136      * 
137      * @return de "provincie" voor dit adres
138      */
139     public String getCountrySubdivision() {
140         return this.countrySubdivision;
141     }
142 
143     /**
144      * Gets de "gemeente" voor dit adres.
145      * 
146      * @return de "gemeente" voor dit adres
147      */
148     public String getMunicipality() {
149         return this.municipality;
150     }
151 
152     /**
153      * Gets de "plaatsnaam" voor dit adres.
154      * 
155      * @return de "plaatsnaam" voor dit adres
156      */
157     public String getMunicipalitySubdivision() {
158         return this.municipalitySubdivision;
159     }
160 
161     /**
162      * de postcode voor dit adres.
163      * 
164      * @return de postcode voor dit adres
165      */
166     public String getPostalCode() {
167         return this.postalCode;
168     }
169 
170     /**
171      * Proberen op basis van het type adres hit te bepalen wat de zoom-in radius
172      * zou moeten zijn.
173      * 
174      * @return een radius die gebruikt kan worden als in-zoom gebied.
175      * @see nl.mineleni.cbsviewer.util.NumberConstants#OPENLS_ZOOMSCALE_GEMEENTE
176      * @see nl.mineleni.cbsviewer.util.NumberConstants#OPENLS_ZOOMSCALE_PLAATS
177      * @see nl.mineleni.cbsviewer.util.NumberConstants#OPENLS_ZOOMSCALE_PROVINCIE
178      * @see nl.mineleni.cbsviewer.util.NumberConstants#OPENLS_ZOOMSCALE_STANDAARD
179      */
180     public int getRadius() {
181 
182         if (this.getAddressString().contains(APPEND_PLAATS)) {
183             // plaats
184             return OPENLS_ZOOMSCALE_PLAATS.intValue();
185         } else if (this.getAddressString().contains(APPEND_GEMEENTE)) {
186             // gemeente
187             return OPENLS_ZOOMSCALE_GEMEENTE.intValue();
188         } else if (this.getAddressString().contains(APPEND_PROVINCIE)) {
189             // provincie
190             return OPENLS_ZOOMSCALE_PROVINCIE.intValue();
191         } else {
192             // default
193             return OPENLS_ZOOMSCALE_STANDAARD.intValue();
194         }
195     }
196 
197     /**
198      * Gets de straat voor dit adres.
199      * 
200      * @return de straat voor dit adres
201      */
202     public String getStreetName() {
203         return this.streetName;
204     }
205 
206     /**
207      * Gets de huisnummer voor dit adres.
208      * 
209      * @return de huisnummer voor dit adres
210      */
211     public String getStreetNumber() {
212         return this.streetNumber;
213     }
214 
215     /**
216      * Gets de x coord.
217      * 
218      * @return de x coord
219      */
220     public String getxCoord() {
221         return this.xCoord;
222     }
223 
224     /**
225      * Gets de y coord.
226      * 
227      * @return de y coord
228      */
229     public String getyCoord() {
230         return this.yCoord;
231     }
232 
233     /**
234      * controleert of dit een geldig adres is.
235      * 
236      * @return true, if is valid client address
237      */
238     public boolean isValidClientAddress() {
239         if (this.xCoord.equals("")) { return false; }
240         if (this.yCoord.equals("")) { return false; }
241         if (this.postalCode.equals("") && this.streetName.equals("")
242                 && this.countrySubdivision.equals("")
243                 && this.municipality.equals("")
244                 && this.municipalitySubdivision.equals("")) { return false; }
245         return true;
246     }
247 
248     /**
249      * Sets de "provincie" voor dit adres.
250      * 
251      * @param countrySubdivision
252      *            de new "provincie" voor dit adres
253      */
254     public void setCountrySubdivision(final String countrySubdivision) {
255         this.countrySubdivision = countrySubdivision;
256     }
257 
258     /**
259      * Sets de "gemeente" voor dit adres.
260      * 
261      * @param municipality
262      *            de new "gemeente" voor dit adres
263      */
264     public void setMunicipality(final String municipality) {
265         this.municipality = municipality;
266     }
267 
268     /**
269      * Sets de "plaatsnaam" voor dit adres.
270      * 
271      * @param municipalitySubdivision
272      *            de new "plaatsnaam" voor dit adres
273      */
274     public void setMunicipalitySubdivision(final String municipalitySubdivision) {
275         this.municipalitySubdivision = municipalitySubdivision;
276     }
277 
278     /**
279      * Sets de postcode voor dit adres.
280      * 
281      * @param postalCode
282      *            de new postcode voor dit adres
283      */
284     public void setPostalCode(final String postalCode) {
285         this.postalCode = postalCode;
286     }
287 
288     /**
289      * Sets de straat voor dit adres.
290      * 
291      * @param streetName
292      *            de new straat voor dit adres
293      */
294     public void setStreetName(final String streetName) {
295         this.streetName = streetName;
296     }
297 
298     /**
299      * Sets de huisnummer voor dit adres.
300      * 
301      * @param streetNumber
302      *            de new huisnummer voor dit adres
303      */
304     public void setStreetNumber(final String streetNumber) {
305         this.streetNumber = streetNumber;
306     }
307 
308     /**
309      * Sets de x coord.
310      * 
311      * @param xcoord
312      *            de new x coord
313      */
314     public void setxCoord(final String xcoord) {
315         this.xCoord = xcoord;
316     }
317 
318     /**
319      * Sets de y coord.
320      * 
321      * @param ycoord
322      *            de new y coord
323      */
324     public void setyCoord(final String ycoord) {
325         this.yCoord = ycoord;
326     }
327 
328     /**
329      * geeft het adres als string.
330      * 
331      * @return de string
332      * @see #getAddressString()
333      */
334     @Override
335     public String toString() {
336         return this.getAddressString();
337     }
338 }