Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package in.shop2020.support.controllers;

import in.shop2020.model.v1.catalog.CatalogService;
import in.shop2020.model.v1.catalog.EbayItem;
import in.shop2020.support.utils.ReportsUtils;
import in.shop2020.thrift.clients.CatalogClient;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;

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.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 EbaySubsidyUploaderController extends ActionSupport implements ServletRequestAware {
        
        private static Logger logger = LoggerFactory.getLogger(EbaySubsidyUploaderController.class);
        
        private static final int LISTING_INDEX=0;
        private static final int SUBSIDY_INDEX=1;
        private HttpServletRequest request;
    private HttpSession session;
    
    private String errorMsg = "";
    
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");

    private File subsidyFile;
    
        public String index() {
        if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), "/ebay-dashboard"))
            return "authfail";
        return "authsuccess";
    }
        
        public String create() throws IOException {
                FileUtils.copyFile(subsidyFile, new File("/tmp/subsidy_file " + sdf.format(new Date()) + ".xls"));
                Workbook wb = new HSSFWorkbook(new FileInputStream(subsidyFile));
                
                int totalNumRows = 0;
            int successfullyProcessedNumRows = 0;
            for (Row row : wb.getSheetAt(0)) {
                String key = "";
                try {
                    totalNumRows++;
                    if(totalNumRows==1) {
                        continue;
                    }
                    row.getCell(LISTING_INDEX).setCellType(Cell.CELL_TYPE_STRING);
                String listingId = row.getCell(LISTING_INDEX).getStringCellValue();
                Double subsidy = row.getCell(SUBSIDY_INDEX).getNumericCellValue();
                CatalogService.Client catalogClient = new CatalogClient().getClient();
                EbayItem ebayItem = catalogClient.getEbayItem(listingId);
                ebayItem.setSubsidy(subsidy);
                catalogClient.updateEbayItem(ebayItem);

                successfullyProcessedNumRows++;
                 } catch (Exception e) {
                     logger.error(e + "\n" + e.getMessage() + e.getCause());
                     setErrorMsg(getErrorMsg() + "</br>Error in row number " + totalNumRows);
                     addActionError("Error in row number " + totalNumRows);
                 }
            }
            if(errorMsg.isEmpty()) {
                setErrorMsg("Sucessfully uploaded subsidy");
            }
            return "authsuccess";
        }
        
        public String getErrorMsg() {
                return errorMsg;
        }

        public void setErrorMsg(String errorMsg) {
                this.errorMsg = errorMsg;
        }
        
        public File getSubsidyFile() {
                return subsidyFile;
        }

        public void setSubsidyFile(File subsidyFile) {
                this.subsidyFile = subsidyFile;
        }

        @Override
        public void setServletRequest(HttpServletRequest request) {
                this.request = request;
        this.session = request.getSession();
        }

}