Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.support.controllers;import in.shop2020.model.v1.catalog.HsItem;import in.shop2020.support.utils.ReportsUtils;import in.shop2020.thrift.clients.CatalogClient;import java.io.File;import java.io.FileInputStream;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.commons.io.FileUtils;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;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.slf4j.Logger;import org.slf4j.LoggerFactory;import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")@InterceptorRefs({@InterceptorRef("defaultStack"),@InterceptorRef("login")})@Results({@Result(name="authfail", type="redirectAction", params = {"actionName" , "reports"})})public class HsListingController extends ActionSupport implements ServletRequestAware {private HttpServletRequest request;private HttpSession session;private static Logger logger = LoggerFactory.getLogger(HsListingController.class);private File listingDataFile;private String listingDataFileName;private String errorMsg = "";private Long rowId = 0L;private static final int HS_ITEM_ID_INDEX = 0;private static final int ITEM_ID_INDEX = 1;private static final int HS_PRODUCT_ID_INDEX = 2;private static final int LISTING_PRICE_INDEX = 3;private static final int DEFAULT_WH_ID_INDEX = 4;public String index() {if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), "/hs-dashboard"))return "authfail";checkForErrors();return "authsuccess";}public String create(){File fileToCreate = null;listingDataFileName = "ListingSheet_HomeShop18_"+(new Date().toString());try {fileToCreate = new File("/tmp/", this.listingDataFileName);FileUtils.copyFile(this.listingDataFile, fileToCreate);} catch (Exception e) {logger.error("Error while writing order data file to the local file system for Homeshop18", e);addActionError("Error while writing order data file to the local file system");}if(checkForErrors())return "authsuccess";Workbook wb = null;try {wb = new HSSFWorkbook(new FileInputStream(fileToCreate));} catch (Exception e) {logger.error("Unable to open the File for Order Creation for Homeshop18 ", e);setErrorMsg(getErrorMsg() + "Error in opening File for Order creation");addActionError("Unable to open the File for Order creation");}if(checkForErrors())return "authsuccess";Sheet sheet = wb.getSheetAt(0);Row firstRow = sheet.getRow(0);in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = null;try {catalogClient = new CatalogClient().getClient();}catch (Exception e) {logger.error(e + "\n" + e.getMessage() + e.getCause());setErrorMsg(getErrorMsg() + "<br/>Unable to Initialize Catalog Client ");addActionError("Unable to Initialize Catalog Client ");}List<HsItem> hsItemList = new ArrayList<HsItem>();long time = System.currentTimeMillis();for (Row row : sheet) {rowId++;if(row.equals(firstRow))continue;try {row.getCell(HS_ITEM_ID_INDEX).setCellType(Cell.CELL_TYPE_STRING);row.getCell(HS_PRODUCT_ID_INDEX).setCellType(Cell.CELL_TYPE_STRING);HsItem hsItem = new HsItem();hsItem.setAddedBy(session.getAttribute(ReportsUtils.USER_EMAIL).toString());hsItem.setAddedTimestamp(time);hsItem.setDefaultWarehouseId((long)row.getCell(DEFAULT_WH_ID_INDEX).getNumericCellValue());hsItem.setHsItemId(row.getCell(HS_ITEM_ID_INDEX).getStringCellValue());hsItem.setHsProductId(row.getCell(HS_PRODUCT_ID_INDEX).getStringCellValue());hsItem.setItemId((long)row.getCell(ITEM_ID_INDEX).getNumericCellValue());hsItem.setListingPrice((long)row.getCell(LISTING_PRICE_INDEX).getNumericCellValue());hsItemList.add(hsItem);if(!catalogClient.isAlive()){catalogClient = new CatalogClient().getClient();}if(hsItemList.size()>=500){catalogClient.addHsItem(hsItemList);hsItemList = new ArrayList<HsItem>();}}catch (Exception e) {logger.error(e + "\n" + e.getMessage() + e.getCause());setErrorMsg(getErrorMsg() + "<br/>Error in row number " + rowId);addActionError("Error in row number " + rowId);}}if(errorMsg.isEmpty()) {setErrorMsg("Sucessfully uploaded listings");}return "authsuccess";}private boolean checkForErrors(){Collection<String> actionErrors = getActionErrors();if(actionErrors != null && !actionErrors.isEmpty()){for (String str : actionErrors) {errorMsg += "<BR/>" + str;}return true;}return false;}@Overridepublic void setServletRequest(HttpServletRequest request) {this.request = request;this.session = request.getSession();}public File getListingDataFile() {return listingDataFile;}public void setListingDataFile(File listingDataFile) {this.listingDataFile = listingDataFile;}public String getListingDataFileName() {return listingDataFileName;}public void setListingDataFileName(String listingDataFileName) {this.listingDataFileName = listingDataFileName;}public String getErrorMsg() {return errorMsg;}public void setErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}public Long getRowId() {return rowId;}public void setRowId(Long rowId) {this.rowId = rowId;}}