Rev 5068 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.support.controllers;import in.shop2020.model.v1.order.OrderStatus;import in.shop2020.model.v1.order.TransactionServiceException;import in.shop2020.thrift.clients.TransactionClient;import java.io.IOException;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import org.apache.struts2.rest.DefaultHttpHeaders;import org.apache.struts2.rest.HttpHeaders;import org.apache.thrift.TException;import org.apache.thrift.transport.TTransportException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.opensymphony.xwork2.ValidationAwareSupport;public class OrderMonitorController extends ValidationAwareSupport implements ServletRequestAware, ServletResponseAware {private static Logger logger = LoggerFactory.getLogger(ProductNotificationsController.class);private final DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");private HttpServletRequest request;private HttpServletResponse response;private long startTimestamp, endTimestamp;private Map<String, Long> orderStatusDistribution;public String index() {Date startDate, endDate;try {if (request.getParameter("start") != null && request.getParameter("end") != null) {startDate = dateFormat.parse(request.getParameter("start"));endDate = dateFormat.parse(request.getParameter("end"));} else {startDate = new Date();startDate.setHours(0);startDate.setMinutes(0);startDate.setSeconds(0);endDate = new Date();}startTimestamp = startDate.getTime();endTimestamp = endDate.getTime();logger.info("Start: " + startDate + "\tEnd: " + endDate);TransactionClient tsc = new TransactionClient();in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();Map<Long, Long> orderDistribution = new HashMap<Long, Long>();orderDistribution.putAll(transactionClient.getStatusDistributionOfOrders(startDate.getTime(), endDate.getTime()));logger.info(orderDistribution.toString());orderStatusDistribution = new HashMap<String, Long>();for (long orderStatusId: orderDistribution.keySet()) {String statusName = OrderStatus.findByValue((int)orderStatusId).name();long count = orderDistribution.get(orderStatusId);logger.info("\t" + orderStatusId + " " + statusName + " " + count);orderStatusDistribution.put(statusName, count);}logger.info(orderStatusDistribution.toString());} catch (ParseException e) {logger.error(e.getStackTrace().toString());addActionError("Please enter valid start and end date");} catch (TTransportException e) {logger.error(e.getStackTrace().toString());addActionError(e.getMessage());} catch (TransactionServiceException e) {logger.error(e.getStackTrace().toString());addActionError(e.getMessage());} catch (TException e) {logger.error(e.getStackTrace().toString());addActionError(e.getMessage());}return "index";}public HttpHeaders getOrderIds() {long status = (long)OrderStatus.valueOf(request.getParameter("status")).getValue();String[] timestamps = request.getParameter("timestamps").split("-");TransactionClient tsc;try {tsc = new TransactionClient();in.shop2020.model.v1.order.TransactionService.Client transactionClient = tsc.getClient();List<Long> orderIds = transactionClient.getOrderIdsForStatus(status, Long.parseLong(timestamps[0]), Long.parseLong(timestamps[1]));response.setContentType("text/comma-separated-values");response.setHeader("Content-disposition", "inline; filename=OrderIds-" + request.getParameter("status") + ".csv");StringBuilder sb = new StringBuilder();for (long orderId: orderIds) {sb.append(Long.toString(orderId));sb.append("\n");}ServletOutputStream sos = response.getOutputStream();sos.write(sb.toString().getBytes());sos.flush();} catch (TTransportException e) {logger.error("", e);} catch (NumberFormatException e) {logger.error("", e);} catch (TransactionServiceException e) {logger.error("", e);} catch (TException e) {logger.error("", e);} catch (IOException e) {logger.error("", e);}return new DefaultHttpHeaders();}public Map<String, Long> getOrderStatusDistribution() {return this.orderStatusDistribution;}public String getPath() {return this.request.getServletPath();}public String getStartEndTimestamp() {return "" + startTimestamp + "-" + endTimestamp;}@Overridepublic void setServletRequest(HttpServletRequest request) {this.request = request;}@Overridepublic void setServletResponse(HttpServletResponse response) {this.response = response;}}