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

Contents of /dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AddressUtils.java

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20