/[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 2267 - (show annotations) (download)
Thu Feb 12 13:57:32 2015 UTC (9 years, 3 months ago) by torben
File size: 5807 byte(s)
Initial import.
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 (i+1 == len || Character.isAlphabetic(indAdresse.charAt(i+1)) == false
102 )
103 ) {
104 result.litra = "" + indAdresse.charAt(i);
105 result.litra = result.litra.toUpperCase();
106 i++;
107 }
108
109
110
111
112 // første tal er etage (eller evt. st er stuen)
113 if (delStreng.toString().toLowerCase().equals("st")) {
114 result.etage = delStreng.toString().toLowerCase();
115 }
116 else {
117 delStreng = new StringBuilder();
118 String nextTwo = StringUtils.substring(indAdresse, i, i+2).toLowerCase();
119 if ( nextTwo.equals("st") ) {
120 result.etage = nextTwo;
121 i += nextTwo.length();
122 }
123 else {
124 while ((i < len) && Character.isDigit(indAdresse.charAt(i))==true ) {
125 delStreng.append( indAdresse.charAt(i) );
126 i++;
127 }
128 result.etage = delStreng.toString();
129 }
130 }
131
132
133 // Hvis vi fandt en etage angivelse skal vi også kigge efter lejlighed/side
134 if (result.etage.length() > 0 ) {
135
136 // ignorer blanke og komma og punktum
137 while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
138 i++;
139 }
140
141
142 String next = StringUtils.substring(indAdresse, i, i+3).toLowerCase();
143 // Ignorer hvis næste info er 'sal'
144 if (next.equals("sal")) {
145 i += 3;
146
147 // ignorer blanke og komma og punktum
148 while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
149 i++;
150 }
151 }
152
153 next = StringUtils.substring(indAdresse, i, i+3).toLowerCase();
154 // Ignorer hvis næste info er 'dør'
155 if (next.equals("dør")) {
156 i += 3;
157
158 // ignorer blanke og komma og punktum
159 while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
160 i++;
161 }
162 }
163
164 // Ignorer hvis næste info er 'lejlighed' eller 'lejl.' eller 'Lej'
165 next = StringUtils.substring(indAdresse, i, i+9).toLowerCase();
166 if (next.equals("lejlighed") ) {
167 i += 9;
168 }
169 next = StringUtils.substring(indAdresse, i, i+4).toLowerCase();
170 if (next.equals("lejl") ) {
171 i += 4;
172 }
173 next = StringUtils.substring(indAdresse, i, i+3).toLowerCase();
174 if (next.equals("lej") ) {
175 i += 3;
176 }
177
178 // ignorer blanke og komma og punktum
179 while (i<len && (indAdresse.charAt(i) == '.' || indAdresse.charAt(i) == ',' || indAdresse.charAt(i) == ' ') ) {
180 i++;
181 }
182
183 // alle karakterer indtil det første blanke er lejlighed/side
184 delStreng = new StringBuilder();
185 while (i<len && indAdresse.charAt(i) != ' ') {
186 delStreng.append( indAdresse.charAt(i) );
187 i++;
188 }
189 result.lejlighed = delStreng.toString().toLowerCase();
190 result.lejlighed = result.lejlighed.replace(".", "");
191 }
192
193 // saml resten op (kan gøres smartere med en substr)
194 result.resten = indAdresse.substring(i);
195
196 return result;
197 }
198
199 }
200
201

  ViewVC Help
Powered by ViewVC 1.1.20