Rev 4817 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.support.controllers;import in.shop2020.support.services.RegisteredUsersGenerator;import in.shop2020.support.utils.ReportsUtils;import in.shop2020.thrift.clients.UserClient;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.OutputStream;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.TimeZone;import javax.servlet.ServletContext;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.struts2.convention.annotation.InterceptorRef;import org.apache.struts2.convention.annotation.InterceptorRefs;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.convention.annotation.Results;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import org.apache.struts2.util.ServletContextAware;import org.slf4j.Logger;import org.slf4j.LoggerFactory;@InterceptorRefs({@InterceptorRef("defaultStack"),@InterceptorRef("login")})@Results({@Result(name="authfail", type="redirectAction", params = {"actionName" , "reports"})})public class RegisteredUsersController implements ServletRequestAware, ServletResponseAware, ServletContextAware {private static Logger logger = LoggerFactory.getLogger(RegisteredUsersController.class);private HttpServletRequest request;private HttpSession session;private HttpServletResponse response;private ServletContext context;private final String authsuccess = "authsuccess";private String message = "";private Date endDate;private Date startDate;private String errorMsg;public RegisteredUsersController() {}public String index() {if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getServletPath())) {return "authfail";}return authsuccess;}// Handles the POST request (Form Submission)public String create() {String startDateStr = request.getParameter("startDate");String endDateStr = request.getParameter("endDate");DateFormat df = new SimpleDateFormat("MM/dd/yyyy");df.setTimeZone(TimeZone.getTimeZone("IST"));try {startDate = df.parse(startDateStr);endDate = df.parse(endDateStr);} catch (ParseException pe) {errorMsg = "Please enter start and end dates in format MM/dd/yyyy";return authsuccess;}UserClient usc;in.shop2020.model.v1.user.UserContextService.Client uClient;List<String> emails = new ArrayList<String>();try {usc = new UserClient();uClient = usc.getClient();emails = uClient.getUserEmails(startDate.getTime(), endDate.getTime());} catch (Exception e) {logger.error("Error initializing connection to user or order service", e);}// Preparing XLS file for outputresponse.setContentType("application/vnd.ms-excel");response.setHeader("Content-disposition", "attachment; filename=email-addresses.xls");ServletOutputStream sos;try {StringBuilder builder = new StringBuilder();for (String email: emails) {builder.append(email);builder.append("\n");}sos = response.getOutputStream();sos.write(builder.toString().getBytes());sos.flush();sos.close();} catch (IOException e) {logger.error("Error streaming registered users report");}return authsuccess;}public String getMessage() {return message;}@Overridepublic void setServletRequest(HttpServletRequest req) {this.request = req;this.session = req.getSession();}@Overridepublic void setServletResponse(HttpServletResponse res) {this.response = res;}@Overridepublic void setServletContext(ServletContext context) {this.context = context;}public String getServletContextPath() {return context.getContextPath();}public void setStartDate(Date startDate) {this.startDate = startDate;}public String getErrorMsg() {return errorMsg;}public void setErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}}