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

  ViewVC Help
Powered by ViewVC 1.1.20