Rev 12313 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.support.controllers;import in.shop2020.model.v1.catalog.CatalogService.Client;import in.shop2020.model.v1.catalog.CompetitorPricing;import in.shop2020.model.v1.catalog.Item;import in.shop2020.support.utils.ReportsUtils;import in.shop2020.thrift.clients.CatalogClient;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.HashMap;import java.util.List;import java.util.Map;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.commons.io.FileUtils;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;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.apache.thrift.TException;import org.apache.thrift.transport.TTransportException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.opensymphony.xwork2.ValidationAwareSupport;@SuppressWarnings({"unused","deprecation"})@InterceptorRefs({@InterceptorRef("defaultStack"),@InterceptorRef("login")})@Results({@Result(name = "redirect", location = "${url}", type = "redirect"),@Result(name="authsuccess", type="redirectAction", params = {"actionName" , "reports"})})public class CompetitionScrapingController extends ValidationAwareSupport implements ServletRequestAware ,ServletResponseAware, ServletContextAware{/****/private static Logger logger = LoggerFactory.getLogger(CompetitionScrapingController.class);private HttpServletRequest request;private HttpServletResponse response;private HttpSession session;private ServletContext context;private static final long serialVersionUID = -4056242323967836986L;private File file;private List<CompetitorPricing> previousUploads;private String[] snapdeal;private String[] flipkart;private String[] amazon;private String[] itemId;private String requestId;private List<CompetitorPricing> data;public String processItems() throws TException{long uploadId = getTimeInMilliseconds();String userEmail = getUserEmail();Map<Long,CompetitorPricing> itemScrapingMap = new HashMap<Long,CompetitorPricing>();for(int i=0;i<itemId.length;i++){CompetitorPricing cp = new CompetitorPricing();cp.setItem_id(Long.valueOf(itemId[i]));cp.setUploadId(uploadId);cp.setUserEmail(userEmail);cp.setIsSnapdeal(Boolean.valueOf(snapdeal[i]));cp.setIsFlipkart(Boolean.valueOf(flipkart[i]));cp.setIsAmazon(Boolean.valueOf(amazon[i]));itemScrapingMap.put(cp.getItem_id(), cp);}Client cc = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();cc.addCompetitorScraping(itemScrapingMap);return getPreviousData();}public String index() throws TException{if (!ReportsUtils.canAccessReport((Long) session.getAttribute(ReportsUtils.ROLE),request.getServletPath())) {return "authfail";}return "index";}public String getUploadData() throws NumberFormatException, TException{Client cc = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();data = cc.getUploadResultById(Long.valueOf(this.requestId));return "show";}public String getPreviousData() throws TException{Client cc = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();setPreviousUploads(cc.getPreviousCompetitorScraping(10));return "previous";}public void downloadReport() throws NumberFormatException, TException, IOException{File file = new File("/tmp/"+this.requestId+".xls");HSSFWorkbook hwb=new HSSFWorkbook();HSSFSheet sheet = hwb.createSheet(this.requestId);HSSFRow rowhead= sheet.createRow((short)0);rowhead.createCell((short) 0).setCellValue("ITEM-ID");rowhead.createCell((short) 1).setCellValue("PRODUCT");rowhead.createCell((short) 2).setCellValue("Our Snapdeal SP");rowhead.createCell((short) 3).setCellValue("Our Snapdeal Offer Price");rowhead.createCell((short) 4).setCellValue("Lowest Snapdeal Seller");rowhead.createCell((short) 5).setCellValue("Lowest Snapdeal SP");rowhead.createCell((short) 6).setCellValue("Lowest Offer Price");rowhead.createCell((short) 7).setCellValue("Our Snapdeal Inventory");rowhead.createCell((short) 8).setCellValue("Lowest Seller Snapdeal Inventory");rowhead.createCell((short) 9).setCellValue("Our Flipkart SP");rowhead.createCell((short) 10).setCellValue("Lowest Seller Flipkart");rowhead.createCell((short) 11).setCellValue("Lowest Flipkart SP");rowhead.createCell((short) 12).setCellValue("Our Flipkart Inventory");rowhead.createCell((short) 13).setCellValue("Our Price");rowhead.createCell((short) 14).setCellValue("Lowest Amazon Seller");rowhead.createCell((short) 15).setCellValue("Lowest Amazon Price");Client cc = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();data = cc.getUploadResultById(Long.valueOf(this.requestId));int iterator=1;for (CompetitorPricing item : data){HSSFRow row = sheet.createRow((short)iterator);row.createCell((short) 0).setCellValue(item.getItem_id());row.createCell((short) 1).setCellValue(item.getProductName());row.createCell((short) 2).setCellValue(item.getOurSnapdealPrice());row.createCell((short) 3).setCellValue(item.getOurSnapdealOfferPrice());row.createCell((short) 4).setCellValue(item.getLowestSnapdealSeller());row.createCell((short) 5).setCellValue(item.getLowestSnapdealPrice());row.createCell((short) 6).setCellValue(item.getLowestSnapdealOfferPrice());row.createCell((short) 7).setCellValue(item.getOurSnapdealInventory());row.createCell((short) 8).setCellValue(item.getLowestSnapdealSellerInventory());row.createCell((short) 9).setCellValue(item.getOurFlipkartPrice());row.createCell((short) 10).setCellValue(item.getLowestFlipkartSeller());row.createCell((short) 11).setCellValue(item.getLowestFlipkartPrice());row.createCell((short) 12).setCellValue(item.getOurFlipkartInventory());row.createCell((short) 13).setCellValue(item.getOurAmazonPrice());row.createCell((short) 14).setCellValue(item.getLowestAmazonSeller());row.createCell((short) 15).setCellValue(item.getLowestAmazonPrice());iterator++;}FileOutputStream fileOut = null;try {fileOut = new FileOutputStream(file);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {hwb.write(fileOut);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {fileOut.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}byte[] buffer = new byte[(int)file.length()];InputStream input = null;try {int totalBytesRead = 0;input = new BufferedInputStream(new FileInputStream(file));while(totalBytesRead < buffer.length){int bytesRemaining = buffer.length - totalBytesRead;int bytesRead = input.read(buffer, totalBytesRead, bytesRemaining);if (bytesRead > 0){totalBytesRead = totalBytesRead + bytesRead;}}}finally {input.close();file.delete();}response.setHeader("Content-Disposition", "attachment; filename="+this.requestId+".xls");response.setContentType("application/octet-stream");ServletOutputStream sos;try {sos = response.getOutputStream();sos.write(buffer);sos.flush();} catch (IOException e) {System.out.println("Unable to stream the manifest file");}}public String uploadSheet(){return "upload";}public String addItems(){return "addItem";}public String uploadBulkFile() throws IOException, TException{long uploadId = getTimeInMilliseconds();String userEmail = getUserEmail();File fileToCreate = new File("/temp-uploads", "competition-scraping-"+String.valueOf(uploadId)+".xls");FileUtils.copyFile(this.file, fileToCreate);FileInputStream iFile = new FileInputStream(new File(file.getAbsolutePath()));HSSFWorkbook workbook = new HSSFWorkbook(iFile);HSSFSheet sheet = workbook.getSheetAt(0);Map<Long,CompetitorPricing> itemScrapingMap = new HashMap<Long,CompetitorPricing>();for (int iterator=(sheet.getFirstRowNum()+1);iterator<=sheet.getLastRowNum();iterator++){if (sheet.getLastRowNum()-1>100){logger.info("Greater than 100, returning");addActionError("Sku's cant be greater than 100");return "redirect";}CompetitorPricing cp = new CompetitorPricing();if (checkEmptyString(sheet.getRow(iterator).getCell(0))){continue;}else {cp.setItem_id((long) sheet.getRow(iterator).getCell(0).getNumericCellValue());}if (!checkEmptyString(sheet.getRow(iterator).getCell(1))){if ((long)sheet.getRow(iterator).getCell(1).getNumericCellValue()==1){cp.setIsSnapdeal(true);}}if (!checkEmptyString(sheet.getRow(iterator).getCell(2))){if ((long)sheet.getRow(iterator).getCell(2).getNumericCellValue()==1){cp.setIsFlipkart(true);}}if (!checkEmptyString(sheet.getRow(iterator).getCell(3))){if ((long)sheet.getRow(iterator).getCell(3).getNumericCellValue()==1){cp.setIsAmazon(true);}}cp.setUploadId(uploadId);cp.setUserEmail(userEmail);itemScrapingMap.put(cp.getItem_id(), cp);}Client cc = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();cc.addCompetitorScraping(itemScrapingMap);return getPreviousData();}public boolean checkEmptyString(Cell cell){if (cell==null){return true;}return false;}public long getTimeInMilliseconds(){Calendar cal=GregorianCalendar.getInstance();return cal.getTimeInMillis();}public String getTimestamp(long timestamp){return new java.util.Date(timestamp).toLocaleString();}public String getUserEmail(){logger.info(session.getAttribute(ReportsUtils.USER_NAME).toString());logger.info(session.getAttribute(ReportsUtils.USER_EMAIL).toString());return session.getAttribute(ReportsUtils.USER_EMAIL).toString();}public File getFile() {return file;}public void setFile(File file) {this.file = file;}public void setPreviousUploads(List<CompetitorPricing> previousUploads) {this.previousUploads = previousUploads;}public List<CompetitorPricing> getPreviousUploads() {return previousUploads;}public HttpServletRequest getRequest() {logger.info("set request"+request.toString());return request;}public void setRequest(HttpServletRequest request) {this.request = request;}public HttpServletResponse getResponse() {return response;}public void setResponse(HttpServletResponse response) {this.response = response;}public HttpSession getSession() {return session;}public void setSession(HttpSession session) {this.session = session;}public ServletContext getContext() {return context;}public void setContext(ServletContext context) {this.context = context;}public void setServletRequest(HttpServletRequest req) {this.request = req;this.session = req.getSession();}public void setServletContext(ServletContext arg0) {// TODO Auto-generated method stub}public void setServletResponse(HttpServletResponse response) {this.response = response;}public void setSnapdeal(String[] snapdeal) {this.snapdeal = snapdeal;}public String[] getSnapdeal() {return snapdeal;}public void setFlipkart(String[] flipkart) {this.flipkart = flipkart;}public String[] getFlipkart() {return flipkart;}public void setAmazon(String[] amazon) {this.amazon = amazon;}public String[] getAmazon() {return amazon;}public void setItemId(String[] itemId) {this.itemId = itemId;}public String[] getItemId() {return itemId;}public List<CompetitorPricing> getData() {return data;}public void setData(List<CompetitorPricing> data) {this.data = data;}public String getRequestId() {return requestId;}public void setRequestId(String requestId) {this.requestId = requestId;}}