--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/db/DatabaseLayer.java 2015/02/16 09:51:24 2308 +++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/db/DatabaseLayer.java 2015/02/17 09:17:40 2323 @@ -14,6 +14,7 @@ import dk.daoas.daoadresseservice.beans.Address; import dk.daoas.daoadresseservice.beans.ExtendedBean; import dk.daoas.daoadresseservice.beans.HundredePctBean; +import dk.daoas.daoadresseservice.util.DeduplicateHelper; public class DatabaseLayer { @@ -32,31 +33,28 @@ List
list = new ArrayList
(2600000);//initial capacity 2.6 mio - Map vejnavne = new HashMap(); + DeduplicateHelper vejnavnCache = new DeduplicateHelper(); + DeduplicateHelper husnrbogstavCache = new DeduplicateHelper(); + DeduplicateHelper distributorCache = new DeduplicateHelper(); + DeduplicateHelper korelisteCache = new DeduplicateHelper(); + DeduplicateHelper ruteCache = new DeduplicateHelper(); + while (res.next()) { - // Cache String instanserne for vejnavne for at mindske hukommelses forbruget - String dbVejnavn = res.getString(2); - String vejnavn = vejnavne.get(dbVejnavn); - if ( vejnavn == null ) { - vejnavn = dbVejnavn; - vejnavne.put(vejnavn, vejnavn); - } - Address a = new Address(); a.id = res.getInt(1); - a.vejnavn = vejnavn; + a.vejnavn = vejnavnCache.getInstance( res.getString(2) ); a.husnr = res.getInt(3); - a.husnrbogstav = res.getString(4); + a.husnrbogstav = husnrbogstavCache.getInstance( res.getString(4) ); a.kommunekode = res.getInt(5); a.vejkode = res.getInt(6); a.postnr = res.getInt(7); a.gadeid = res.getLong(8); - a.distributor = res.getString(9); + a.distributor = distributorCache.getInstance(res.getString(9)); a.dbkBane = res.getInt(10); - a.koreliste = res.getString(11); - a.rute = res.getString(12); + a.koreliste = korelisteCache.getInstance( res.getString(11) ); + a.rute = ruteCache.getInstance( res.getString(12) ); //a.vasketVejnavn = AddressUtils.vaskVejnavn(a.vejnavn); @@ -98,13 +96,16 @@ ResultSet res = stmt.executeQuery(sql); + DeduplicateHelper transportCache = new DeduplicateHelper(); + List list = new ArrayList( 350000); //Initial capacity 350K - while (res.next()) { + while (res.next()) { + ExtendedBean eb = new ExtendedBean(); eb.orgId = res.getInt(1); eb.targetId = res.getInt(2); eb.afstand = res.getDouble(3); - eb.transport = res.getString(4); + eb.transport = transportCache.getInstance(res.getString(4)); list.add(eb); } @@ -128,11 +129,14 @@ Map map = new HashMap(); + DeduplicateHelper distributorCache = new DeduplicateHelper(); + while (res.next()) { + HundredePctBean bean = new HundredePctBean(); bean.postnr = res.getInt(1); - bean.distributor = res.getString(2); + bean.distributor = distributorCache.getInstance(res.getString(2)); bean.rute = res.getString(3); bean.koreliste = res.getString(4); bean.dbkBane = res.getInt(5);