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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2285 - (hide annotations) (download)
Fri Feb 13 15:58:36 2015 UTC (9 years, 3 months ago) by torben
File size: 4424 byte(s)
1) Sørg for at data strukturerne har en fornuftig initial Capacity for an undgå for mange udvidelser under start
2) da vi ikke bruger idAdresseMap efter indlæsningen er der der ingen grund til at gemme disse data på objekt niveau
1 torben 2274 package dk.daoas.daoadresseservice.db;
2    
3    
4     import java.sql.Connection;
5     import java.sql.ResultSet;
6     import java.sql.SQLException;
7     import java.sql.Statement;
8     import java.util.ArrayList;
9 torben 2279 import java.util.HashMap;
10 torben 2274 import java.util.List;
11 torben 2279 import java.util.Map;
12 torben 2274
13     import dk.daoas.daoadresseservice.DaekningsType;
14 torben 2282 import dk.daoas.daoadresseservice.beans.Address;
15     import dk.daoas.daoadresseservice.beans.ExtendedBean;
16     import dk.daoas.daoadresseservice.beans.HundredePctBean;
17 torben 2274
18     public class DatabaseLayer {
19    
20     public static List<Address> getAllAdresses() throws SQLException {
21    
22 torben 2283 String sql = "SELECT id,vejnavn,husnr,husnrbogstav,kommunekode,vejkode,postnr,gadeid,upper(distributor) AS distributor,dbkbane,koreliste,rute "
23 torben 2274 + "FROM fulddaekning.adressetabel "
24 torben 2283 //+ "WHERE postnr >=2000" //DEBUG only
25 torben 2274 ;
26    
27     Connection conn = DBConnection.getConnection();
28     Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
29     ResultSet res = stmt.executeQuery(sql);
30    
31 torben 2285 List<Address> list = new ArrayList<Address>(2600000);//initial capacity 2.6 mio
32 torben 2274
33     while (res.next()) {
34     Address a = new Address();
35     a.id = res.getInt(1);
36     a.vejnavn = res.getString(2);
37     a.husnr = res.getInt(3);
38     a.husnrbogstav = res.getString(4);
39     a.kommunekode = res.getInt(5);
40     a.vejkode = res.getInt(6);
41     a.postnr = res.getInt(7);
42     a.gadeid = res.getLong(8);
43     a.distributor = res.getString(9);
44     a.dbkBane = res.getInt(10);
45     a.koreliste = res.getString(11);
46     a.rute = res.getString(12);
47    
48 torben 2281 //a.vasketVejnavn = AddressUtils.vaskVejnavn(a.vejnavn);
49 torben 2274
50     if (a.rute != null && a.rute.length()> 0) {
51     a.daekningsType = DaekningsType.DAEKNING_DIREKTE;
52     } else {
53     a.daekningsType = DaekningsType.DAEKNING_IKKEDAEKKET;
54 torben 2283 }
55 torben 2274
56     list.add(a);
57     }
58     res.close();
59     stmt.close();
60     conn.close();
61    
62     System.out.println("Loaded " + list.size() + " adresses");
63    
64     return list;
65     }
66 torben 2276
67 torben 2279 public static List<ExtendedBean> getExtendedAdresslist() throws SQLException {
68 torben 2283 String sql = "select orgid, a.id as targetid, afstand, LOWER(type) as type from fulddaekning.afstand_anden_rute a " +
69 torben 2276 "join odbc.transporttype t " +
70     "on t.Art = 'Transpost' " +
71     "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) ) " +
72     "and t.Rute = a.Rute " +
73    
74     "UNION ALL " +
75    
76     "SELECT orgid, a.id as targetid, afstand,'' as type FROM fulddaekning.afstand_anden_rute_bk a " +
77     "left join bogleveringer.postnummerdistributor d on d.PostNr = a.orgPostnr " +
78     "WHERE d.Distributor <> 10057"
79     ;
80    
81     Connection conn = DBConnection.getConnection();
82     Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
83     ResultSet res = stmt.executeQuery(sql);
84    
85 torben 2285 List<ExtendedBean> list = new ArrayList<ExtendedBean>( 350000); //Initial capacity 350K
86 torben 2276 while (res.next()) {
87     ExtendedBean eb = new ExtendedBean();
88     eb.orgId = res.getInt(1);
89     eb.targetId = res.getInt(2);
90     eb.afstand = res.getDouble(3);
91 torben 2283 eb.transport = res.getString(4);
92 torben 2276
93     list.add(eb);
94     }
95    
96     res.close();
97     stmt.close();
98     conn.close();
99    
100     System.out.println("Loaded " + list.size() + " extendedbeans");
101    
102     return list;
103     }
104    
105 torben 2279 public static Map<Integer,HundredePctBean> get100PctList() throws SQLException {
106 torben 2283 String sql = "SELECT postnr,UPPER(distributor) as distributor,rute,koreliste,dbkbane " +
107 torben 2279 "FROM bogleveringer.adresser_udenfor_daekning";
108    
109     Connection conn = DBConnection.getConnection();
110     Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
111     ResultSet res = stmt.executeQuery(sql);
112    
113     Map<Integer,HundredePctBean> map = new HashMap<Integer,HundredePctBean>();
114    
115     while (res.next()) {
116    
117     HundredePctBean bean = new HundredePctBean();
118     bean.postnr = res.getInt(1);
119 torben 2283 bean.distributor = res.getString(2);
120 torben 2279 bean.rute = res.getString(3);
121     bean.koreliste = res.getString(4);
122     bean.dbkBane = res.getInt(5);
123    
124     map.put(bean.postnr, bean);
125     }
126    
127     res.close();
128     stmt.close();
129     conn.close();
130    
131 torben 2285 System.out.println("Loaded " + map.size() + " 100pct beans");
132 torben 2279
133     return map;
134    
135     }
136    
137 torben 2274 }

  ViewVC Help
Powered by ViewVC 1.1.20