--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AddressUtils.java 2015/02/12 13:57:32 2267 +++ dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AddressUtils.java 2015/03/20 13:57:47 2457 @@ -12,19 +12,74 @@ public String etage = ""; public String lejlighed = ""; public String resten = ""; + + @Override + public String toString() { + return vej + " / " + husnr + " / " + litra; + } + } + + public static char fjernAccentTegn(char c) { + switch (c) { + case 'é': + return 'e'; + case 'è': + return 'e'; + + case 'û': + return 'u'; + case 'ü': + return 'u'; + + case 'ö': + return 'o'; + case 'ô': + return 'o'; + + case 'ä': + return 'a'; + case 'â': + return 'a'; + + case 'ñ': + return 'n'; + + default: + return c; + } } public static String vaskVejnavn(String indVejnavn) { - String out = indVejnavn.toLowerCase(); - out = out.replace(" ", ""); - out = out.replace(".", ""); - out = out.replace(",", ""); - out = out.replace("-", ""); - out = out.replace("/", ""); - out = out.replace("\\", ""); - out = out.replace("'", ""); + StringBuilder sb = new StringBuilder(); + char chars[] = indVejnavn.toCharArray(); + + for (char c: chars) { + if ( Character.isAlphabetic(c)) { + c = Character.toLowerCase(c); + c = fjernAccentTegn(c); + + sb.append( c ); + } else if ( Character.isDigit(c)) { + sb.append(c); + } + + } + + return sb.toString(); + } + + public static String injectIntoBk(String bkrute, String injected) { + if (bkrute == null) + return null; + + String parts[] = bkrute.split("/"); + + if (parts.length != 4) { + System.out.println(">BK " + bkrute); + return bkrute; + } - return out; + return parts[0] + "/" + parts[1] + "/" + parts[2] + "/" + injected + parts[3]; } @@ -45,6 +100,13 @@ while (i=len) //THN tilføjelse return result; - if (Character.isAlphabetic(indAdresse.charAt(i)) && - (i+1 == len || Character.isAlphabetic(indAdresse.charAt(i+1)) == false + if (Character.isAlphabetic(indAdresse.charAt(i) )) { + char current = Character.toUpperCase( indAdresse.charAt(i) ); + + if (current != 'Æ'&& current != 'Ø' && current != 'Å') { + if ( (i+1 == len || + (Character.isAlphabetic(indAdresse.charAt(i+1) ) == false + /*&& indAdresse.charAt(i+1) != '.'*/ + + && checkCo(indAdresse,i) == false // Fra sortér C/O + ) ) - ) { - result.litra = "" + indAdresse.charAt(i); - result.litra = result.litra.toUpperCase(); + ) { + result.litra = "" + current; + i++; + } + } + } + + // ignorer blanke og komma og punktum + while (i