--- dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/db/DatabaseLayerImplementation.java 2015/07/15 08:37:40 2609
+++ dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/db/DatabaseLayerImplementation.java 2015/11/19 15:29:36 2775
@@ -11,14 +11,13 @@
import java.util.Map;
import dk.daoas.daoadresseservice.AddressUtils;
-import dk.daoas.daoadresseservice.DaekningsType;
import dk.daoas.daoadresseservice.beans.Address;
import dk.daoas.daoadresseservice.beans.AliasBean;
import dk.daoas.daoadresseservice.beans.ExtendedBean;
import dk.daoas.daoadresseservice.beans.HundredePctBean;
-import dk.daoas.daoadresseservice.beans.LoggedAddress;
import dk.daoas.daoadresseservice.beans.SearchResult;
import dk.daoas.daoadresseservice.util.DeduplicateHelper;
+import dk.daoas.daoadresseservice.util.TimingHelper;
public class DatabaseLayerImplementation implements DatabaseLayer {
@@ -26,6 +25,8 @@
@Override
public List
getAllAdresses() throws SQLException {
+ TimingHelper timing = new TimingHelper();
+
String debugFilter = DatabaseLayerImplementation.DEBUG ? " AND postnr = 8700 " : "";
String sql =
@@ -83,10 +84,8 @@
list.add(a);
}
res.close();
- stmt.close();
- conn.close();
- System.out.println("Loaded " + list.size() + " adresses");
+ System.out.println("DB Loaded " + list.size() + " adresses in " + timing.getElapsed() + "ms");
return list;
}
@@ -94,6 +93,7 @@
@Override
public List getAliasList() throws SQLException {
+ TimingHelper timing = new TimingHelper();
String sql = "SELECT postnr,vejnavn,aliasvejnavn " +
@@ -123,7 +123,7 @@
res.close();
- System.out.println("Loaded " + list.size() + " aliase beans");
+ System.out.println("DB Loaded " + list.size() + " aliase beans in " + timing.getElapsed() + "ms");
return list;
}
@@ -132,15 +132,16 @@
@Override
public List getExtendedAdresslist() throws SQLException {
+
+ TimingHelper timing = new TimingHelper();
+
String debugFilter1 = DatabaseLayerImplementation.DEBUG ? " WHERE orgPostnr = 8700 " : "";
String debugFilter2 = DatabaseLayerImplementation.DEBUG ? " AND orgPostnr = 8700 " : "";
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 " +
+ "LEFT join odbc.transporttype t " +
+ "ON (t.Rute = a.Rute) " +
debugFilter1 +
"UNION ALL " +
@@ -176,7 +177,7 @@
res.close();
- System.out.println("Loaded " + list.size() + " extendedbeans");
+ System.out.println("DB Loaded " + list.size() + " extendedbeans in " + timing.getElapsed() + "ms");
return list;
}
@@ -184,6 +185,8 @@
@Override
public Map get100PctList() throws SQLException {
+ TimingHelper timing = new TimingHelper();
+
String sql = "SELECT postnr,UPPER(distributor) as distributor,rute,koreliste,dbkbane " +
"FROM bogleveringer.adresser_udenfor_daekning";
@@ -195,6 +198,8 @@
Map map = new HashMap();
DeduplicateHelper distributorCache = new DeduplicateHelper();
+ DeduplicateHelper ruteCache = new DeduplicateHelper();
+ DeduplicateHelper korelisteCache = new DeduplicateHelper();
while (res.next()) {
@@ -202,8 +207,8 @@
HundredePctBean bean = new HundredePctBean();
bean.postnr = (short) res.getInt(1);
bean.distributor = distributorCache.getInstance(res.getString(2));
- bean.rute = res.getString(3);
- bean.koreliste = res.getString(4);
+ bean.rute = ruteCache.getInstance( res.getString(3) );
+ bean.koreliste = korelisteCache.getInstance(res.getString(4) );
bean.dbkBane = (short)res.getInt(5);
map.put(bean.postnr, bean);
@@ -211,7 +216,7 @@
res.close();
- System.out.println("Loaded " + map.size() + " 100pct beans");
+ System.out.println("DB Loaded " + map.size() + " 100pct beans in " + timing.getElapsed() + "ms");
return map;
}
@@ -219,11 +224,11 @@
}
@Override
- public void saveRequestLog(String brugerid, String postnr, String adresse, SearchResult result) throws SQLException {
+ public void saveRequestLog(String brugerid, String postnr, String adresse, String omdelingsdag, SearchResult result) throws SQLException {
String setVar = "set sql_mode = 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' ";
- String sql = "INSERT INTO logs.hentruteinformation (postnr,adresse,vejnavn,googlevejnavn,husnr,husnr_bogstav,etage,lejlighed,rest,brugerid,status, indlast) " +
- "VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW() )";
+ String sql = "INSERT INTO logs.hentruteinformation (postnr,adresse,vejnavn,googlevejnavn,husnr,husnr_bogstav,etage,lejlighed,rest,brugerid,status, OmdelingDag, indlast) " +
+ "VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW() )";
@@ -244,49 +249,16 @@
stmt.setString( 7, result.splitResult.etage);
stmt.setString( 8, result.splitResult.lejlighed);
stmt.setString( 9, result.splitResult.resten);
- stmt.setString(10, brugerid);
+ stmt.setString(10, brugerid);
stmt.setInt(11, getStatusInt(result.status) );
+ stmt.setString(12, omdelingsdag);
stmt.executeUpdate();
}
}
- /*
- * Bruges til at sammenligne gammel og ny adresse service - kan fjernes engang efter at vi er skiftet til ny service
- */
- @Deprecated
- public static List getLoggedAdresses(int antaldage) throws SQLException {
- String sql = "select postnr,adresse,status from logs.hentruteinformation where indlast>=date_sub(curdate(), interval " + antaldage + " day) " +
- "and status IN (10,11,12) " +
- "group by postnr,adresse "
- ;
- try ( 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 result = new ArrayList();
-
- while (res.next()) {
- LoggedAddress a = new LoggedAddress();
- a.postnr = res.getInt(1);
- a.adresse = res.getString(2);
- a.status = res.getInt(3);
-
- result.add(a);
- }
-
- res.close();
-
- return result;
- }
- }
private static int safeInt(String str) {