--- dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Database.java 2015/02/20 08:52:52 2330 +++ dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Database.java 2015/06/09 19:42:00 2575 @@ -34,12 +34,12 @@ DeduplicateHelper husnrbogstavCache = new DeduplicateHelper(); DeduplicateHelper ruteCache = new DeduplicateHelper(); - Set postnumre = new TreeSet(); + Set postnumre = new TreeSet(); - Map> ikkeDaekkedePrPost = new HashMap>(); + Map> ikkeDaekkedePrPost = new HashMap>(); - private HashMap bbCache = new HashMap(); + private HashMap bbCache = new HashMap(); public Database(SafeProperties conf) throws SQLException,IOException { this.conn = getConnection( conf ); @@ -76,13 +76,13 @@ conn.createStatement().executeUpdate(sql); } - public BoundingBox getBoundingbox(int postnr) { + public BoundingBox getBoundingbox(short postnr) { BoundingBox bb = bbCache.get(postnr); return bb.clone();//never return the original / cached object } - public Set hentPostnumreCache() { + public Set hentPostnumreCache() { return postnumre; } @@ -139,17 +139,16 @@ } } - public Queue hentIkkedaekkedeAdresserCache(int postnr) { + public Queue hentIkkedaekkedeAdresserCache(short postnr) { List postListe = ikkeDaekkedePrPost.get(postnr); return new ConcurrentLinkedQueue(postListe); } - - public Adresse[] hentDaekkedeAdresserCache( BoundingBox bbox) { + public Adresse[] hentDaekkedeAdresserCache( BoundingBox bbox, Adresse adresseListe[] ) { long start = System.currentTimeMillis(); ArrayList list = new ArrayList(); - for (Adresse a : alleAdresser) { + for (Adresse a : adresseListe) { if ( a.latitude > bbox.latitudeMin && a.latitude< bbox.latitudeMax && a.longitude> bbox.longitudeMin && a.longitude < bbox.longitudeMax) { list.add(a); } @@ -158,6 +157,13 @@ logger.info("Elapsed cache: " + (stop - start)); return list.toArray( new Adresse[ list.size() ] ); } + + + public Adresse[] hentDaekkedeAdresserCache( BoundingBox bbox) { + return hentDaekkedeAdresserCache(bbox, alleAdresser); + } + + public Adresse[] hentAlleDaekkedeAdresser() throws SQLException { @@ -172,7 +178,6 @@ // Forward only + concur_read_only + fetchsize tvinger driver til at hente en række af gangen (bedre performance ved store result sets) // Se http://dev.mysql.com/doc/connector-j/en/connector-j-reference-implementation-notes.html - //PreparedStatement stmt = conn.prepareStatement(sql); PreparedStatement stmt = conn.prepareStatement(sql, java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(Integer.MIN_VALUE); @@ -193,10 +198,10 @@ PreparedStatement saveStmt = conn.prepareStatement(sql);*/ saveStmt.setInt(1, orgAdresse.id); - saveStmt.setInt(2, orgAdresse.postnr); + saveStmt.setShort(2, orgAdresse.postnr); saveStmt.setString(3, orgAdresse.adresse); saveStmt.setInt(4, orgAdresse.gadeid); - saveStmt.setInt(5, orgAdresse.husnr); + saveStmt.setShort(5, orgAdresse.husnr); saveStmt.setString(6, orgAdresse.husnrbogstav); saveStmt.setDouble(7, orgAdresse.latitude); saveStmt.setDouble(8, orgAdresse.longitude); @@ -204,10 +209,10 @@ saveStmt.setInt(10, bedsteAdresse.id); - saveStmt.setInt(11, bedsteAdresse.postnr); + saveStmt.setShort(11, bedsteAdresse.postnr); saveStmt.setString(12, bedsteAdresse.adresse); saveStmt.setInt(13, bedsteAdresse.gadeid); - saveStmt.setInt(14, bedsteAdresse.husnr); + saveStmt.setShort(14, bedsteAdresse.husnr); saveStmt.setString(15, bedsteAdresse.husnrbogstav); saveStmt.setDouble(16, bedsteAdresse.latitude); saveStmt.setDouble(17, bedsteAdresse.longitude); @@ -217,7 +222,7 @@ saveStmt.addBatch(); batchCount++; - if (batchCount >= 100) { + if (batchCount >= 1000) { saveStmt.executeBatch(); batchCount = 0; } @@ -258,15 +263,15 @@ */ adr.id = res.getInt(1); - adr.postnr = res.getInt(2); + adr.postnr = res.getShort(2); adr.adresse = res.getString(3); adr.gadeid = res.getInt(4); - adr.husnr = res.getInt(5); + adr.husnr = res.getShort(5); adr.husnrbogstav = husnrbogstavCache.getInstance( res.getString(6) ); adr.latitude = res.getDouble(7); adr.longitude = res.getDouble(8); adr.rute = ruteCache.getInstance( res.getString(9) ); - adr.ho = res.getInt(10); + adr.ho = res.getShort(10); list.add(adr);