--- dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/db/DatabaseLayerImplementation.java 2015/11/19 15:29:36 2775 +++ dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/db/DatabaseLayerImplementation.java 2016/10/10 12:56:57 3122 @@ -21,7 +21,7 @@ public class DatabaseLayerImplementation implements DatabaseLayer { - static boolean DEBUG = false; + public static final boolean DEBUG = false; @Override public List
getAllAdresses() throws SQLException { @@ -30,25 +30,28 @@ String debugFilter = DatabaseLayerImplementation.DEBUG ? " AND postnr = 8700 " : ""; String sql = - "SELECT id,vejnavn,husnr,husnrbogstav,kommunekode,vejkode,postnr,gadeid,upper(distributor) AS distributor,dbkbane,koreliste,rute,korelisteloerdag,ruteloerdag,korelistesoendag,rutesoendag,latitude,longitude " + "SELECT id,vejnavn,husnr,husnrbogstav,kommunekode,vejkode,postnr,gadeid,upper(distributor) AS distributor,dbkbane,latitude,longitude, " + + "rutema,korelistema,ruteti,korelisteti,ruteon,korelisteon,ruteto,korelisteto,rutefr,korelistefr,rutelo,korelistelo,ruteso,korelisteso " + "FROM fulddaekning.adressetabel " + "WHERE gadeid IS NOT NULL " + debugFilter ; + try ( Connection conn = DBConnection.getConnection(); - Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); + Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ) { stmt.setFetchSize(Integer.MIN_VALUE); ResultSet res = stmt.executeQuery(sql); List
list = new ArrayList
(2600000);//initial capacity 2.6 mio - DeduplicateHelper vejnavnCache = new DeduplicateHelper(); + DeduplicateHelper vejnavnCache = new DeduplicateHelper(81920); DeduplicateHelper husnrbogstavCache = new DeduplicateHelper(); DeduplicateHelper distributorCache = new DeduplicateHelper(); - DeduplicateHelper korelisteCache = new DeduplicateHelper(); - DeduplicateHelper ruteCache = new DeduplicateHelper(); + DeduplicateHelper dirigeringsCache = new DeduplicateHelper(16*1024); + + DeduplicateHelper baneCache = new DeduplicateHelper(); while (res.next()) { @@ -63,19 +66,30 @@ a.postnr = (short)res.getInt(7); a.gadeid = res.getInt(8); a.distributor = distributorCache.getInstance(res.getString(9)); - a.dbkBane = (short) res.getInt(10); + a.dbkBane = baneCache.getInstance( res.getString(10) ); + a.latitude = (float) res.getDouble(11); + a.longitude = (float) res.getDouble(12); + + a.routingMandag.rute = dirigeringsCache.getInstance( res.getString(13) ); + a.routingMandag.koreliste = dirigeringsCache.getInstance( res.getString(14) ); - a.koreliste = korelisteCache.getInstance( res.getString(11) ); - a.rute = ruteCache.getInstance( res.getString(12) ); - a.korelisteLordag = korelisteCache.getInstance( res.getString(13) ); - a.ruteLordag = ruteCache.getInstance( res.getString(14) ); - a.korelisteSondag = korelisteCache.getInstance( res.getString(15) ); - a.ruteSondag = ruteCache.getInstance( res.getString(16) ); + a.routingTirsdag.rute = dirigeringsCache.getInstance( res.getString(15) ); + a.routingTirsdag.koreliste = dirigeringsCache.getInstance( res.getString(16) ); + + a.routingOnsdag.rute = dirigeringsCache.getInstance( res.getString(17) ); + a.routingOnsdag.koreliste = dirigeringsCache.getInstance( res.getString(18) ); - a.latitude = (float) res.getDouble(17); - a.longitude = (float) res.getDouble(18); + a.routingTorsdag.rute = dirigeringsCache.getInstance( res.getString(19) ); + a.routingTorsdag.koreliste = dirigeringsCache.getInstance( res.getString(20) ); - //a.vasketVejnavn = AddressUtils.vaskVejnavn(a.vejnavn); + a.routingFredag.rute = dirigeringsCache.getInstance( res.getString(21) ); + a.routingFredag.koreliste = dirigeringsCache.getInstance( res.getString(22) ); + + a.routingLordag.rute = dirigeringsCache.getInstance( res.getString(23) ); + a.routingLordag.koreliste = dirigeringsCache.getInstance( res.getString(24) ); + + a.routingSondag.rute = dirigeringsCache.getInstance( res.getString(25) ); + a.routingSondag.koreliste = dirigeringsCache.getInstance( res.getString(26) ); //Ajourfør adresse objectets dækningstype @@ -85,6 +99,7 @@ } res.close(); + System.out.println("DB Loaded " + list.size() + " adresses in " + timing.getElapsed() + "ms"); return list; @@ -101,7 +116,7 @@ ; try ( Connection conn = DBConnection.getConnection(); - Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); + Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ) { stmt.setFetchSize(Integer.MIN_VALUE); @@ -153,7 +168,7 @@ ; try ( Connection conn = DBConnection.getConnection(); - Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); + Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ) { @@ -191,7 +206,7 @@ "FROM bogleveringer.adresser_udenfor_daekning"; try ( Connection conn = DBConnection.getConnection(); - Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); + Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ) { ResultSet res = stmt.executeQuery(sql); @@ -200,6 +215,7 @@ DeduplicateHelper distributorCache = new DeduplicateHelper(); DeduplicateHelper ruteCache = new DeduplicateHelper(); DeduplicateHelper korelisteCache = new DeduplicateHelper(); + DeduplicateHelper baneCache = new DeduplicateHelper(); while (res.next()) { @@ -209,7 +225,7 @@ bean.distributor = distributorCache.getInstance(res.getString(2)); bean.rute = ruteCache.getInstance( res.getString(3) ); bean.koreliste = korelisteCache.getInstance(res.getString(4) ); - bean.dbkBane = (short)res.getInt(5); + bean.dbkBane = baneCache.getInstance(res.getString(5) ); map.put(bean.postnr, bean); } @@ -298,12 +314,16 @@ return 22; case ERROR_UNKNOWN_STREETNAME: return 23; - case ERROR_UNKNOWN_ADDRESSPOINT: + case ERROR_UNKNOWN_HOUSENUMBER: return 24; + case STATUS_NOT_COVERED: return 25; case ERROR_INTERNAL: // - return 26; + return 26; + + case ERROR_UNKNOWN_LITRA: //Er kommet til senere, derfor ligger den paa 27 selvom den logisk set burde have haft 25 + return 27; case STATUS_OK: return 30;