--- dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AliasGenerator.java 2016/01/14 10:12:35 2808 +++ dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AliasGenerator.java 2016/01/14 17:13:55 2814 @@ -1,7 +1,9 @@ package dk.daoas.daoadresseservice; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; +import java.util.Map; import java.util.Set; public class AliasGenerator { @@ -16,7 +18,9 @@ } } - ArrayList replacements = new ArrayList(); + private ArrayList replacements = new ArrayList(); + private Map> aliasCache = new HashMap>(8192); + public AliasGenerator() { replacements.add( new Replacement("alle", "allé") ); @@ -73,6 +77,9 @@ replacements.add( new Replacement("østre", "øster") ); replacements.add( new Replacement("øster", "østre") ); + replacements.add( new Replacement("nordre", "nørre") ); + replacements.add( new Replacement("nørre", "nordre") ); + replacements.add( new Replacement("borgmester", "borgm") ); replacements.add( new Replacement("borgm", "borgmester") ); @@ -172,18 +179,36 @@ replacements.add( new Replacement("kronborg", "krbg") ); //Krbg ladegårdsvej, 3000 replacements.add( new Replacement("krbg", "kronborg") ); + + System.out.println("AliasGenetator, loaded replacements: " + replacements.size() ); } - public Set findVejAliaser(String vejnavn) { vejnavn = vejnavn.toLowerCase(); + + Set aliasSet = aliasCache.get(vejnavn); + if (aliasSet == null) { + aliasSet = genererVejAliaser(vejnavn); + aliasCache.put(vejnavn, aliasSet); + } + + return aliasSet; + + } + + + private Set genererVejAliaser(String vejnavn) { + HashSet aliasSet = new HashSet(); aliasSet.add(vejnavn); for (Replacement repl : replacements) { - aliasSet.add( vejnavn.replace(repl.search, repl.replace) ); + if (vejnavn.indexOf(repl.search) >= 0) { + aliasSet.add( vejnavn.replace(repl.search, repl.replace) ); + } + }