package dk.daoas.daoadresseservice; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; public class AliasGenerator { static class Replacement { public String search; public String replace; public Replacement(String search, String replace) { this.search = search; this.replace = replace; } } ArrayList replacements = new ArrayList(); public AliasGenerator() { replacements.add( new Replacement("alle", "allé") ); replacements.add( new Replacement("allé", "alle") ); // forkortelser replacements.add( new Replacement("dronningens", "dr") ); replacements.add( new Replacement("dr.", "dronningens") ); replacements.add( new Replacement("dr ", "dronningens") ); replacements.add( new Replacement("dronning", "dr") ); replacements.add( new Replacement("dr.", "dronning") ); replacements.add( new Replacement("dr ", "dronning") ); replacements.add( new Replacement("kng", "kongen") ); replacements.add( new Replacement("kongen", "kng") ); replacements.add( new Replacement("kvt", "kvarter") ); replacements.add( new Replacement("kvarter", "kvt") ); replacements.add( new Replacement("gl", "gammel") ); replacements.add( new Replacement("gammel", "gl") ); replacements.add( new Replacement("gl", "gamle") ); replacements.add( new Replacement("gamle", "gl") ); replacements.add( new Replacement("lille", "ll") ); replacements.add( new Replacement("ll ", "lille") ); replacements.add( new Replacement("ll.", "lille") ); replacements.add( new Replacement("store", "st") ); replacements.add( new Replacement("st ", "store") ); replacements.add( new Replacement("st.", "store") ); replacements.add( new Replacement("søndre", "sdr") ); replacements.add( new Replacement("sdr", "søndre") ); replacements.add( new Replacement("sønder", "sdr") ); replacements.add( new Replacement("sdr", "sønder") ); replacements.add( new Replacement("nørre", "nr") ); replacements.add( new Replacement("nr", "nørre") ); replacements.add( new Replacement("nordre", "ndr") ); replacements.add( new Replacement("ndr", "nordre") ); replacements.add( new Replacement("vestre", "vester") ); replacements.add( new Replacement("vester", "vestre") ); replacements.add( new Replacement("søndre", "sønder") ); replacements.add( new Replacement("sønder", "søndre") ); replacements.add( new Replacement("østre", "øster") ); replacements.add( new Replacement("øster", "østre") ); replacements.add( new Replacement("borgmester", "borgm") ); replacements.add( new Replacement("borgm", "borgmester") ); replacements.add( new Replacement("sankt", "skt") ); replacements.add( new Replacement("sankt", "sct") ); replacements.add( new Replacement("skt", "sankt") ); replacements.add( new Replacement("skt", "sct") ); replacements.add( new Replacement("sct", "skt") ); // fornavn forkortelser replacements.add( new Replacement("john", "j") ); replacements.add( new Replacement("thomas", "th") ); replacements.add( new Replacement("thorvald", "th") ); replacements.add( new Replacement("frederik", "fr") ); replacements.add( new Replacement("frederiks", "fr") ); replacements.add( new Replacement("christian", "chr") ); replacements.add( new Replacement("christians", "chr") ); replacements.add( new Replacement("kristian", "kr") ); replacements.add( new Replacement("kristians", "kr") ); replacements.add( new Replacement("mylius", "myl") ); replacements.add( new Replacement("myl", "mylius") ); replacements.add( new Replacement("ludvig", "ludv") ); replacements.add( new Replacement("ludv", "ludvig") ); // alternative stavninger replacements.add( new Replacement("peder", "peter") ); replacements.add( new Replacement("peter", "peder") ); // Romertal replacements.add( new Replacement("1", "i") ); replacements.add( new Replacement("i", "1") ); replacements.add( new Replacement("2", "ii") ); replacements.add( new Replacement("ii", "2") ); replacements.add( new Replacement("3", "iii") ); replacements.add( new Replacement("iii", "3") ); replacements.add( new Replacement("4", "iv") ); replacements.add( new Replacement("iv", "4") ); replacements.add( new Replacement("5", "v") ); replacements.add( new Replacement("v", "5") ); replacements.add( new Replacement("6", "vi") ); replacements.add( new Replacement("vi", "6") ); replacements.add( new Replacement("7", "vii") ); replacements.add( new Replacement("vii", "7") ); replacements.add( new Replacement("8", "viii") ); replacements.add( new Replacement("viii", "8") ); replacements.add( new Replacement("9", "ix") ); replacements.add( new Replacement("ix", "9") ); replacements.add( new Replacement("10", "x") ); replacements.add( new Replacement("x", "10") ); //alternative måder at stave vej/gade/alle replacements.add( new Replacement("vej", "ve") ); replacements.add( new Replacement("vej", "vj") ); replacements.add( new Replacement("vej", "v") ); replacements.add( new Replacement("vej", "vejen") ); replacements.add( new Replacement("vejen", "vej") ); replacements.add( new Replacement("v", "vej") );//Vi kan have vejnavne i DB der bare slutter på v istedet for vej replacements.add( new Replacement("alle", "all") ); replacements.add( new Replacement("allé", "all") ); replacements.add( new Replacement("alle", "allú") ); //Fundet i logs.hentruteinfo replacements.add( new Replacement("allé", "allú") ); replacements.add( new Replacement("gade", "gaed") ); //Fundet i logs.hentruteinfo replacements.add( new Replacement("gade", "gde") ); replacements.add( new Replacement("plads", "pl") ); replacements.add( new Replacement("vænget", "vænge") ); replacements.add( new Replacement("boulevard", "blvd") ); replacements.add( new Replacement("blvd", "boulevard") ); replacements.add( new Replacement("boulevard", "boule") ); replacements.add( new Replacement("boule", "boulevard") ); replacements.add( new Replacement("kronborg", "krbg") ); //Krbg ladegårdsvej, 3000 replacements.add( new Replacement("krbg", "kronborg") ); } public Set findVejAliaser(String vejnavn) { vejnavn = vejnavn.toLowerCase(); HashSet aliasSet = new HashSet(); aliasSet.add(vejnavn); for (Replacement repl : replacements) { if (vejnavn.indexOf(repl.search) >= 0) { aliasSet.add( vejnavn.replace(repl.search, repl.replace) ); } } // Opbyg æøå varianter over alle fundne aliaser HashSet variants = new HashSet( aliasSet );//brug Copy-Constructor for (String vVejnavn : variants) { // danske tegn 1 aliasSet.add( vVejnavn.replace("æ", "ae") ); aliasSet.add( vVejnavn.replace("ø", "oe") ); aliasSet.add( vVejnavn.replace("å", "aa") ); aliasSet.add( vVejnavn.replace("ae", "æ") ); aliasSet.add( vVejnavn.replace("oe", "ø") ); aliasSet.add( vVejnavn.replace("aa", "å") ); //danske tegn 2 aliasSet.add( vVejnavn.replace("æ", "ae").replace("ø", "oe") ); aliasSet.add( vVejnavn.replace("æ", "ae").replace("å", "aa") ); aliasSet.add( vVejnavn.replace("ø", "oe").replace("å", "aa") ); aliasSet.add( vVejnavn.replace("ae", "æ").replace("oe","ø") ); aliasSet.add( vVejnavn.replace("ae", "æ").replace("aa","å") ); aliasSet.add( vVejnavn.replace("oe", "ø").replace("aa", "å") ); //danske tegn 3 aliasSet.add( vVejnavn.replace("æ", "ae").replace("ø", "oe").replace("å", "aa") ); aliasSet.add( vVejnavn.replace("ae", "æ").replace("oe", "ø").replace("aa", "å") ); //udenlandsketegn aliasSet.add( vVejnavn.replace("u", "ü") ); aliasSet.add( vVejnavn.replace("ü", "u") ); aliasSet.add( vVejnavn.replace("ä", "æ") ); aliasSet.add( vVejnavn.replace("æ", "ä") ); aliasSet.add( vVejnavn.replace("ö", "ø") ); aliasSet.add( vVejnavn.replace("ø", "ö") ); } return aliasSet; } }