/** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("UTF-8"); // PrintWriter out = response.getWriter(); OutputStream outStream = null; try { long start = 0; long end = 0; String blockid = null; try { if (request.getParameter(AllConstants.api_entryPoints.request_api_start) != null) { start = Long.parseLong(request.getParameter(AllConstants.api_entryPoints.request_api_start)); } if (request.getParameter(AllConstants.api_entryPoints.request_api_end) != null) { end = Long.parseLong(request.getParameter(AllConstants.api_entryPoints.request_api_end)); } if (request.getParameter(AllConstants.api_entryPoints.request_api_blockid) != null) { blockid = request.getParameter(AllConstants.api_entryPoints.request_api_blockid); if (blockid.length() < 5) {} } } catch (Exception ex) { ex.printStackTrace(); } String loginID = "leoncool"; if (request.getParameter(AllConstants.api_entryPoints.request_api_loginid) != null) { loginID = request.getParameter(AllConstants.api_entryPoints.request_api_loginid); } UserDAO userDao = new UserDAO(); if (!userDao.existLogin(loginID)) { ReturnParser.outputErrorException( response, AllConstants.ErrorDictionary.Unauthorized_Access, null, null); return; } SubjectDAO subjDao = new SubjectDAO(); Subject subject = (Subject) subjDao.findHealthSubject(loginID); // Retreive if (subject == null) { ReturnParser.outputErrorException( response, AllConstants.ErrorDictionary.SYSTEM_ERROR_NO_DEFAULT_HEALTH_SUBJECT, null, null); return; } String streamID = ServerUtil.getHealthStreamID(ServletPath(request)); DatastreamDAO dstreamDao = new DatastreamDAO(); DBtoJsonUtil dbtoJUtil = new DBtoJsonUtil(); Datastream datastream = dstreamDao.getDatastream(streamID, true, false); if (blockid != null && dstreamDao.getDatastreamBlock(blockid) == null) { ReturnParser.outputErrorException( response, AllConstants.ErrorDictionary.Invalid_Datablock_ID, null, blockid); return; } if (datastream == null) { ReturnParser.outputErrorException( response, AllConstants.ErrorDictionary.Unknown_StreamID, null, streamID); return; } HashMap<String, String> mapUnits = new HashMap<String, String>(); HashMap<String, String> allUnits = new HashMap<String, String>(); if (request.getParameter(AllConstants.api_entryPoints.request_api_unit_id) != null && request.getParameter(AllConstants.api_entryPoints.request_api_unit_id).length() > 0) { String[] unitids = request.getParameter(AllConstants.api_entryPoints.request_api_unit_id).split(","); System.out.println("unitids:size:" + unitids.length); allUnits = dbtoJUtil.ToDatastreamUnitsMap(datastream); System.out.println("units size:" + datastream.getDatastreamUnitsList().size()); for (String id : unitids) { if (id.length() < 3) { // error return; } else { if (allUnits.get(id) == null) { // error System.out.println("cannot find id" + id + ""); return; } else { mapUnits.put(id, id); } } } } System.out.println("mapUnits.size():" + mapUnits.size() + ", " + mapUnits); Gson gson = new Gson(); int debug = 1; if (debug == 1) { System.out.println("debuging.....going to hbase"); HBaseDatapointDAO diDao = new HBaseDatapointDAO(); System.out.println("datastreamID:" + datastream.getStreamId()); HBaseDataImport hbaseexport = null; try { hbaseexport = diDao.exportDatapoints(streamID, start, end, blockid, mapUnits, null, null); } catch (ErrorCodeException ex) { ex.printStackTrace(); ReturnParser.outputErrorException( response, AllConstants.ErrorDictionary.Internal_Fault, null, null); return; } catch (Throwable ex) { ex.printStackTrace(); ReturnParser.outputErrorException( response, AllConstants.ErrorDictionary.Internal_Fault, null, null); return; } if (hbaseexport != null) { hbaseexport.setUnits_list( dbtoJUtil.convertDatastream(datastream, mapUnits).getUnits_list()); } else { hbaseexport = new HBaseDataImport(); hbaseexport.setBlock_id(blockid); hbaseexport.setData_points(new ArrayList<JsonDataPoints>()); hbaseexport.setDatastream_id(streamID); hbaseexport.setUnits_list( dbtoJUtil.convertDatastream(datastream, mapUnits).getUnits_list()); // hbaseexport.setDeviceid(streamID); } outStream = null; boolean iftoZip = true; String encodings = request.getHeader("Accept-Encoding"); if (encodings != null && encodings.indexOf("gzip") != -1 && iftoZip == true) { // Go with GZIP response.setHeader("Content-Encoding", "gzip"); outStream = new GZIPOutputStream(response.getOutputStream()); } else { outStream = response.getOutputStream(); } response.setHeader("Vary", "Accept-Encoding"); Date timerStart = new Date(); JsonElement je = gson.toJsonTree(hbaseexport); JsonObject jo = new JsonObject(); jo.addProperty(AllConstants.ProgramConts.result, AllConstants.ProgramConts.succeed); jo.add("datapoints_list", je); OutputStreamWriter osWriter = new OutputStreamWriter(outStream); JsonWriter jwriter = new JsonWriter(osWriter); String callbackStr = null; if (request.getParameter(AllConstants.api_entryPoints.requset_api_callback) != null) { callbackStr = request.getParameter(AllConstants.api_entryPoints.requset_api_callback); osWriter.append(callbackStr + "("); } gson.toJson(jo, jwriter); if (callbackStr != null) { osWriter.append(");"); } jwriter.close(); Date timerEnd = new Date(); System.out.println( "Json Time takes:" + (timerEnd.getTime() - timerStart.getTime()) / (1000.00) + "seconds"); osWriter.close(); outStream.close(); } else { String encodings = request.getHeader("Accept-Encoding"); boolean iftoZip = true; if (encodings != null && encodings.indexOf("gzip") != -1 && iftoZip == true) { // Go with GZIP response.setHeader("Content-Encoding", "gzip"); outStream = new GZIPOutputStream(response.getOutputStream()); } else { outStream = response.getOutputStream(); } response.setHeader("Vary", "Accept-Encoding"); File inputFile = new File("E:/IC_Dropbox/Dropbox/java/healthbook/sample_data/download.txt"); // File inputFile = new // File("F:/Dropbox/Dropbox/java/healthbook/sample_data/download.txt"); BufferedReader reader = new BufferedReader(new FileReader(inputFile)); String inputLine; while ((inputLine = reader.readLine()) != null) { outStream.write(inputLine.getBytes()); // out.print(inputLine); } outStream.close(); } } catch (Exception ex) { ex.printStackTrace(); ReturnParser.outputErrorException( response, AllConstants.ErrorDictionary.Internal_Fault, null, null); return; } finally { System.out.println("running finally"); // out.close(); if (outStream != null) { outStream.close(); } } }