/[projects]/dao/FuldDaekningWorker/src/main/java/dk/daoas/fulddaekning/Database.java
ViewVC logotype

Diff of /dao/FuldDaekningWorker/src/main/java/dk/daoas/fulddaekning/Database.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Database.java revision 2641 by torben, Mon Aug 10 08:59:14 2015 UTC dao/FuldDaekningWorker/src/main/java/dk/daoas/fulddaekning/Database.java revision 2741 by torben, Tue Oct 6 21:26:55 2015 UTC
# Line 1  Line 1 
1  package dk.daoas.fulddaekning;  package dk.daoas.fulddaekning;
2    
 import geocode.GeoPoint;  
   
3  import java.io.IOException;  import java.io.IOException;
4  import java.sql.Connection;  import java.sql.Connection;
5  import java.sql.DriverManager;  import java.sql.DriverManager;
# Line 13  import java.util.HashMap; Line 11  import java.util.HashMap;
11  import java.util.List;  import java.util.List;
12  import java.util.Map;  import java.util.Map;
13  import java.util.Properties;  import java.util.Properties;
14    import java.util.Queue;
15  import java.util.Set;  import java.util.Set;
16  import java.util.TreeSet;  import java.util.TreeSet;
17    import java.util.concurrent.ConcurrentLinkedQueue;
18  import java.util.logging.Logger;  import java.util.logging.Logger;
19    
20    
# Line 27  public class Database { Line 27  public class Database {
27          Connection conn;          Connection conn;
28          PreparedStatement saveStmt;          PreparedStatement saveStmt;
29                    
30          List<GeoPoint> alleAdresser;          List<Adresse> alleAdresser;
31          Adresse alleIkkeDaekkede[];          Adresse alleIkkeDaekkede[];
32                    
33          Map<Short,List<GeoPoint>> daekkedeAdresserHO = new HashMap<Short,List<GeoPoint>>();          Map<Short,List<Adresse>> daekkedeAdresserHO = new HashMap<Short,List<Adresse>>();
34                    
35                    
36                    
# Line 50  public class Database { Line 50  public class Database {
50          public Database(SafeProperties conf)  throws SQLException,IOException {          public Database(SafeProperties conf)  throws SQLException,IOException {
51                  this.conn = getConnection( conf );                        this.conn = getConnection( conf );      
52    
53                  String sql = "INSERT INTO fulddaekning.afstand_anden_rute_ny (orgId,orgPostnr, orgAdresse,orgGadeid,orgHusnr,orgHusnrBogstav,orgLatitude,orgLongitude,orgRute,id,postnr,adresse,gadeid,husnr,husnrbogstav,latitude,longitude,rute,afstand,`timestamp`) "+                  String sql = "INSERT INTO fulddaekning.afstand_anden_rute_ny (orgId,orgPostnr, orgAdresse,orgGadeid,orgHusnr,orgHusnrBogstav,orgRute,id,postnr,adresse,gadeid,husnr,husnrbogstav,rute,afstand,`timestamp`) "+
54                                  "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, now() )";                                  "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, now() )";
55    
56                  saveStmt = conn.prepareStatement(sql);                            saveStmt = conn.prepareStatement(sql);          
57    
# Line 68  public class Database { Line 68  public class Database {
68          }                }      
69                    
70          public void renameResultTables() throws SQLException {          public void renameResultTables() throws SQLException {
71                    if (LookupMain.test_mode == true) {
72                            throw new RuntimeException("Can not rename tables in test mode");
73                    }
74    
75                  Constants consts = Constants.getInstance();                  Constants consts = Constants.getInstance();
76                  String ext = consts.getTableExtension();                  String ext = consts.getTableExtension();
77                                    
# Line 93  public class Database { Line 97  public class Database {
97          }          }
98    
99    
100          public Adresse[] hentAlleIkkedaekkedeAdresser(int minPostnr, int maxPostnr)  throws SQLException {          public Queue<Adresse> hentAlleIkkedaekkedeAdresser(int minPostnr, int maxPostnr)  throws SQLException {
101                                    
102                  logger.info("Henter alle IKKE-daekkede adresser");                  logger.info("Henter alle IKKE-daekkede adresser");
103    
# Line 102  public class Database { Line 106  public class Database {
106                                  "LEFT JOIN bogleveringer.postnummerdistributor p on (a.postnr=p.postnr) " +                                  "LEFT JOIN bogleveringer.postnummerdistributor p on (a.postnr=p.postnr) " +
107                                  "WHERE rute IS NULL " +  //Ingen dækning                                  "WHERE rute IS NULL " +  //Ingen dækning
108                                  "AND a.postnr BETWEEN ? AND ? " +                                  "AND a.postnr BETWEEN ? AND ? " +
                                 "AND a.postnr NOT BETWEEN 3900 and 3999 " + //Skip greenland  
                                 "AND a.postnr NOT BETWEEN 9000 AND 9499 " + // Skip nordjylland (DAO)  
109                                  "AND latitude IS NOT NULL " +                                  "AND latitude IS NOT NULL " +
110                                  "AND longitude IS NOT NULL " +                                  "AND longitude IS NOT NULL " +
111                                  "AND gadeid IS NOT NULL " +                                  "AND gadeid IS NOT NULL " +
112                                  "AND (a.distributor IS NULL OR a.distributor<>'LUKKET') ";                                                "AND (a.distributor IS NULL OR a.distributor<>'LUKKET') "
113                                    ;              
114                    
115                    if (LookupMain.test_mode == true) {
116                            sql = sql + " LIMIT 100 ";
117                    }
118                    
119                  PreparedStatement stmt = conn.prepareStatement(sql);                  PreparedStatement stmt = conn.prepareStatement(sql);
120                  stmt.setInt(1, minPostnr);                  stmt.setInt(1, minPostnr);
121                  stmt.setInt(2, maxPostnr);                  stmt.setInt(2, maxPostnr);
# Line 140  public class Database { Line 148  public class Database {
148                                                    
149                                                    
150                  }                  }
151                  return alleIkkeDaekkede;                  return new ConcurrentLinkedQueue<Adresse>( list );
152          }          }
153                    
154    
155                    
156                    
157          public Map<Short, List<GeoPoint>> getDaekkedeAdresserHO() {          public Map<Short, List<Adresse>> getDaekkedeAdresserHO() {
158                  return daekkedeAdresserHO;                  return daekkedeAdresserHO;
159          }          }
160                    
# Line 159  public class Database { Line 167  public class Database {
167                                          "AND latitude IS NOT NULL " +                                          "AND latitude IS NOT NULL " +
168                                          "AND longitude IS NOT NULL " +                                          "AND longitude IS NOT NULL " +
169                                          "AND a.distributor = ? ";                                          "AND a.distributor = ? ";
170    
171                            if (LookupMain.test_mode == true) {
172                                    sql = sql + " AND a.postnr BETWEEN 6000 and 7200 ";
173                            }
174                    
175                          // Forward only + concur_read_only + fetchsize tvinger driver til at hente en række af gangen (bedre performance ved store result sets)                          // Forward only + concur_read_only + fetchsize tvinger driver til at hente en række af gangen (bedre performance ved store result sets)
176                          // Se http://dev.mysql.com/doc/connector-j/en/connector-j-reference-implementation-notes.html                          // Se http://dev.mysql.com/doc/connector-j/en/connector-j-reference-implementation-notes.html
# Line 169  public class Database { Line 181  public class Database {
181                    
182                          List<Adresse> list = hentAdresseListe( stmt );                          List<Adresse> list = hentAdresseListe( stmt );
183                                                    
184                          alleAdresser = new ArrayList<GeoPoint>();                          alleAdresser = new ArrayList<Adresse>();
185                          alleAdresser.addAll(list);                          alleAdresser.addAll(list);
186                                                    
187                          for(Adresse addr : list) {                          for(Adresse addr : list) {
188                                  short ho = addr.ho;                                  short ho = addr.ho;
189                                  List<GeoPoint> hoListe = daekkedeAdresserHO.get(ho);                                  List<Adresse> hoListe = daekkedeAdresserHO.get(ho);
190                                  if ( hoListe == null) {                                  if ( hoListe == null) {
191                                          hoListe = new ArrayList<GeoPoint>();                                          hoListe = new ArrayList<Adresse>();
192                                          daekkedeAdresserHO.put(ho, hoListe);                                                                              daekkedeAdresserHO.put(ho, hoListe);                                    
193                                  }                                  }
194                                                                    
# Line 202  public class Database { Line 214  public class Database {
214                  saveStmt.setInt(4, orgAdresse.gadeid);                  saveStmt.setInt(4, orgAdresse.gadeid);
215                  saveStmt.setShort(5, orgAdresse.husnr);                  saveStmt.setShort(5, orgAdresse.husnr);
216                  saveStmt.setString(6, orgAdresse.husnrbogstav);                  saveStmt.setString(6, orgAdresse.husnrbogstav);
217                  saveStmt.setDouble(7, orgAdresse.latitude);                  saveStmt.setString(7, orgAdresse.rute);
218                  saveStmt.setDouble(8, orgAdresse.longitude);  
219                  saveStmt.setString(9, orgAdresse.rute);  
220                    saveStmt.setInt(8, bedsteAdresse.id);
221                    saveStmt.setShort(9, bedsteAdresse.postnr);
222                  saveStmt.setInt(10, bedsteAdresse.id);                  saveStmt.setString(10, bedsteAdresse.adresse);
223                  saveStmt.setShort(11, bedsteAdresse.postnr);                  saveStmt.setInt(11, bedsteAdresse.gadeid);
224                  saveStmt.setString(12, bedsteAdresse.adresse);                  saveStmt.setShort(12, bedsteAdresse.husnr);
225                  saveStmt.setInt(13, bedsteAdresse.gadeid);                  saveStmt.setString(13, bedsteAdresse.husnrbogstav);
226                  saveStmt.setShort(14, bedsteAdresse.husnr);                  saveStmt.setString(14, bedsteAdresse.rute);
                 saveStmt.setString(15, bedsteAdresse.husnrbogstav);  
                 saveStmt.setDouble(16, bedsteAdresse.latitude);  
                 saveStmt.setDouble(17, bedsteAdresse.longitude);  
                 saveStmt.setString(18, bedsteAdresse.rute);  
227    
228                  saveStmt.setDouble(19, bedsteAfstand);                  saveStmt.setDouble(15, bedsteAfstand);
229    
230                  saveStmt.addBatch();                  saveStmt.addBatch();
231                  batchCount++;                  batchCount++;

Legend:
Removed from v.2641  
changed lines
  Added in v.2741

  ViewVC Help
Powered by ViewVC 1.1.20