private void handleHttpRequest(ChannelHandlerContext ctx, HttpRequest req) throws Exception { if (req.method() != HttpMethod.GET) { sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HttpVersion.HTTP_1_0, HttpResponseStatus.FORBIDDEN)); ctx.close(); return; } else { ByteBuf content = null; SentimentAndCensor twitterAnalysis = new SentimentAndCensor(); int req_length = req.uri().length(); String params = req.uri().substring(1, req_length); // Response to health check if (params.equals("heartbeat")) { content = Unpooled.wrappedBuffer("Health Check".getBytes()); } else if (params.contains("key") && params.contains("message")) { TimeZone timeZone = TimeZone.getTimeZone("GMT-4:00"); Calendar calendar = Calendar.getInstance(timeZone); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); simpleDateFormat.setTimeZone(timeZone); String data_string = simpleDateFormat.format(calendar.getTime()); // Retrive // the // time // of // local // timezone. QueryStringDecoder queryStringDecoder = new QueryStringDecoder(req.uri()); String key = queryStringDecoder.parameters().get("key").get(0); String message = queryStringDecoder.parameters().get("message").get(0); Decoder decoder = new Decoder(); String execute_data = decoder.Response(key, message); String line1 = teamId + "," + AWS_Account_Id + "\n"; String result_line = line1 + data_string + "\n" + execute_data + "\n"; content = Unpooled.wrappedBuffer(result_line.getBytes()); } else if (params.contains("userid") && params.contains("tweet_time")) { // store two parameters into key(userid) and value(tweet_time) QueryStringDecoder queryStringDecoder = new QueryStringDecoder(req.uri()); String key = queryStringDecoder.parameters().get("userid").get(0); String message = queryStringDecoder.parameters().get("tweet_time").get(0); // String decoder_result = twitterAnalysis.Response(key, // message); // result store the response string ArrayList<String> resultSet = selectFromSQLq2(key, message); String result = teamId + "," + AWS_Account_Id; for (int i = 0; i < resultSet.size(); i++) { result = result + "\n" + resultSet.get(i); } result = result.trim() + "\n"; content = Unpooled.wrappedBuffer(result.getBytes()); } else if (params.contains("start_date") && params.contains("end_date") && params.contains("userid") && params.contains("n")) { QueryStringDecoder queryStringDecoder = new QueryStringDecoder(req.uri()); String start_date = queryStringDecoder.parameters().get("start_date").get(0); String end_date = queryStringDecoder.parameters().get("end_date").get(0); String userid = queryStringDecoder.parameters().get("userid").get(0); String n = queryStringDecoder.parameters().get("n").get(0); ArrayList<String> resultPositve = selectFromSQLq3_p(start_date, end_date, userid, n); ArrayList<String> resultNegetive = selectFromSQLq3_n(start_date, end_date, userid, n); String result = teamId + "," + AWS_Account_Id; result = result + "\n" + "Positive Tweets"; for (int i = 0; i < resultPositve.size(); i++) { result = result + "\n" + resultPositve.get(i); } result = result + "\n\n" + "Negative Tweets"; for (int i = 0; i < resultNegetive.size(); i++) { result = result + "\n" + resultNegetive.get(i); } result = result.trim() + "\n"; //System.out.println(result); content = Unpooled.wrappedBuffer(result.getBytes()); } else if (params.contains("hashtag") && params.contains("n")) { QueryStringDecoder queryStringDecoder = new QueryStringDecoder(req.uri()); String hashtag = queryStringDecoder.parameters().get("hashtag").get(0); String n = queryStringDecoder.parameters().get("n").get(0); ArrayList<String> resultSet = selectFromSQLq4(hashtag, n); String result = teamId + "," + AWS_Account_Id; for (int i = 0; i < resultSet.size(); i++) { result = result + "\n" + resultSet.get(i); } result = result.trim() + "\n"; content = Unpooled.wrappedBuffer(result.getBytes()); }else if(params.contains("userid_min") && params.contains("userid_max")){ QueryStringDecoder queryStringDecoder = new QueryStringDecoder(req.uri()); String min = queryStringDecoder.parameters().get("userid_min").get(0); String max = queryStringDecoder.parameters().get("userid_max").get(0); // ArrayList<Integer> resultSet = selectFromSQLq5(max, min); int count = selectFromSQLq5(min, max); String result = teamId + "," + AWS_Account_Id + "\n"; // int count = 0; // for (int i = 0; i < resultSet.size(); i++) { // count += resultSet.get(i); // } result += count; result = result.trim() + "\n"; content = Unpooled.wrappedBuffer(result.getBytes()); } else { sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HttpVersion.HTTP_1_0, HttpResponseStatus.FORBIDDEN)); ctx.close(); return; } FullHttpResponse res = new DefaultFullHttpResponse(HttpVersion.HTTP_1_0, HttpResponseStatus.OK, content); res.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/html; charset=UTF-8"); sendHttpResponse(ctx, req, res); } }