/[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 2267 - (hide annotations) (download)
Thu Feb 12 13:57:32 2015 UTC (9 years, 3 months ago) by torben
Original Path: dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AddressUtils.java
File size: 5807 byte(s)
Initial import.
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     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