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

  ViewVC Help
Powered by ViewVC 1.1.20