package com.grundfos.gmatou.dataupload; import com.oreilly.servlet.multipart.*; import java.sql.*; import java.io.*; import java.util.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class DataReceiver */ public class DataReceiver extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DataReceiver() { super(); } private static final int SIZE = 10000000; private Map getParts(HttpServletRequest request) throws ServletException { Map response = new HashMap(); try { MultipartParser parser = new MultipartParser(request, SIZE); Part part = null; while ((part = parser.readNextPart()) != null) { if (part.getName().equals("data")) { FilePart image = (FilePart) part; InputStream is = image.getInputStream(); BufferedReader reader = new BufferedReader( new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } reader.close(); is.close(); response.put("data", sb.toString()); } else if (part.getName().equals("device")) { ParamPart pp = (ParamPart) part; response.put("device", pp.getStringValue()); } }// while } catch (Exception e) { throw new ServletException(e); } return response; } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Map parts = getParts(request); String device = parts.get("device"); String data = parts.get("data"); if (device == null || data == null) throw new ServletException("insufficient data"); try { Connection conn = DBConnection.getDbConnection(); PreparedStatement stmt = conn.prepareStatement("INSERT INTO dataentries (date,device,data) VALUES (now(), ?,?)"); stmt.setString(1, device); stmt.setString(2, data); stmt.execute(); stmt.close(); conn.close(); } catch (Exception e) { throw new ServletException(e); } } }