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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2276 - (hide annotations) (download)
Fri Feb 13 13:48:09 2015 UTC (9 years, 3 months ago) by torben
Original Path: dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AddressUtils.java
File size: 6071 byte(s)
Implementer udvidet dækning i DAO & BK
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 torben 2276 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 torben 2267
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 torben 2273 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 torben 2267 ) {
110 torben 2273 result.litra = "" + indAdresse.charAt(i);
111     result.litra = result.litra.toUpperCase();
112     i++;
113     }
114 torben 2267 }
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 torben 2273 result.resten = indAdresse.substring(i).trim();
202 torben 2267
203     return result;
204     }
205    
206     }
207    
208    

  ViewVC Help
Powered by ViewVC 1.1.20