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

  ViewVC Help
Powered by ViewVC 1.1.20