/[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 2273 - (hide 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 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    
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 torben 2273 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 torben 2267 ) {
105 torben 2273 result.litra = "" + indAdresse.charAt(i);
106     result.litra = result.litra.toUpperCase();
107     i++;
108     }
109 torben 2267 }
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 torben 2273 result.resten = indAdresse.substring(i).trim();
197 torben 2267
198     return result;
199     }
200    
201     }
202    
203    

  ViewVC Help
Powered by ViewVC 1.1.20