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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2382 - (hide annotations) (download)
Thu Feb 26 10:39:12 2015 UTC (9 years, 3 months ago) by torben
File size: 6234 byte(s)
Mere alias + tag højde for : og ; i adressefeltet ved vask
1 torben 2267 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 torben 2382 out = out.replace(";", "");
27     out = out.replace(":", "");
28 torben 2267
29     return out;
30     }
31    
32 torben 2276 public static String injectIntoBk(String bkrute, String injected) {
33     String parts[] = bkrute.split("/");
34 torben 2283
35     if (parts.length != 4) {
36     System.out.println(">BK " + bkrute);
37     return bkrute;
38     }
39    
40 torben 2276 return parts[0] + "/" + parts[1] + "/" + parts[2] + "/" + injected + parts[3];
41     }
42    
43 torben 2267
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 torben 2273 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 torben 2267 ) {
118 torben 2273 result.litra = "" + indAdresse.charAt(i);
119     result.litra = result.litra.toUpperCase();
120     i++;
121     }
122 torben 2267 }
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 torben 2273 result.resten = indAdresse.substring(i).trim();
210 torben 2267
211     return result;
212     }
213    
214     }
215    
216    

  ViewVC Help
Powered by ViewVC 1.1.20