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

  ViewVC Help
Powered by ViewVC 1.1.20