/[projects]/dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AddressUtils.java
ViewVC logotype

Annotation of /dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AddressUtils.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2401 - (hide annotations) (download)
Fri Feb 27 11:05:28 2015 UTC (9 years, 3 months ago) by torben
Original Path: dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AddressUtils.java
File size: 6917 byte(s)
Bedre vask vejnavn
1 torben 2267 package dk.daoas.daoadresseservice;
2    
3     import org.apache.commons.lang3.StringUtils;
4     import org.apache.commons.lang3.text.WordUtils;
5    
6     public class AddressUtils {
7    
8     public static class SplitResult {
9     public String vej = "";
10     public String husnr = "";
11     public String litra = "";
12     public String etage = "";
13     public String lejlighed = "";
14     public String resten = "";
15 torben 2386
16     @Override
17     public String toString() {
18     return vej + " / " + husnr + " / " + litra;
19     }
20 torben 2267 }
21    
22     public static String vaskVejnavn(String indVejnavn) {
23 torben 2401 StringBuilder sb = new StringBuilder();
24     char chars[] = indVejnavn.toCharArray();
25 torben 2267
26 torben 2401 for (char c: chars) {
27     if ( Character.isAlphabetic(c)) {
28     sb.append(Character.toLowerCase(c) );
29     }
30     }
31 torben 2386
32 torben 2401 return sb.toString();
33 torben 2267 }
34    
35 torben 2276 public static String injectIntoBk(String bkrute, String injected) {
36     String parts[] = bkrute.split("/");
37 torben 2283
38     if (parts.length != 4) {
39     System.out.println(">BK " + bkrute);
40     return bkrute;
41     }
42    
43 torben 2276 return parts[0] + "/" + parts[1] + "/" + parts[2] + "/" + injected + parts[3];
44     }
45    
46 torben 2267
47     /*
48     * Er en 1-1 port af SplitAdresse() fra funcSplitAdresse.php
49     */
50     public static SplitResult splitAdresse(String indAdresse) {
51     indAdresse = indAdresse.trim();
52    
53     SplitResult result = new SplitResult();
54    
55    
56     int i=0;
57     int len = indAdresse.length();
58     StringBuilder delStreng = new StringBuilder();
59    
60     // ignorer blanke og komma og punktum
61     while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
62     i++;
63     }
64    
65    
66     // alle karakterer indtil det første tal er vejnavn
67     while ((i < len) && Character.isDigit(indAdresse.charAt(i))==false ) {
68     delStreng.append( indAdresse.charAt(i) );
69     i++;
70     }
71    
72 torben 2399
73 torben 2398 result.vej = delStreng.toString().toLowerCase().trim();
74     if ( result.vej.endsWith(".") || result.vej.endsWith(",")) {
75     result.vej = result.vej.substring(0, result.vej.length() - 1);
76 torben 2399 result.vej = result.vej.trim();
77     }
78    
79     //special case - hvis strengen ender med ' nr' skal ' nr' fjernes
80 torben 2398 if ( result.vej.endsWith(" nr")) {
81     result.vej = result.vej.substring(0, result.vej.length() - 3);
82     }
83    
84     result.vej = WordUtils.capitalize( result.vej.trim() );
85    
86 torben 2267
87    
88     // første tal er husnummer
89     delStreng = new StringBuilder();
90     while ((i < len) && Character.isDigit(indAdresse.charAt(i))==true ) {
91     delStreng.append( indAdresse.charAt(i) );
92     i++;
93     }
94     result.husnr = delStreng.toString();
95    
96     // ignorer blanke og komma og punktum
97     while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
98     i++;
99     }
100    
101     /*
102     // hvis næste delstreng er et enkelt bogstav så er det husbogstavet
103     delStreng = new StringBuilder();
104     while (i<len && Character.isDigit(indAdresse.charAt(i))==false && indAdresse.charAt(i) == '.' && indAdresse.charAt(i) != ',' && indAdresse.charAt(i) != ' ' ) {
105     delStreng.append( indAdresse.charAt(i) );
106     i++;
107     }
108    
109     System.out.println(indAdresse + " >" + delStreng + "< " +i);
110    
111     if (delStreng.length() == 1) {
112    
113     result.litra = delStreng.toString().toUpperCase();
114     if ( !Character.isAlphabetic(result.litra.charAt(0))) {
115     result.litra = ""; //$HusBogstav må KUN være A-Z
116     }
117     delStreng = new StringBuilder();
118    
119     // ignorer blanke og komma og punktum
120     while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
121     i++;
122     }
123     }
124     */
125    
126     if (i>=len) //THN tilføjelse
127     return result;
128    
129 torben 2387 if (Character.isAlphabetic(indAdresse.charAt(i) )) {
130     char current = Character.toUpperCase( indAdresse.charAt(i) );
131    
132     if (current != 'Æ'&& current != 'Ø' && current != 'Å') {
133     if ( (i+1 == len ||
134     (Character.isAlphabetic(indAdresse.charAt(i+1)) == false
135     /*&& indAdresse.charAt(i+1) != '.'*/)
136     )
137     ) {
138     result.litra = "" + current;
139     i++;
140     }
141 torben 2273 }
142 torben 2267 }
143    
144 torben 2387 // ignorer blanke og komma og punktum
145     while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
146     i++;
147     }
148    
149 torben 2267
150    
151    
152     // første tal er etage (eller evt. st er stuen)
153     if (delStreng.toString().toLowerCase().equals("st")) {
154     result.etage = delStreng.toString().toLowerCase();
155     }
156     else {
157     delStreng = new StringBuilder();
158     String nextTwo = StringUtils.substring(indAdresse, i, i+2).toLowerCase();
159     if ( nextTwo.equals("st") ) {
160     result.etage = nextTwo;
161     i += nextTwo.length();
162     }
163     else {
164     while ((i < len) && Character.isDigit(indAdresse.charAt(i))==true ) {
165     delStreng.append( indAdresse.charAt(i) );
166     i++;
167     }
168     result.etage = delStreng.toString();
169     }
170     }
171    
172    
173     // Hvis vi fandt en etage angivelse skal vi også kigge efter lejlighed/side
174     if (result.etage.length() > 0 ) {
175    
176     // ignorer blanke og komma og punktum
177     while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
178     i++;
179     }
180    
181    
182     String next = StringUtils.substring(indAdresse, i, i+3).toLowerCase();
183     // Ignorer hvis næste info er 'sal'
184     if (next.equals("sal")) {
185     i += 3;
186    
187     // ignorer blanke og komma og punktum
188     while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
189     i++;
190     }
191     }
192    
193     next = StringUtils.substring(indAdresse, i, i+3).toLowerCase();
194     // Ignorer hvis næste info er 'dør'
195     if (next.equals("dør")) {
196     i += 3;
197    
198     // ignorer blanke og komma og punktum
199     while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
200     i++;
201     }
202     }
203    
204     // Ignorer hvis næste info er 'lejlighed' eller 'lejl.' eller 'Lej'
205     next = StringUtils.substring(indAdresse, i, i+9).toLowerCase();
206     if (next.equals("lejlighed") ) {
207     i += 9;
208     }
209     next = StringUtils.substring(indAdresse, i, i+4).toLowerCase();
210     if (next.equals("lejl") ) {
211     i += 4;
212     }
213     next = StringUtils.substring(indAdresse, i, i+3).toLowerCase();
214     if (next.equals("lej") ) {
215     i += 3;
216     }
217    
218     // ignorer blanke og komma og punktum
219     while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
220     i++;
221     }
222    
223     // alle karakterer indtil det første blanke er lejlighed/side
224     delStreng = new StringBuilder();
225     while (i<len && indAdresse.charAt(i) != ' ') {
226     delStreng.append( indAdresse.charAt(i) );
227     i++;
228     }
229     result.lejlighed = delStreng.toString().toLowerCase();
230     result.lejlighed = result.lejlighed.replace(".", "");
231     }
232    
233     // saml resten op (kan gøres smartere med en substr)
234 torben 2273 result.resten = indAdresse.substring(i).trim();
235 torben 2267
236     return result;
237     }
238    
239     }
240    
241    

  ViewVC Help
Powered by ViewVC 1.1.20