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

  ViewVC Help
Powered by ViewVC 1.1.20