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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2285 - (show 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 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 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12
13 import dk.daoas.daoadresseservice.DaekningsType;
14 import dk.daoas.daoadresseservice.beans.Address;
15 import dk.daoas.daoadresseservice.beans.ExtendedBean;
16 import dk.daoas.daoadresseservice.beans.HundredePctBean;
17
18 public class DatabaseLayer {
19
20 public static List<Address> getAllAdresses() throws SQLException {
21
22 String sql = "SELECT id,vejnavn,husnr,husnrbogstav,kommunekode,vejkode,postnr,gadeid,upper(distributor) AS distributor,dbkbane,koreliste,rute "
23 + "FROM fulddaekning.adressetabel "
24 //+ "WHERE postnr >=2000" //DEBUG only
25 ;
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 List<Address> list = new ArrayList<Address>(2600000);//initial capacity 2.6 mio
32
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 //a.vasketVejnavn = AddressUtils.vaskVejnavn(a.vejnavn);
49
50 if (a.rute != null && a.rute.length()> 0) {
51 a.daekningsType = DaekningsType.DAEKNING_DIREKTE;
52 } else {
53 a.daekningsType = DaekningsType.DAEKNING_IKKEDAEKKET;
54 }
55
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
67 public static List<ExtendedBean> getExtendedAdresslist() throws SQLException {
68 String sql = "select orgid, a.id as targetid, afstand, LOWER(type) as type from fulddaekning.afstand_anden_rute a " +
69 "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 List<ExtendedBean> list = new ArrayList<ExtendedBean>( 350000); //Initial capacity 350K
86 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 eb.transport = res.getString(4);
92
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 public static Map<Integer,HundredePctBean> get100PctList() throws SQLException {
106 String sql = "SELECT postnr,UPPER(distributor) as distributor,rute,koreliste,dbkbane " +
107 "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 bean.distributor = res.getString(2);
120 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 System.out.println("Loaded " + map.size() + " 100pct beans");
132
133 return map;
134
135 }
136
137 }

  ViewVC Help
Powered by ViewVC 1.1.20