/[projects]/dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/db/DatabaseCoverageUpdate.java
ViewVC logotype

Diff of /dao/DaoAdresseVedligehold/src/main/java/dk/daoas/adressevedligehold/db/DatabaseCoverageUpdate.java

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

revision 3024 by torben, Tue Apr 26 19:34:14 2016 UTC revision 3111 by torben, Fri Sep 9 09:26:55 2016 UTC
# Line 1  Line 1 
1  package dk.daoas.adressevedligehold.db;  package dk.daoas.adressevedligehold.db;
2    
3    import java.io.InputStream;
4  import java.sql.Connection;  import java.sql.Connection;
5  import java.sql.PreparedStatement;  import java.sql.PreparedStatement;
6  import java.sql.ResultSet;  import java.sql.ResultSet;
# Line 7  import java.sql.SQLException; Line 8  import java.sql.SQLException;
8  import java.sql.Statement;  import java.sql.Statement;
9  import java.util.ArrayList;  import java.util.ArrayList;
10  import java.util.List;  import java.util.List;
11    import java.util.Properties;
   
12    
13  import dk.daoas.adressevedligehold.beans.Address;  import dk.daoas.adressevedligehold.beans.Address;
14  import dk.daoas.adressevedligehold.beans.Address.AddressState;  import dk.daoas.adressevedligehold.beans.Address.AddressState;
# Line 26  public class DatabaseCoverageUpdate  { Line 26  public class DatabaseCoverageUpdate  {
26                    
27          private TaskLogger logger = TaskLogger.getInstance();          private TaskLogger logger = TaskLogger.getInstance();
28                    
29            Properties queries;
30            
31            public DatabaseCoverageUpdate() throws SQLException {
32    
33                    //On some platforms it may be necessary to load as "META-INF/queries.properties"
34                    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
35                    InputStream is = classLoader.getResourceAsStream("sql.xml");
36                            
37                    queries = new Properties();
38                    try {
39                            queries.loadFromXML(is);
40                    } catch (Exception e) {
41                            throw new SQLException("Error loading queries", e);
42                    }
43                            
44            }
45            
46                    
47          public List<Address> getAllAdresses() throws SQLException {          public List<Address> getAllAdresses() throws SQLException {
48                  TimingHelper timing = new TimingHelper();                  TimingHelper timing = new TimingHelper();
# Line 50  public class DatabaseCoverageUpdate  { Line 67  public class DatabaseCoverageUpdate  {
67                          DeduplicateHelper<String> vejnavnCache = new DeduplicateHelper<String>(81920);                          DeduplicateHelper<String> vejnavnCache = new DeduplicateHelper<String>(81920);
68                          DeduplicateHelper<String> husnrbogstavCache = new DeduplicateHelper<String>();                          DeduplicateHelper<String> husnrbogstavCache = new DeduplicateHelper<String>();
69                          DeduplicateHelper<String> distributorCache = new DeduplicateHelper<String>();                          DeduplicateHelper<String> distributorCache = new DeduplicateHelper<String>();
70                          DeduplicateHelper<String> dirigeringsCache = new DeduplicateHelper<String>(16*1024);                                              DeduplicateHelper<String> dirigeringsCache = new DeduplicateHelper<String>(16*1024);
71                            
72                            DeduplicateHelper<String> baneCache = new DeduplicateHelper<String>();
73                    
74                                                    
75                          while (res.next()) {                          while (res.next()) {
# Line 65  public class DatabaseCoverageUpdate  { Line 84  public class DatabaseCoverageUpdate  {
84                                  a.postnr = (short)res.getInt(7);                                  a.postnr = (short)res.getInt(7);
85                                  a.gadeid = res.getInt(8);                                  a.gadeid = res.getInt(8);
86                                  a.distributor = distributorCache.getInstance(res.getString(9));                                  a.distributor = distributorCache.getInstance(res.getString(9));
87                                  a.dbkBane = (short) res.getInt(10);                                  a.dbkBane = baneCache.getInstance(res.getString(10));
88                                  a.latitude = (float) res.getDouble(11);                                  a.latitude = (float) res.getDouble(11);
89                                  a.longitude = (float) res.getDouble(12);                                  a.longitude = (float) res.getDouble(12);
90                                                                    
# Line 106  public class DatabaseCoverageUpdate  { Line 125  public class DatabaseCoverageUpdate  {
125                                    
126                  logger.info("DB::saveNewAddresses size:" + addresses.size() );                  logger.info("DB::saveNewAddresses size:" + addresses.size() );
127                                    
128                  String sql = "INSERT IGNORE INTO fulddaekning.adressetabel " +                  final String SQL_INSERT_NEW_ADDRESS = queries.getProperty("SQL_INSERT_NEW_ADDRESS");
129                                           "(vejnavn,husnr,husnrbogstav,kommunekode,vejkode,postnr,gadeid,dbkbane,indlast,aendret,david,googlechecked," +                  
130                                           "RuteMa,KorelisteMa,RuteTi,KorelisteTi,RuteOn,KorelisteOn,RuteTo,KorelisteTo,RuteFr,KorelisteFr,RuteLo,KorelisteLo,RuteSo,KorelisteSo, " +                  
                                          "kommentar,latitude,longitude) " +  
                                          "VALUES " +  
                                          "(?,?,?,?,?,?,?,?, now(), now(), ?, 0, " +  
                                          "?,?,?,?,?,?,?,?,?,?,?,?,?,?," +  
                                          "?,?,?) ";  
131                                    
132                                    
133                  try (Connection con = DBConnection.getConnection()) {                  try (Connection con = DBConnection.getConnection()) {
134    
135                                                    
136                          try (PreparedStatement stmt = con.prepareStatement(sql)) {                          try (PreparedStatement stmt = con.prepareStatement(SQL_INSERT_NEW_ADDRESS)) {
137                                  for (Address addr : addresses) {                                  for (Address addr : addresses) {
138                                                                                    
139                                          String david = String.format("%04d%03d%04d", addr.postnr, addr.kommunekode, addr.vejkode);                                          String david = String.format("%04d%03d%04d", addr.postnr, addr.kommunekode, addr.vejkode);
# Line 131  public class DatabaseCoverageUpdate  { Line 145  public class DatabaseCoverageUpdate  {
145                                          stmt.setShort(5, addr.vejkode);                                          stmt.setShort(5, addr.vejkode);
146                                          stmt.setShort(6, addr.postnr);                                          stmt.setShort(6, addr.postnr);
147                                          stmt.setInt(7, addr.gadeid);                                          stmt.setInt(7, addr.gadeid);
148                                          stmt.setShort(8, addr.dbkBane);                                          stmt.setString(8, addr.dbkBane);
149                                          stmt.setString(9, david);                                          stmt.setString(9, david);
150                                                                                    
151                                          stmt.setString(10, addr.ruteMandag);                                          stmt.setString(10, addr.ruteMandag);
# Line 182  public class DatabaseCoverageUpdate  { Line 196  public class DatabaseCoverageUpdate  {
196          public void updateAddresses(List<Address> addresses) throws Exception{          public void updateAddresses(List<Address> addresses) throws Exception{
197                  logger.info("DB::UpdateAddresses size:" + addresses.size() );                  logger.info("DB::UpdateAddresses size:" + addresses.size() );
198                                    
199                  /*String sql = "UPDATE fulddaekning.adressetabel " +  
200                                          "SET " +                  final String SQL_INSERT_ON_DUPLICATE_KEY_UPDATE_ADDRESS = queries.getProperty("SQL_INSERT_ON_DUPLICATE_KEY_UPDATE_ADDRESS");
                                         "RuteMa=?, KorelisteMa=?, " +  
                                         "RuteTi=?, KorelisteTi=?, " +  
                                         "RuteOn=?, KorelisteOn=?, " +  
                                         "RuteTo=?, KorelisteTo=?, " +  
                                         "RuteFr=?, KorelisteFr=?, " +  
                                         "RuteLo=?, KorelisteLo=?, " +  
                                         "RuteSo=?, KorelisteSo=?, " +  
                                     "Distributor=?, " +  
                                     "DBKBane=?, " +  
                                     "Aendret=now() " +  
                                         "WHERE id=? ";*/  
                 String sql = "INSERT INTO fulddaekning.adressetabel " +  
                                         "(id, " +  
                                         "RuteMa, KorelisteMa, RuteTi, KorelisteTi, RuteOn, KorelisteOn, " +  
                                         "RuteTo, KorelisteTo, RuteFr, KorelisteFr, RuteLo, KorelisteLo, " +  
                                         "RuteSo, KorelisteSo, " +  
                                         "Distributor, DBKBane, Aendret, " +  
                                         "vejnavn,husnr,husnrbogstav,kommunekode,vejkode,gadeid,postnr) \n" + //Disse har ingen default value  
                                         "VALUES " +  
                                         "(?," +  
                                         "?,?,?,?,?,?," +  
                                         "?,?,?,?,?,?," +  
                                         "?,?," +  
                                         "?,?, now(), " +  
                                         "'',0,'',0,0,0,0 ) \n" +  
                                           
                                         "ON DUPLICATE KEY UPDATE " +  
                                         "RuteMa=VALUES(RuteMa), KorelisteMa=VALUES(KorelisteMa), " +  
                                         "RuteTi=VALUES(RuteTi), KorelisteTi=VALUES(KorelisteTi), " +  
                                         "RuteOn=VALUES(RuteOn), KorelisteOn=VALUES(KorelisteOn), " +  
                                         "RuteTo=VALUES(RuteTo), KorelisteTo=VALUES(KorelisteTo), " +  
                                         "RuteFr=VALUES(RuteFr), KorelisteFr=VALUES(KorelisteFr), " +  
                                         "RuteLo=VALUES(RuteLo), KorelisteLo=VALUES(KorelisteLo), " +  
                                         "RuteSo=VALUES(RuteSo), KorelisteSo=VALUES(KorelisteSo), " +  
                                         "Distributor=VALUES(Distributor),  " +  
                                         "DBKBane=VALUES(DBKBane)  ";  
201                                                                                    
202                                                                                    
203                                                                                    
# Line 227  public class DatabaseCoverageUpdate  { Line 205  public class DatabaseCoverageUpdate  {
205                  try (Connection con = DBConnection.getConnection()) {                  try (Connection con = DBConnection.getConnection()) {
206                          //con.setAutoCommit(false);                          //con.setAutoCommit(false);
207                                                    
208                          try (PreparedStatement stmt = con.prepareStatement(sql)) {                          try (PreparedStatement stmt = con.prepareStatement(SQL_INSERT_ON_DUPLICATE_KEY_UPDATE_ADDRESS)) {
209                                  int count = 0;                                  int count = 0;
210                                                                    
211                                  for (Address addr : addresses) {                                  for (Address addr : addresses) {
# Line 248  public class DatabaseCoverageUpdate  { Line 226  public class DatabaseCoverageUpdate  {
226                                          stmt.setString(15, addr.korelisteSondag);                                          stmt.setString(15, addr.korelisteSondag);
227    
228                                          stmt.setString(16, addr.distributor);                                          stmt.setString(16, addr.distributor);
229                                          stmt.setInt(17, addr.dbkBane);                                          stmt.setString(17, addr.dbkBane);
230                                                                                    
231                                                                                    
232                                                                                    
# Line 274  public class DatabaseCoverageUpdate  { Line 252  public class DatabaseCoverageUpdate  {
252                  }                  }
253          }          }
254                    
         /*  
         private static String nullify(String str) {  
                 if (str == null)  
                         return null;  
                   
                 if (str.equals("")) {  
                         return null;  
                 } else {  
                         return str;  
                 }  
         }  
   
   
         /*  
         private static int safeInt(String str) {  
                 try {  
                         return Integer.parseInt( str );  
                 } catch (NumberFormatException e) {  
                         return 0;  
                 }  
         }  
           
   
           
         private static String coalesce(String s1, String s2) {  
                 if (s1 != null)  
                         return s1;  
                   
                 return s2;  
         }  
   
         */  
255  }  }

Legend:
Removed from v.3024  
changed lines
  Added in v.3111

  ViewVC Help
Powered by ViewVC 1.1.20