--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/CsvUdtraek.java 2015/02/21 13:39:56 2332
+++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/CsvUdtraek.java 2015/02/27 11:12:44 2402
@@ -1,6 +1,9 @@
package dk.daoas.daoadresseservice;
import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.SQLException;
+import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
@@ -9,6 +12,10 @@
import javax.servlet.http.HttpServletResponse;
import dk.daoas.daoadresseservice.beans.Address;
+import dk.daoas.daoadresseservice.beans.LoggedAddress;
+import dk.daoas.daoadresseservice.beans.SearchResult;
+import dk.daoas.daoadresseservice.beans.SearchResult.Status;
+import dk.daoas.daoadresseservice.db.DatabaseLayer;
/**
* Servlet implementation class CsvUdtraek
@@ -19,21 +26,39 @@
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String type = request.getParameter("type");
+ String type = request.getParameter("type");
+ String str = null;
- String str;
- switch( type ) {
- case "ikkedaekket":
- str = udtraekIkkeDaekket();
- break;
- default:
- str = "ukendt type";
- break;
+ if (type != null) {
+ switch( type ) {
+ case "ikkedaekket":
+ str = udtraekIkkeDaekket();
+ break;
+ case "sammenlign":
+ str = udtraekSammenligning(request);
+ break;
+ default:
+ str = null;
+ break;
+ }
}
- response.getWriter().print(str);
+ if (str != null) {
+ response.setContentType("text/csv");
+ response.setHeader("Content-Disposition", "filename=" + type + ".csv");
+ response.getWriter().print(str);
+ } else {
+ PrintWriter w = response.getWriter();
+ response.setContentType("text/html");
+ w.print("Type parameter is blank or invalid value
");
+ w.print("Type: ikkedaekket
");
+ w.print("Type: sammenlign
");
+ }
}
+ /* *******************************************
+ *
+ */
private String udtraekIkkeDaekket() {
AdressSearch search = (AdressSearch) getServletContext().getAttribute("search");
if (search == null) {
@@ -41,11 +66,10 @@
}
StringBuilder sb = new StringBuilder();
- sb.append("rowid;gadeid;postnr;vejnavn;husnr;husnrbogstav;distributor\r\n");
+ sb.append("gadeid;postnr;vejnavn;husnr;husnrbogstav;distributor\r\n");
for (Address addr : search.getNonCoveredAddresses() ) {
- sb.append( addr.id ).append(";")
- .append( addr.gadeid ).append(";")
+ sb.append( addr.gadeid ).append(";")
.append( addr.postnr ).append(";")
.append( addr.vejnavn ).append(";")
.append( addr.husnr ).append(";")
@@ -56,5 +80,103 @@
return sb.toString();
}
+
+ /* *******************************************
+ *
+ */
+
+ protected String udtraekSammenligning(HttpServletRequest request) throws IOException {
+
+ AdressSearch search = (AdressSearch) getServletContext().getAttribute("search");
+ if (search == null) {
+ return "data struktur ikke indlæst";
+ }
+
+ int antal_dage = 2;
+
+ if (request.getParameter("antaldage") != null ) {
+ antal_dage = Integer.parseInt( request.getParameter("antaldage") );
+ }
+
+ int antal_nyfejl_glok = 0;
+ int antal_nyfejl_glfejl = 0;
+ int antal_nyok_glfejl = 0;
+ int antal_nyok_glgoogle = 0;
+ int antal_nyok_glok = 0;
+
+ try {
+ StringBuilder sb = new StringBuilder();
+ sb.append("besked;postnr;adresse;gl status;ny status;ny split\n");
+
+ List addrList = DatabaseLayer.getLoggedAdresses(antal_dage);
+
+ for(LoggedAddress addr : addrList) {
+ SearchResult res = search.search("" + addr.postnr, addr.adresse);
+
+ if (res.status != Status.STATUS_OK) { //Ny service fandt ikke adressen) {
+
+ if (addr.status != 10 ) {//Hvis gl service kunne finde adressen så er vi ude i en regression
+
+ appendLogLine("ny fejler, gl ok", sb, addr, res);
+ antal_nyfejl_glok++;
+
+ } else {
+ appendLogLine("ny fejler, gl fejler !!!", sb, addr, res);
+ antal_nyfejl_glfejl++;
+ }
+
+ } else {
+ if (addr.status == 10) {
+ appendLogLine("ny OK, gl fejler", sb, addr, res);
+ antal_nyok_glfejl++;
+
+ } else if (addr.status == 12 ) {
+
+ if (res.google == false && res.osm == false) {
+
+ appendLogLine("ny Direkte, gl Google", sb, addr, res);
+ antal_nyok_glgoogle++;
+ }
+ } else {
+ antal_nyok_glok++;
+ }
+ }
+
+ if (res.osm || res.google) {
+ try {
+ Thread.sleep(50);//Back-off external services
+ } catch(InterruptedException e) {
+ //
+ }
+ }
+ }
+ sb.append("Antal adresser testet: ;").append(addrList.size()).append(";;;\n");
+ sb.append("Antal dage: ;").append( antal_dage ).append(";;;\n");
+ sb.append("Antal ny ok, gl ok: ;").append( antal_nyok_glok ).append(";;;\n");
+ sb.append("Antal ny ok, gl google: ;").append( antal_nyok_glgoogle ).append(";;;\n");
+ sb.append("Antal ny ok, gl fejl: ;").append( antal_nyok_glfejl ).append(";;;\n");
+ sb.append("Antal ny fejl, gl ok: ;").append( antal_nyfejl_glok ).append(";;;\n");
+ sb.append("Antal ny fejl, gl fejl: ;").append( antal_nyfejl_glfejl ).append(";;;\n");
+
+
+
+ return sb.toString();
+
+ } catch(SQLException e) {
+ throw new IOException(e);
+ }
+ }
+
+ private void appendLogLine(String msg, StringBuilder sb, LoggedAddress addr, SearchResult res) {
+
+ sb.append(msg).append(";")
+ .append(addr.postnr).append(";")
+ .append(addr.adresse).append(";")
+ .append(addr.status).append(";")
+ .append(res.status).append(";")
+ .append(res.splitResult).append(";")
+ .append("\n");
+
+ }
}