--- dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Database.java 2015/06/14 07:58:55 2584 +++ dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Database.java 2015/06/14 14:28:21 2585 @@ -1,5 +1,7 @@ package dk.daoas.fulddaekning; +import geocode.GeoPoint; + import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; @@ -27,7 +29,7 @@ Connection conn; PreparedStatement saveStmt; - Adresse alleAdresser[]; + List alleAdresser; Adresse alleIkkeDaekkede[]; @@ -36,7 +38,7 @@ Set postnumre = new TreeSet(); - Map> ikkeDaekkedePrPost = new HashMap>(); + //Map> ikkeDaekkedePrPost = new HashMap>(); private HashMap bbCache = new HashMap(); @@ -87,7 +89,7 @@ } - public void hentAlleIkkedaekkedeAdresser(int minPostnr, int maxPostnr) throws SQLException { + public Adresse[] hentAlleIkkedaekkedeAdresser(int minPostnr, int maxPostnr) throws SQLException { logger.info("Henter alle IKKE-daekkede adresser"); @@ -111,22 +113,18 @@ for (Adresse a : alleIkkeDaekkede) { - List postListe; BoundingBox bbox; if (! postnumre.contains(a.postnr )) { postnumre.add( a.postnr ); - bbox = new BoundingBox(); - postListe = new ArrayList(); + bbox = new BoundingBox(); bbCache.put( a.postnr, bbox); - ikkeDaekkedePrPost.put(a.postnr, postListe); } else { bbox = bbCache.get( a.postnr); - postListe = ikkeDaekkedePrPost.get(a.postnr); } bbox.latitudeMax = Math.max(bbox.latitudeMax, a.latitude); @@ -134,39 +132,17 @@ bbox.longitudeMax = Math.max(bbox.longitudeMax, a.longitude); bbox.longitudeMin = Math.min(bbox.longitudeMin, a.longitude); - postListe.add(a); } + return alleIkkeDaekkede; } - public Queue hentIkkedaekkedeAdresserCache(short postnr) { - List postListe = ikkeDaekkedePrPost.get(postnr); - - return new ConcurrentLinkedQueue(postListe); - } - - public Adresse[] hentDaekkedeAdresserCache( BoundingBox bbox, Adresse adresseListe[] ) { - long start = System.currentTimeMillis(); - ArrayList list = new ArrayList(); - for (Adresse a : adresseListe) { - if ( a.latitude > bbox.latitudeMin && a.latitude< bbox.latitudeMax && a.longitude> bbox.longitudeMin && a.longitude < bbox.longitudeMax) { - list.add(a); - } - } - long stop = System.currentTimeMillis(); - 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 { + public List hentAlleDaekkedeAdresser() throws SQLException { if ( alleAdresser == null ) { String sql = "SELECT id,a.postnr,adresse,gadeid,husnr,husnrbogstav,latitude,longitude,rute,p.distributor as ho " + "FROM fulddaekning.adressetabel a " + @@ -184,7 +160,9 @@ stmt.setString(1, LookupMain.distributor); List list = hentAdresseListe( stmt ); - alleAdresser = list.toArray( new Adresse[ list.size() ] ); + + alleAdresser = new ArrayList(); + alleAdresser.addAll(list); } return alleAdresser; } @@ -247,29 +225,21 @@ //logger.info("Starting exec query done"); while (res.next()) { - Adresse adr = new Adresse(); + + double latitude = res.getDouble(7); + double longitude = res.getDouble(8); + + + Adresse adr = new Adresse(latitude,longitude); - /* - adr.id = res.getInt("id"); - adr.postnr = res.getInt("postnr"); - adr.adresse = res.getString("adresse"); - adr.gadeid = res.getInt("gadeid"); - adr.husnr = res.getInt("husnr"); - adr.husnrbogstav = res.getString("husnrbogstav"); - adr.latitude = res.getDouble("latitude"); - adr.longitude = res.getDouble("longitude"); - adr.rute = res.getString("rute"); - adr.ho = res.getInt("ho"); - */ - adr.id = res.getInt(1); adr.postnr = res.getShort(2); adr.adresse = res.getString(3); adr.gadeid = res.getInt(4); adr.husnr = res.getShort(5); adr.husnrbogstav = husnrbogstavCache.getInstance( res.getString(6) ); - adr.latitude = res.getDouble(7); - adr.longitude = res.getDouble(8); + //adr.latitude = res.getDouble(7); + //adr.longitude = res.getDouble(8); adr.rute = ruteCache.getInstance( res.getString(9) ); adr.ho = res.getShort(10); @@ -310,6 +280,32 @@ // ////////////////////////////////////////////////////////////////// + + /* + public Queue hentIkkedaekkedeAdresserCache(short postnr) { + List postListe = ikkeDaekkedePrPost.get(postnr); + + return new ConcurrentLinkedQueue(postListe); + } + + public Adresse[] hentDaekkedeAdresserCache( BoundingBox bbox, Adresse adresseListe[] ) { + long start = System.currentTimeMillis(); + ArrayList list = new ArrayList(); + for (Adresse a : adresseListe) { + if ( a.latitude > bbox.latitudeMin && a.latitude< bbox.latitudeMax && a.longitude> bbox.longitudeMin && a.longitude < bbox.longitudeMax) { + list.add(a); + } + } + long stop = System.currentTimeMillis(); + logger.info("Elapsed cache: " + (stop - start)); + return list.toArray( new Adresse[ list.size() ] ); + } + + + /*public Adresse[] hentDaekkedeAdresserCache( BoundingBox bbox) { + return hentDaekkedeAdresserCache(bbox, alleAdresser); + }*/ + /* @Deprecated private BoundingBox getBoundingboxFromDb_old(String postnr) throws SQLException {