/[projects]/dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/db/DatabaseLayer.java
ViewVC logotype

Diff of /dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/db/DatabaseLayer.java

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

dao/DaoAdresseService/src/dk/daoas/daoadresseservice/db/DatabaseLayer.java revision 2316 by torben, Tue Feb 17 07:38:24 2015 UTC dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/db/DatabaseLayer.java revision 2665 by torben, Tue Aug 25 08:46:29 2015 UTC
# Line 1  Line 1 
1  package dk.daoas.daoadresseservice.db;  package dk.daoas.daoadresseservice.db;
2    
3    
 import java.sql.Connection;  
 import java.sql.ResultSet;  
4  import java.sql.SQLException;  import java.sql.SQLException;
 import java.sql.Statement;  
 import java.util.ArrayList;  
 import java.util.HashMap;  
5  import java.util.List;  import java.util.List;
6  import java.util.Map;  import java.util.Map;
7    
 import dk.daoas.daoadresseservice.DaekningsType;  
8  import dk.daoas.daoadresseservice.beans.Address;  import dk.daoas.daoadresseservice.beans.Address;
9    import dk.daoas.daoadresseservice.beans.AliasBean;
10  import dk.daoas.daoadresseservice.beans.ExtendedBean;  import dk.daoas.daoadresseservice.beans.ExtendedBean;
11  import dk.daoas.daoadresseservice.beans.HundredePctBean;  import dk.daoas.daoadresseservice.beans.HundredePctBean;
12  import dk.daoas.daoadresseservice.util.DeduplicateHelper;  import dk.daoas.daoadresseservice.beans.SearchResult;
13    
14  public class DatabaseLayer {  public interface DatabaseLayer {
15            
16            
17            public List<Address> getAllAdresses() throws SQLException ;
18            
19            public List<AliasBean> getAliasList() throws SQLException;
20            
21            public List<ExtendedBean> getExtendedAdresslist() throws SQLException;
22            
23            public Map<Short,HundredePctBean> get100PctList() throws SQLException;
24            
25            public void saveRequestLog(String brugerid, String postnr, String adresse, String omdelingsdag, SearchResult result) throws SQLException;
26                    
         public static List<Address> getAllAdresses() throws SQLException {  
                   
                 String sql = "SELECT id,vejnavn,husnr,husnrbogstav,kommunekode,vejkode,postnr,gadeid,upper(distributor) AS distributor,dbkbane,koreliste,rute "  
                                 + "FROM fulddaekning.adressetabel "  
                                 + "WHERE gadeid IS NOT NULL "  
                                 //+ "AND postnr = 8700" //DEBUG only  
                                 ;  
                   
                 Connection conn = DBConnection.getConnection();          
                 Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);  
                 stmt.setFetchSize(Integer.MIN_VALUE);  
                 ResultSet res = stmt.executeQuery(sql);  
                   
                 List<Address> list = new ArrayList<Address>(2600000);//initial capacity 2.6 mio  
                   
                 DeduplicateHelper<String> vejnavne = new DeduplicateHelper<String>();  
                 DeduplicateHelper<String> distributorer = new DeduplicateHelper<String>();  
   
                   
                 while (res.next()) {  
                           
                         // Cache String instanserne for vejnavne for at mindske hukommelses forbruget  
                         String dbVejnavn = res.getString(2);                      
                         String vejnavn = vejnavne.getInstance(dbVejnavn);  
   
                         // Cache String instanserne for distributor for at mindske hukommelses forbruget  
                         // (De-dubblicate)  
                         String dbDistributor = res.getString(2);                          
                         String distributor = distributorer.getInstance(dbDistributor);  
                           
                         Address a = new Address();  
                         a.id = res.getInt(1);  
                         a.vejnavn = vejnavn;  
                         a.husnr = res.getInt(3);  
                         a.husnrbogstav = res.getString(4);  
                         a.kommunekode = res.getInt(5);  
                         a.vejkode = res.getInt(6);  
                         a.postnr = res.getInt(7);  
                         a.gadeid = res.getLong(8);  
                         a.distributor = distributor;  
                         a.dbkBane = res.getInt(10);  
                         a.koreliste = res.getString(11);  
                         a.rute = res.getString(12);  
                           
                         //a.vasketVejnavn = AddressUtils.vaskVejnavn(a.vejnavn);  
                           
                         if (a.rute != null && a.rute.length()> 0) {  
                                 a.daekningsType = DaekningsType.DAEKNING_DIREKTE;  
                         } else {  
                                 a.daekningsType = DaekningsType.DAEKNING_IKKEDAEKKET;  
                         }                        
                           
                         list.add(a);  
                 }  
                 res.close();  
                 stmt.close();  
                 conn.close();  
                   
                 System.out.println("Loaded " + list.size() + " adresses");  
                   
                 return list;  
         }  
           
         public static List<ExtendedBean> getExtendedAdresslist() throws SQLException {  
                   
                 String sql = "select orgid, a.id as targetid, afstand, LOWER(type) as type from fulddaekning.afstand_anden_rute a " +  
                                         "join odbc.transporttype t " +  
                                         "on t.Art = 'Transpost' " +  
                                         "and ( (t.Type = 'Cykel' and a.Afstand < 1.001) or (t.Type = 'Scooter' and a.Afstand < 1.201) or (t.Type = 'Bil' and a.Afstand < 2.601) ) " +  
                                         "and t.Rute = a.Rute " +  
                                           
                                         "UNION ALL " +  
                                           
                                         "SELECT orgid, a.id as targetid, afstand,'' as type FROM  fulddaekning.afstand_anden_rute_bk a " +  
                                         "left join bogleveringer.postnummerdistributor d on d.PostNr = a.orgPostnr " +  
                                         "WHERE d.Distributor <> 10057"  
                                         ;  
                   
                 Connection conn = DBConnection.getConnection();          
                 Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);  
                 stmt.setFetchSize(Integer.MIN_VALUE);  
                   
                 ResultSet res = stmt.executeQuery(sql);  
                   
                 List<ExtendedBean> list = new ArrayList<ExtendedBean>( 350000); //Initial capacity 350K  
                 while (res.next()) {  
                         ExtendedBean eb = new ExtendedBean();  
                         eb.orgId = res.getInt(1);  
                         eb.targetId = res.getInt(2);  
                         eb.afstand = res.getDouble(3);  
                         eb.transport = res.getString(4);  
                                                   
                         list.add(eb);  
                 }  
                   
                 res.close();  
                 stmt.close();  
                 conn.close();  
                   
                 System.out.println("Loaded " + list.size() + " extendedbeans");  
                   
                 return list;  
         }  
           
         public static Map<Integer,HundredePctBean> get100PctList() throws SQLException {  
                 String sql = "SELECT postnr,UPPER(distributor) as distributor,rute,koreliste,dbkbane " +  
                                          "FROM bogleveringer.adresser_udenfor_daekning";  
                   
                 Connection conn = DBConnection.getConnection();          
                 Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);  
                 ResultSet res = stmt.executeQuery(sql);  
27    
28                  Map<Integer,HundredePctBean> map = new HashMap<Integer,HundredePctBean>();          
                   
                 while (res.next()) {  
                           
                         HundredePctBean bean = new HundredePctBean();  
                         bean.postnr = res.getInt(1);  
                         bean.distributor = res.getString(2);  
                         bean.rute = res.getString(3);  
                         bean.koreliste = res.getString(4);  
                         bean.dbkBane = res.getInt(5);                    
                                                   
                         map.put(bean.postnr, bean);  
                 }  
                   
                 res.close();  
                 stmt.close();  
                 conn.close();  
                   
                 System.out.println("Loaded " + map.size() + " 100pct beans");  
                   
                 return map;  
                   
         }  
29                    
30  }  }

Legend:
Removed from v.2316  
changed lines
  Added in v.2665

  ViewVC Help
Powered by ViewVC 1.1.20