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

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

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

revision 2763 by torben, Mon Nov 2 12:18:03 2015 UTC revision 3122 by torben, Mon Oct 10 12:56:57 2016 UTC
# Line 17  import dk.daoas.daoadresseservice.beans. Line 17  import dk.daoas.daoadresseservice.beans.
17  import dk.daoas.daoadresseservice.beans.HundredePctBean;  import dk.daoas.daoadresseservice.beans.HundredePctBean;
18  import dk.daoas.daoadresseservice.beans.SearchResult;  import dk.daoas.daoadresseservice.beans.SearchResult;
19  import dk.daoas.daoadresseservice.util.DeduplicateHelper;  import dk.daoas.daoadresseservice.util.DeduplicateHelper;
20    import dk.daoas.daoadresseservice.util.TimingHelper;
21    
22  public class DatabaseLayerImplementation implements DatabaseLayer {  public class DatabaseLayerImplementation implements DatabaseLayer {
23                    
24          static boolean DEBUG = false;          public static final boolean DEBUG = false;
25                    
26          @Override          @Override
27          public List<Address> getAllAdresses() throws SQLException {          public List<Address> getAllAdresses() throws SQLException {
28                    TimingHelper timing = new TimingHelper();
29                    
30                  String debugFilter = DatabaseLayerImplementation.DEBUG ? " AND postnr = 8700 " : "";                  String debugFilter = DatabaseLayerImplementation.DEBUG ? " AND postnr = 8700 " : "";
31                                    
32                  String sql =                  String sql =
33                                  "SELECT id,vejnavn,husnr,husnrbogstav,kommunekode,vejkode,postnr,gadeid,upper(distributor) AS distributor,dbkbane,koreliste,rute,korelisteloerdag,ruteloerdag,korelistesoendag,rutesoendag,latitude,longitude "                                  "SELECT id,vejnavn,husnr,husnrbogstav,kommunekode,vejkode,postnr,gadeid,upper(distributor) AS distributor,dbkbane,latitude,longitude, "
34                                    + "rutema,korelistema,ruteti,korelisteti,ruteon,korelisteon,ruteto,korelisteto,rutefr,korelistefr,rutelo,korelistelo,ruteso,korelisteso "
35                                  + "FROM fulddaekning.adressetabel "                                  + "FROM fulddaekning.adressetabel "
36                                  + "WHERE gadeid IS NOT NULL "                                  + "WHERE gadeid IS NOT NULL "
37                                  + debugFilter                                  + debugFilter
38                                  ;                                  ;
39    
40                                    
41                  try ( Connection conn = DBConnection.getConnection();                            try ( Connection conn = DBConnection.getConnection();          
42                                  Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);                                  Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
43                                  ) {                                  ) {
44                          stmt.setFetchSize(Integer.MIN_VALUE);                          stmt.setFetchSize(Integer.MIN_VALUE);
45                          ResultSet res = stmt.executeQuery(sql);                          ResultSet res = stmt.executeQuery(sql);
46                                                    
47                          List<Address> list = new ArrayList<Address>(2600000);//initial capacity 2.6 mio                          List<Address> list = new ArrayList<Address>(2600000);//initial capacity 2.6 mio
48                                                    
49                          DeduplicateHelper<String> vejnavnCache = new DeduplicateHelper<String>();                          DeduplicateHelper<String> vejnavnCache = new DeduplicateHelper<String>(81920);
50                          DeduplicateHelper<String> husnrbogstavCache = new DeduplicateHelper<String>();                          DeduplicateHelper<String> husnrbogstavCache = new DeduplicateHelper<String>();
51                          DeduplicateHelper<String> distributorCache = new DeduplicateHelper<String>();                          DeduplicateHelper<String> distributorCache = new DeduplicateHelper<String>();
52                          DeduplicateHelper<String> korelisteCache = new DeduplicateHelper<String>();                          DeduplicateHelper<String> dirigeringsCache = new DeduplicateHelper<String>(16*1024);
53                          DeduplicateHelper<String> ruteCache = new DeduplicateHelper<String>();                          
54                            DeduplicateHelper<String> baneCache = new DeduplicateHelper<String>();
55                    
56                                                    
57                          while (res.next()) {                          while (res.next()) {
# Line 60  public class DatabaseLayerImplementation Line 66  public class DatabaseLayerImplementation
66                                  a.postnr = (short)res.getInt(7);                                  a.postnr = (short)res.getInt(7);
67                                  a.gadeid = res.getInt(8);                                  a.gadeid = res.getInt(8);
68                                  a.distributor = distributorCache.getInstance(res.getString(9));                                  a.distributor = distributorCache.getInstance(res.getString(9));
69                                  a.dbkBane = (short) res.getInt(10);                                  a.dbkBane = baneCache.getInstance( res.getString(10) );
70                                    a.latitude = (float) res.getDouble(11);
71                                    a.longitude = (float) res.getDouble(12);
72                                    
73                                    a.routingMandag.rute = dirigeringsCache.getInstance( res.getString(13) );
74                                    a.routingMandag.koreliste = dirigeringsCache.getInstance( res.getString(14) );
75                                    
76                                    a.routingTirsdag.rute = dirigeringsCache.getInstance( res.getString(15) );
77                                    a.routingTirsdag.koreliste = dirigeringsCache.getInstance( res.getString(16) );                        
78    
79                                    a.routingOnsdag.rute = dirigeringsCache.getInstance( res.getString(17) );
80                                    a.routingOnsdag.koreliste = dirigeringsCache.getInstance( res.getString(18) );
81                                                                    
82                                  a.koreliste = korelisteCache.getInstance( res.getString(11) );                                  a.routingTorsdag.rute = dirigeringsCache.getInstance( res.getString(19) );
83                                  a.rute = ruteCache.getInstance( res.getString(12) );                                  a.routingTorsdag.koreliste = dirigeringsCache.getInstance( res.getString(20) );
                                 a.korelisteLordag = korelisteCache.getInstance( res.getString(13) );  
                                 a.ruteLordag = ruteCache.getInstance( res.getString(14) );                                
                                 a.korelisteSondag = korelisteCache.getInstance( res.getString(15) );  
                                 a.ruteSondag = ruteCache.getInstance( res.getString(16) );  
84                                                                    
85                                  a.latitude = (float) res.getDouble(17);                                  a.routingFredag.rute = dirigeringsCache.getInstance( res.getString(21) );
86                                  a.longitude = (float) res.getDouble(18);                                  a.routingFredag.koreliste = dirigeringsCache.getInstance( res.getString(22) );
87                                                                    
88                                  //a.vasketVejnavn = AddressUtils.vaskVejnavn(a.vejnavn);                                  a.routingLordag.rute = dirigeringsCache.getInstance( res.getString(23) );
89                                    a.routingLordag.koreliste = dirigeringsCache.getInstance( res.getString(24) );
90                                    
91                                    a.routingSondag.rute = dirigeringsCache.getInstance( res.getString(25) );
92                                    a.routingSondag.koreliste = dirigeringsCache.getInstance( res.getString(26) );
93                                                                    
94                                                                    
95                                  //Ajourfør adresse objectets dækningstype                                  //Ajourfør adresse objectets dækningstype
# Line 82  public class DatabaseLayerImplementation Line 99  public class DatabaseLayerImplementation
99                          }                          }
100                          res.close();                          res.close();
101                                                    
102                          System.out.println("Loaded " + list.size() + " adresses");                          
103                            System.out.println("DB Loaded " + list.size() + " adresses in " + timing.getElapsed() + "ms");
104                                                    
105                          return list;                          return list;
106                  }                  }
# Line 90  public class DatabaseLayerImplementation Line 108  public class DatabaseLayerImplementation
108                    
109          @Override          @Override
110          public List<AliasBean> getAliasList() throws SQLException {          public List<AliasBean> getAliasList() throws SQLException {
111                    TimingHelper timing = new TimingHelper();
112                                    
113    
114                  String sql = "SELECT postnr,vejnavn,aliasvejnavn " +                  String sql = "SELECT postnr,vejnavn,aliasvejnavn " +
# Line 97  public class DatabaseLayerImplementation Line 116  public class DatabaseLayerImplementation
116                                          ;                                          ;
117                                    
118                  try ( Connection conn = DBConnection.getConnection();                            try ( Connection conn = DBConnection.getConnection();          
119                                  Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);                                  Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
120                                  ) {                                  ) {
121                                                                                    
122                          stmt.setFetchSize(Integer.MIN_VALUE);                          stmt.setFetchSize(Integer.MIN_VALUE);
# Line 119  public class DatabaseLayerImplementation Line 138  public class DatabaseLayerImplementation
138                                    
139                          res.close();                          res.close();
140                                                    
141                          System.out.println("Loaded " + list.size() + " aliase beans");                          System.out.println("DB Loaded " + list.size() + " aliase beans in " + timing.getElapsed() + "ms");
142                                                    
143                          return list;                          return list;
144                  }                  }
# Line 128  public class DatabaseLayerImplementation Line 147  public class DatabaseLayerImplementation
147                    
148          @Override          @Override
149          public List<ExtendedBean> getExtendedAdresslist() throws SQLException {          public List<ExtendedBean> getExtendedAdresslist() throws SQLException {
150                    
151                    TimingHelper timing = new TimingHelper();
152                    
153                  String debugFilter1 = DatabaseLayerImplementation.DEBUG ? " WHERE orgPostnr = 8700 " : "";                  String debugFilter1 = DatabaseLayerImplementation.DEBUG ? " WHERE orgPostnr = 8700 " : "";
154                  String debugFilter2 = DatabaseLayerImplementation.DEBUG ? " AND orgPostnr = 8700 " : "";                  String debugFilter2 = DatabaseLayerImplementation.DEBUG ? " AND orgPostnr = 8700 " : "";
155                                    
156                                    
157                  String sql = "select orgid, a.id as targetid, afstand, LOWER(type) as type from fulddaekning.afstand_anden_rute a " +                  String sql = "select orgid, a.id as targetid, afstand, LOWER(type) as type from fulddaekning.afstand_anden_rute a " +
158                                          "join odbc.transporttype t " +                                          "LEFT join odbc.transporttype t " +
159                                          "on t.Art = 'Transpost' " +                                          "ON (t.Rute = a.Rute) " +
                                         "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 " +  
160                                          debugFilter1 +                                          debugFilter1 +
161                                                                                    
162                                          "UNION ALL " +                                          "UNION ALL " +
# Line 148  public class DatabaseLayerImplementation Line 168  public class DatabaseLayerImplementation
168                                          ;                                          ;
169                                    
170                  try ( Connection conn = DBConnection.getConnection();                            try ( Connection conn = DBConnection.getConnection();          
171                                  Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);                                  Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
172                                  ) {                                  ) {
173                                                    
174                                    
# Line 172  public class DatabaseLayerImplementation Line 192  public class DatabaseLayerImplementation
192                                                    
193                          res.close();                          res.close();
194                                                    
195                          System.out.println("Loaded " + list.size() + " extendedbeans");                          System.out.println("DB Loaded " + list.size() + " extendedbeans in " + timing.getElapsed() + "ms");
196                                                    
197                          return list;                          return list;
198                  }                  }
# Line 180  public class DatabaseLayerImplementation Line 200  public class DatabaseLayerImplementation
200                    
201          @Override          @Override
202          public Map<Short,HundredePctBean> get100PctList() throws SQLException {          public Map<Short,HundredePctBean> get100PctList() throws SQLException {
203                    TimingHelper timing = new TimingHelper();
204                    
205                  String sql = "SELECT postnr,UPPER(distributor) as distributor,rute,koreliste,dbkbane " +                  String sql = "SELECT postnr,UPPER(distributor) as distributor,rute,koreliste,dbkbane " +
206                                           "FROM bogleveringer.adresser_udenfor_daekning";                                           "FROM bogleveringer.adresser_udenfor_daekning";
207                                    
208                  try ( Connection conn = DBConnection.getConnection();                            try ( Connection conn = DBConnection.getConnection();          
209                                  Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);                                  Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
210                                  ) {                                  ) {
211                          ResultSet res = stmt.executeQuery(sql);                          ResultSet res = stmt.executeQuery(sql);
212                    
# Line 193  public class DatabaseLayerImplementation Line 215  public class DatabaseLayerImplementation
215                          DeduplicateHelper<String> distributorCache = new DeduplicateHelper<String>();                          DeduplicateHelper<String> distributorCache = new DeduplicateHelper<String>();
216                          DeduplicateHelper<String> ruteCache = new DeduplicateHelper<String>();                          DeduplicateHelper<String> ruteCache = new DeduplicateHelper<String>();
217                          DeduplicateHelper<String> korelisteCache = new DeduplicateHelper<String>();                          DeduplicateHelper<String> korelisteCache = new DeduplicateHelper<String>();
218                            DeduplicateHelper<String> baneCache = new DeduplicateHelper<String>();
219                                                    
220                          while (res.next()) {                          while (res.next()) {
221                                                                    
# Line 202  public class DatabaseLayerImplementation Line 225  public class DatabaseLayerImplementation
225                                  bean.distributor = distributorCache.getInstance(res.getString(2));                                  bean.distributor = distributorCache.getInstance(res.getString(2));
226                                  bean.rute = ruteCache.getInstance( res.getString(3) );                                  bean.rute = ruteCache.getInstance( res.getString(3) );
227                                  bean.koreliste = korelisteCache.getInstance(res.getString(4) );                                  bean.koreliste = korelisteCache.getInstance(res.getString(4) );
228                                  bean.dbkBane = (short)res.getInt(5);                                                      bean.dbkBane = baneCache.getInstance(res.getString(5) );                        
229                                                                                                                    
230                                  map.put(bean.postnr, bean);                                  map.put(bean.postnr, bean);
231                          }                          }
232                                                    
233                          res.close();                          res.close();
234                                                    
235                          System.out.println("Loaded " + map.size() + " 100pct beans");                          System.out.println("DB Loaded " + map.size() + " 100pct beans in " + timing.getElapsed() + "ms");
236                                                    
237                          return map;                          return map;
238                  }                  }
# Line 291  public class DatabaseLayerImplementation Line 314  public class DatabaseLayerImplementation
314                          return 22;                                                return 22;                      
315                  case ERROR_UNKNOWN_STREETNAME:                  case ERROR_UNKNOWN_STREETNAME:
316                          return 23;                          return 23;
317                  case ERROR_UNKNOWN_ADDRESSPOINT:                  case ERROR_UNKNOWN_HOUSENUMBER:
318                          return 24;                          return 24;
319                            
320                  case STATUS_NOT_COVERED:                                          case STATUS_NOT_COVERED:                        
321                          return 25;                          return 25;
322                  case ERROR_INTERNAL: //                                  case ERROR_INTERNAL: //                
323                          return 26;                                                return 26;
324                            
325                    case ERROR_UNKNOWN_LITRA: //Er kommet til senere, derfor ligger den paa 27 selvom den logisk set burde have haft 25
326                            return 27;                      
327                                                    
328                  case STATUS_OK:                  case STATUS_OK:
329                          return 30;                          return 30;

Legend:
Removed from v.2763  
changed lines
  Added in v.3122

  ViewVC Help
Powered by ViewVC 1.1.20