/[projects]/dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/admin/CsvUdtraek.java
ViewVC logotype

Annotation of /dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/admin/CsvUdtraek.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2500 - (hide annotations) (download)
Wed Mar 25 07:34:09 2015 UTC (9 years, 2 months ago) by torben
File size: 6250 byte(s)
Lidt flere data i sammenlignings udtræk
1 torben 2499 package dk.daoas.daoadresseservice.admin;
2 torben 2332
3     import java.io.IOException;
4 torben 2394 import java.io.PrintWriter;
5 torben 2384 import java.sql.SQLException;
6 torben 2500 import java.text.SimpleDateFormat;
7     import java.util.Date;
8 torben 2384 import java.util.List;
9 torben 2332
10     import javax.servlet.ServletException;
11     import javax.servlet.annotation.WebServlet;
12     import javax.servlet.http.HttpServlet;
13     import javax.servlet.http.HttpServletRequest;
14     import javax.servlet.http.HttpServletResponse;
15    
16 torben 2499 import dk.daoas.daoadresseservice.AddressSearch;
17 torben 2332 import dk.daoas.daoadresseservice.beans.Address;
18 torben 2384 import dk.daoas.daoadresseservice.beans.LoggedAddress;
19     import dk.daoas.daoadresseservice.beans.SearchResult;
20     import dk.daoas.daoadresseservice.beans.SearchResult.Status;
21     import dk.daoas.daoadresseservice.db.DatabaseLayer;
22 torben 2500 import dk.daoas.daoadresseservice.util.TimingHelper;
23 torben 2332
24     /**
25     * Servlet implementation class CsvUdtraek
26     */
27     @WebServlet("/CsvUdtraek")
28     public class CsvUdtraek extends HttpServlet {
29     private static final long serialVersionUID = 1L;
30    
31    
32     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
33 torben 2384 String type = request.getParameter("type");
34     String str = null;
35 torben 2332
36 torben 2384 if (type != null) {
37     switch( type ) {
38     case "ikkedaekket":
39     str = udtraekIkkeDaekket();
40     break;
41     case "sammenlign":
42     str = udtraekSammenligning(request);
43     break;
44     default:
45     str = null;
46     break;
47     }
48 torben 2332 }
49    
50 torben 2384 if (str != null) {
51     response.setContentType("text/csv");
52     response.setHeader("Content-Disposition", "filename=" + type + ".csv");
53     response.getWriter().print(str);
54     } else {
55 torben 2394 PrintWriter w = response.getWriter();
56     response.setContentType("text/html");
57     w.print("Type parameter is blank or invalid value<br>");
58     w.print("Type: <a href='CsvUdtraek?type=ikkedaekket'>ikkedaekket</a> <br>");
59     w.print("Type: <a href='CsvUdtraek?type=sammenlign&antaldage=5'>sammenlign</a> <br>");
60 torben 2384 }
61 torben 2332 }
62    
63 torben 2384 /* *******************************************
64     *
65     */
66 torben 2332 private String udtraekIkkeDaekket() {
67 torben 2410 AddressSearch search = (AddressSearch) getServletContext().getAttribute("search");
68 torben 2332 if (search == null) {
69     return "data struktur ikke indlæst";
70     }
71    
72     StringBuilder sb = new StringBuilder();
73 torben 2335 sb.append("gadeid;postnr;vejnavn;husnr;husnrbogstav;distributor\r\n");
74 torben 2332
75     for (Address addr : search.getNonCoveredAddresses() ) {
76 torben 2335 sb.append( addr.gadeid ).append(";")
77 torben 2332 .append( addr.postnr ).append(";")
78     .append( addr.vejnavn ).append(";")
79     .append( addr.husnr ).append(";")
80     .append( addr.husnrbogstav ).append(";")
81     .append( addr.distributor != null ? addr.distributor : "" )
82     .append( "\n" );
83     }
84    
85     return sb.toString();
86     }
87 torben 2384
88     /* *******************************************
89     *
90     */
91 torben 2332
92 torben 2384 protected String udtraekSammenligning(HttpServletRequest request) throws IOException {
93    
94 torben 2410 AddressSearch search = (AddressSearch) getServletContext().getAttribute("search");
95 torben 2384 if (search == null) {
96     return "data struktur ikke indlæst";
97     }
98    
99     int antal_dage = 2;
100    
101     if (request.getParameter("antaldage") != null ) {
102 torben 2385 antal_dage = Integer.parseInt( request.getParameter("antaldage") );
103 torben 2384 }
104    
105 torben 2402 int antal_nyfejl_glok = 0;
106     int antal_nyfejl_glfejl = 0;
107     int antal_nyok_glfejl = 0;
108     int antal_nyok_glgoogle = 0;
109 torben 2419 int antal_nygoogle_glgoogle = 0;
110 torben 2402 int antal_nyok_glok = 0;
111 torben 2384
112     try {
113 torben 2500 TimingHelper timer = new TimingHelper();
114    
115 torben 2384 StringBuilder sb = new StringBuilder();
116 torben 2418 sb.append("besked;postnr;adresse;gl status;ny status;ny split;ny vej\n");
117 torben 2384
118     List<LoggedAddress> addrList = DatabaseLayer.getLoggedAdresses(antal_dage);
119    
120     for(LoggedAddress addr : addrList) {
121     SearchResult res = search.search("" + addr.postnr, addr.adresse);
122    
123     if (res.status != Status.STATUS_OK) { //Ny service fandt ikke adressen) {
124    
125     if (addr.status != 10 ) {//Hvis gl service kunne finde adressen så er vi ude i en regression
126    
127     appendLogLine("ny fejler, gl ok", sb, addr, res);
128 torben 2402 antal_nyfejl_glok++;
129 torben 2384
130     } else {
131     appendLogLine("ny fejler, gl fejler !!!", sb, addr, res);
132 torben 2402 antal_nyfejl_glfejl++;
133 torben 2384 }
134    
135     } else {
136     if (addr.status == 10) {
137     appendLogLine("ny OK, gl fejler", sb, addr, res);
138 torben 2402 antal_nyok_glfejl++;
139 torben 2384
140     } else if (addr.status == 12 ) {
141    
142     if (res.google == false && res.osm == false) {
143    
144 torben 2402 appendLogLine("ny Direkte, gl Google", sb, addr, res);
145     antal_nyok_glgoogle++;
146 torben 2419 } else {
147     appendLogLine("ny Google, gl Google", sb, addr, res);
148     antal_nygoogle_glgoogle++;
149     }
150 torben 2402 } else {
151     antal_nyok_glok++;
152 torben 2384 }
153     }
154    
155     if (res.osm || res.google) {
156     try {
157     Thread.sleep(50);//Back-off external services
158     } catch(InterruptedException e) {
159     //
160     }
161     }
162 torben 2419
163 torben 2384 }
164 torben 2419
165 torben 2500
166     sb.append("Forbrugt tid: ;").append( timer.getElapsed() ).append(";;;\n");
167     sb.append("SearchData genereret: ;").append( search.getStatistics().buildTime ).append(";;;\n");
168     sb.append("Sammenligning csv genereret: ;").append( new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format( new Date() ) ).append(";;;\n");
169    
170    
171 torben 2394 sb.append("Antal dage: ;").append( antal_dage ).append(";;;\n");
172 torben 2419 sb.append("Antal adresser testet: ;").append(addrList.size()).append(";;;\n");
173 torben 2402 sb.append("Antal ny ok, gl ok: ;").append( antal_nyok_glok ).append(";;;\n");
174     sb.append("Antal ny ok, gl google: ;").append( antal_nyok_glgoogle ).append(";;;\n");
175     sb.append("Antal ny ok, gl fejl: ;").append( antal_nyok_glfejl ).append(";;;\n");
176 torben 2419 sb.append("Antal ny google, gl google: ;").append( antal_nygoogle_glgoogle ).append(";;;\n");
177 torben 2402 sb.append("Antal ny fejl, gl ok: ;").append( antal_nyfejl_glok ).append(";;;\n");
178     sb.append("Antal ny fejl, gl fejl: ;").append( antal_nyfejl_glfejl ).append(";;;\n");
179 torben 2384
180 torben 2402
181 torben 2419
182    
183 torben 2384
184     return sb.toString();
185    
186     } catch(SQLException e) {
187     throw new IOException(e);
188     }
189     }
190    
191     private void appendLogLine(String msg, StringBuilder sb, LoggedAddress addr, SearchResult res) {
192    
193 torben 2386 sb.append(msg).append(";")
194     .append(addr.postnr).append(";")
195 torben 2384 .append(addr.adresse).append(";")
196 torben 2386 .append(addr.status).append(";")
197     .append(res.status).append(";")
198     .append(res.splitResult).append(";")
199 torben 2418 .append(res.vej)
200 torben 2386 .append("\n");
201 torben 2384
202     }
203    
204 torben 2332 }

  ViewVC Help
Powered by ViewVC 1.1.20