/[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 2949 by torben, Tue Feb 16 09:38:13 2016 UTC revision 3024 by torben, Tue Apr 26 19:34:14 2016 UTC
# Line 16  import dk.daoas.adressevedligehold.tasks Line 16  import dk.daoas.adressevedligehold.tasks
16  import dk.daoas.adressevedligehold.util.DeduplicateHelper;  import dk.daoas.adressevedligehold.util.DeduplicateHelper;
17  import dk.daoas.adressevedligehold.util.TimingHelper;  import dk.daoas.adressevedligehold.util.TimingHelper;
18    
19  /*  /*
  * TODO: Batched skrivning af updates  
20   *     *  
21   */   */
22    
# Line 103  public class DatabaseCoverageUpdate  { Line 102  public class DatabaseCoverageUpdate  {
102                  }                  }
103          }          }
104                    
105          public void saveNewAddresses(List<Address> addresses) {          public void saveNewAddresses(List<Address> addresses) throws Exception {
106                    
107                  logger.info("DB::saveNewAddresses size:" + addresses.size() );                  logger.info("DB::saveNewAddresses size:" + addresses.size() );
108                                    
109                  String sql = "INSERT IGNORE INTO fulddaekning.adressetabel " +                  String sql = "INSERT IGNORE INTO fulddaekning.adressetabel " +
110                                           "(vejnavn,husnr,husnrbogstav,kommunekode,vejkode,postnr,gadeid,dbkbane,indlast,aendret,david,googlechecked," +                                           "(vejnavn,husnr,husnrbogstav,kommunekode,vejkode,postnr,gadeid,dbkbane,indlast,aendret,david,googlechecked," +
111                                           "RuteMa,KorelisteMa,RuteTi,KorelisteTi,RuteOn,KorelisteOn,RuteTo,KorelisteTo,RuteFr,KorelisteFr,RuteLo,KorelisteLo,RuteSo,KorelisteSo) " +                                           "RuteMa,KorelisteMa,RuteTi,KorelisteTi,RuteOn,KorelisteOn,RuteTo,KorelisteTo,RuteFr,KorelisteFr,RuteLo,KorelisteLo,RuteSo,KorelisteSo, " +
112                                             "kommentar,latitude,longitude) " +
113                                           "VALUES " +                                           "VALUES " +
114                                           "(?,?,?,?,?,?,?,?, now(), now(), ?, 0, " +                                           "(?,?,?,?,?,?,?,?, now(), now(), ?, 0, " +
115                                           "?,?,?,?,?,?,?,?,?,?,?,?,?,?)";                                           "?,?,?,?,?,?,?,?,?,?,?,?,?,?," +
116                                             "?,?,?) ";
117                                    
118                                    
119                  try (Connection con = DBConnection.getConnection()) {                  try (Connection con = DBConnection.getConnection()) {
120                          //con.setAutoCommit(false);  
121                                                    
122                          try (PreparedStatement stmt = con.prepareStatement(sql)) {                          try (PreparedStatement stmt = con.prepareStatement(sql)) {
123                                  for (Address addr : addresses) {                                  for (Address addr : addresses) {
# Line 146  public class DatabaseCoverageUpdate  { Line 148  public class DatabaseCoverageUpdate  {
148                                          stmt.setString(21, addr.korelisteLordag);                                          stmt.setString(21, addr.korelisteLordag);
149                                          stmt.setString(22, addr.ruteSondag);                                          stmt.setString(22, addr.ruteSondag);
150                                          stmt.setString(23, addr.korelisteSondag);                                          stmt.setString(23, addr.korelisteSondag);
151                                            
152                                            stmt.setString(24, addr.kommentar);
153                                            
154                                            if (addr.latitude != 0.0) {
155                                                    stmt.setDouble(25, addr.latitude);
156                                            } else {
157                                                    stmt.setNull(25, java.sql.Types.DOUBLE);
158                                            }                                      
159                                            if (addr.longitude != 0.0) {
160                                                    stmt.setDouble(26, addr.longitude);
161                                            } else {
162                                                    stmt.setNull(26, java.sql.Types.DOUBLE);
163                                            }
164    
165                                                                                    
166                                          stmt.execute();                                          stmt.execute();
# Line 160  public class DatabaseCoverageUpdate  { Line 175  public class DatabaseCoverageUpdate  {
175                          //con.commit();                          //con.commit();
176                  } catch (SQLException e) {                  } catch (SQLException e) {
177                          logger.warning("Error inserting addresses", e  );                          logger.warning("Error inserting addresses", e  );
178                            throw e;
179                  }                  }
180          }          }
181                    
182          public void updateAddresses(List<Address> addresses) {          public void updateAddresses(List<Address> addresses) throws Exception{
183                  logger.info("DB::UpdateAddresses size:" + addresses.size() );                  logger.info("DB::UpdateAddresses size:" + addresses.size() );
184                                    
185                  String sql = "UPDATE fulddaekning.adressetabel " +                  /*String sql = "UPDATE fulddaekning.adressetabel " +
186                                          "SET " +                                          "SET " +
187                                          "RuteMa=?, KorelisteMa=?, " +                                          "RuteMa=?, KorelisteMa=?, " +
188                                          "RuteTi=?, KorelisteTi=?, " +                                          "RuteTi=?, KorelisteTi=?, " +
# Line 178  public class DatabaseCoverageUpdate  { Line 194  public class DatabaseCoverageUpdate  {
194                                      "Distributor=?, " +                                      "Distributor=?, " +
195                                      "DBKBane=?, " +                                      "DBKBane=?, " +
196                                      "Aendret=now() " +                                      "Aendret=now() " +
197                                          "WHERE id=? ";                                          "WHERE id=? ";*/
198                    String sql = "INSERT INTO fulddaekning.adressetabel " +
199                                            "(id, " +
200                                            "RuteMa, KorelisteMa, RuteTi, KorelisteTi, RuteOn, KorelisteOn, " +
201                                            "RuteTo, KorelisteTo, RuteFr, KorelisteFr, RuteLo, KorelisteLo, " +
202                                            "RuteSo, KorelisteSo, " +
203                                            "Distributor, DBKBane, Aendret, " +
204                                            "vejnavn,husnr,husnrbogstav,kommunekode,vejkode,gadeid,postnr) \n" + //Disse har ingen default value
205                                            "VALUES " +
206                                            "(?," +
207                                            "?,?,?,?,?,?," +
208                                            "?,?,?,?,?,?," +
209                                            "?,?," +
210                                            "?,?, now(), " +
211                                            "'',0,'',0,0,0,0 ) \n" +
212                                            
213                                            "ON DUPLICATE KEY UPDATE " +
214                                            "RuteMa=VALUES(RuteMa), KorelisteMa=VALUES(KorelisteMa), " +
215                                            "RuteTi=VALUES(RuteTi), KorelisteTi=VALUES(KorelisteTi), " +
216                                            "RuteOn=VALUES(RuteOn), KorelisteOn=VALUES(KorelisteOn), " +
217                                            "RuteTo=VALUES(RuteTo), KorelisteTo=VALUES(KorelisteTo), " +
218                                            "RuteFr=VALUES(RuteFr), KorelisteFr=VALUES(KorelisteFr), " +
219                                            "RuteLo=VALUES(RuteLo), KorelisteLo=VALUES(KorelisteLo), " +
220                                            "RuteSo=VALUES(RuteSo), KorelisteSo=VALUES(KorelisteSo), " +
221                                            "Distributor=VALUES(Distributor),  " +
222                                            "DBKBane=VALUES(DBKBane)  ";
223                                            
224                                                                                    
225                                                                                    
226                                    
# Line 186  public class DatabaseCoverageUpdate  { Line 228  public class DatabaseCoverageUpdate  {
228                          //con.setAutoCommit(false);                          //con.setAutoCommit(false);
229                                                    
230                          try (PreparedStatement stmt = con.prepareStatement(sql)) {                          try (PreparedStatement stmt = con.prepareStatement(sql)) {
231                                    int count = 0;
232                                    
233                                  for (Address addr : addresses) {                                  for (Address addr : addresses) {
234                                          stmt.setString(1, addr.ruteMandag);                                          stmt.setInt(1, addr.id);
235                                          stmt.setString(2, addr.korelisteMandag);                                          stmt.setString(2, addr.ruteMandag);
236                                          stmt.setString(3, addr.ruteTirsdag);                                          stmt.setString(3, addr.korelisteMandag);
237                                          stmt.setString(4, addr.korelisteTirsdag);                                          stmt.setString(4, addr.ruteTirsdag);
238                                          stmt.setString(5, addr.ruteOnsdag);                                          stmt.setString(5, addr.korelisteTirsdag);
239                                          stmt.setString(6, addr.korelisteOnsdag);                                          stmt.setString(6, addr.ruteOnsdag);
240                                          stmt.setString(7, addr.ruteTorsdag);                                          stmt.setString(7, addr.korelisteOnsdag);
241                                          stmt.setString(8, addr.korelisteTorsdag);                                          stmt.setString(8, addr.ruteTorsdag);
242                                          stmt.setString(9, addr.ruteFredag);                                          stmt.setString(9, addr.korelisteTorsdag);
243                                          stmt.setString(10, addr.korelisteFredag);                                          stmt.setString(10, addr.ruteFredag);
244                                          stmt.setString(11, addr.ruteLordag);                                          stmt.setString(11, addr.korelisteFredag);
245                                          stmt.setString(12, addr.korelisteLordag);                                          stmt.setString(12, addr.ruteLordag);
246                                          stmt.setString(13, addr.ruteSondag);                                          stmt.setString(13, addr.korelisteLordag);
247                                          stmt.setString(14, addr.korelisteSondag);                                          stmt.setString(14, addr.ruteSondag);
248                                            stmt.setString(15, addr.korelisteSondag);
                                         stmt.setString(15, addr.distributor);  
                                         stmt.setInt(16, addr.dbkBane);  
                                         stmt.setInt(17, addr.id);  
249    
250                                            stmt.setString(16, addr.distributor);
251                                            stmt.setInt(17, addr.dbkBane);
252                                                                                    
                                         stmt.execute();  
                                         if (stmt.getUpdateCount() != 1) {  
                                                 logger.warning("Error executing update: " + addr);  
                                         }  
253                                                                                    
254                                            
255                                            stmt.addBatch();
256                                            count++;
257                                            if ( (count%200) == 0) {
258                                                    stmt.executeBatch();
259                                                    
260                                                    if ( (count%50000) == 0 ) {
261                                                            logger.info("Update count " + count);
262                                                    }
263                                            }                                      
264                                  }                                  }
265                                    
266                                    stmt.executeBatch(); //update remainding queries
267                                    
268                          }                          }
269                                                    
270                          //con.commit();                          //con.commit();
271                  } catch (SQLException e) {                  } catch (SQLException e) {
272                          logger.warning("Error updating addresses", e );                          logger.warning("Error updating addresses", e );
273                            throw e;
274                  }                  }
275          }          }
276                    

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

  ViewVC Help
Powered by ViewVC 1.1.20