Subversion Repositories SmartDukaan

Rev

Rev 11238 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.serving.controllers;

import in.shop2020.config.ConfigException;
import in.shop2020.model.v1.catalog.Banner;
import in.shop2020.model.v1.catalog.BannerCongregate;
import in.shop2020.model.v1.catalog.BannerMap;
import in.shop2020.model.v1.catalog.BannerUriMapping;
import in.shop2020.model.v1.catalog.Campaign;
import in.shop2020.model.v1.catalog.CatalogService.Client;
import in.shop2020.model.v1.catalog.BannerType;
import in.shop2020.serving.services.ScpService;
import in.shop2020.thrift.clients.CatalogClient;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.apache.thrift.TException;
import org.apache.thrift.transport.TTransportException;


@SuppressWarnings("serial")

@Results({
        @Result(name = "redirect", location = "${url}", type = "redirect"),
        @Result(name = "newCampaign", location = "campaign-editNew.vm"),
        @Result(name = "campaignEdit", location = "campaignEdit.vm"),
        @Result(name = "newSideBanner", location = "SideBanner-New.vm"),
        @Result(name = "sideBannerEdit", location = "SideBanner-Edit.vm")
})

public class UserImageController extends BaseController {
        private static Logger log = Logger.getLogger(Class.class);
        private File userImage;
        private String filePath;
        private String userImageContentType;
        private String userImageFileName;
        private String url;
        private HttpServletRequest servletRequest;
        private String[] status;
        private String bannerName;
        private String link;
        private String priority;
        private String hasMap;
        private String action;
        private String[] mapLink;
        private String[] mapCoordinates;
        private String[] uri;
        private String id;
        private String newsletterName;
        private String imageName;
        private String campaignId;
        private String fileExtention;
        private String bannerType;
        private String actionType;
        private String[] linkTarget;

        public String create() {
                try {
                        filePath = servletRequest.getSession().getServletContext().getRealPath("/images/banners/");
                        setUrl("/user-image");
                        String imageName = null;
                        Banner antecedent = new Banner();
                        if (StringUtils.isNotEmpty(userImageFileName)) {
                                imageName = getImageName();
                                if (action!=null){
                                        antecedent.setBannerName(action);
                                        antecedent.setBannerType(BannerType.valueOf(actionType));
                                }
                                File fileToCreate = new File(filePath, imageName); 
                                FileUtils.copyFile(this.userImage, fileToCreate);
                                try {
                                        ScpService scp = new ScpService();
                                        scp.scpFile("/var/lib/tomcat6/webapps/ROOT/images/banners/"+imageName, filePath+"/"+imageName);
                                } catch (Exception e) {
                                        log.error("Scp To Servers Failed",e);
                                        addActionError("Image Failed To Upload");
                                        return "redirect";
                                }
                        }
                        else{
                                Client CatalogClient = new CatalogClient().getClient();
                                imageName =CatalogClient.getBannerDetails(action,BannerType.valueOf(actionType)).getImageName();
                                antecedent.setBannerName(action);
                                antecedent.setBannerType(BannerType.valueOf(actionType));
                        }
                        if (StringUtils.isEmpty(link)) {
                                log.info("Empty Link Field");
                                this.link="#";
                        }
                        Banner banner = new Banner();
                        banner.setBannerName(bannerName);
                        banner.setImageName(imageName);
                        banner.setLink(link);
                        banner.setHasMap(Boolean.parseBoolean(hasMap));
                        banner.setPriority(Long.valueOf(priority));
                        banner.setBannerType(BannerType.valueOf(bannerType));
                        List<BannerMap> bannerMaps = new ArrayList<BannerMap>();
                        if(banner.isHasMap()) {
                                for(int i=0;i<mapLink.length;i++){
                                        if(mapLink[i].isEmpty()) {
                                                continue;
                                        }
                                        BannerMap bannerMap = new BannerMap();
                                        bannerMap.setBannerName(bannerName);
                                        bannerMap.setCoordinates(mapCoordinates[i]);
                                        bannerMap.setMapLink(mapLink[i]);
                                        bannerMaps.add(bannerMap);
                                }       
                        }
                        List<BannerUriMapping> bannerUriMappings = new ArrayList<BannerUriMapping>();
                        for (int i=0;i<uri.length;i++){
                                if(uri[i].isEmpty()) {
                                        continue;
                                }
                                BannerUriMapping bannerUriMapping = new BannerUriMapping();
                                bannerUriMapping.setBannerName(bannerName);
                                bannerUriMapping.setUri(uri[i]);
                                bannerUriMapping.setIsActive(Boolean.valueOf(status[i]));
                                bannerUriMapping.setTarget(Boolean.valueOf(linkTarget[i]));
                                bannerUriMappings.add(bannerUriMapping);
                        }
                        BannerCongregate bannerCongregate = new BannerCongregate();
                        bannerCongregate.setBanner(banner);
                        bannerCongregate.setBannerMaps(bannerMaps);
                        bannerCongregate.setBannerUriMappings(bannerUriMappings);
                        bannerCongregate.setAntecedent(antecedent);
                        Client CatalogClient = new CatalogClient().getClient();
                        CatalogClient.addBanner(bannerCongregate);
                } catch (Exception e) {   
                        log.error("Error while uploading/changing map",e);
                        addActionError("Failed To Do Changes");
                        return "redirect";
                }
                addActionMessage("Changes Applied Successfully");
                return "index";
        }

        public String createNewsletter() throws IOException{
                filePath = servletRequest.getSession().getServletContext().getRealPath("/images/campaignImages/");
                setUrl("/user-image!editNewsletter?newsletterName="+this.newsletterName);
                if (StringUtils.isNotEmpty(userImageFileName)) {
                        imageName = getImageName();
                        File fileToCreate = new File(filePath, imageName); 
                        FileUtils.copyFile(this.userImage, fileToCreate);
                        ScpService scp = new ScpService();
                        try {
                                scp.scpFile("/var/lib/tomcat6/webapps/ROOT/images/campaignImages/"+imageName, filePath+"/"+imageName);
                        } catch (ConfigException e) {
                                log.info("Unable to do scp "+e);
                                addActionError("Image Failed To Upload");
                                return "redirect";
                        }
                        Campaign campaign = new Campaign();
                        campaign.setCampaignName(this.newsletterName);
                        campaign.setImageName(imageName);
                        Client CatalogClient;
                        try {
                                CatalogClient = new CatalogClient().getClient();
                                CatalogClient.addCampaign(campaign);
                        } catch (Exception e) {
                                log.info("Unable to add campaign "+e);
                                addActionError("Failed To Do Changes");
                                return "redirect";
                        }
                        addActionMessage("Changes Applied Successfully");
                        return "redirect";
                }
                else{
                        addActionError("Image Missing");
                        return "redirect";
                }
        }

        public String deleteCampaign() {
                setUrl("/user-image!editNewsletter?newsletterName="+this.newsletterName);
                try {
                        Client CatalogClient = new CatalogClient().getClient();
                        CatalogClient.deleteCampaign(Long.valueOf(campaignId));
                        addActionMessage("Image deleted");
                        return "redirect";
                }
                catch (Exception e) {
                        log.info("Unable to delete campaign "+e);
                        addActionError("Unable to delete image");
                        return "redirect";
                }
        }


        public void addBannerUriMapping(List<BannerUriMapping> bannerUriMappings) throws TException{
                Client CatalogClient = new CatalogClient().getClient();
                CatalogClient.addBannerUri(bannerUriMappings);
        }

        public void addBannerMap(List<BannerMap> bannerMaps) throws TException{
                Client CatalogClient = new CatalogClient().getClient();
                CatalogClient.addBannerMap(bannerMaps);
        }

        public List<Banner> getAllBanners() {
                Client CatalogClient = null;
                List<Banner> banners = null;
                try {
                        CatalogClient = new CatalogClient().getClient();
                        banners = CatalogClient.getAllBanners();
                } catch (TTransportException e) {
                        log.info("Unable to fetch all banners "+e);
                } catch (TException ex) {
                        log.info("Unable to fetch all banners "+ex);
                }
                return banners; 
        }

        public String destroy() throws TException {
                Client CatalogClient = new CatalogClient().getClient();
                CatalogClient.deleteBanner(bannerName,BannerType.valueOf(bannerType));
                setUrl("/user-image");
                return "redirect";

        }

        public Banner getUpdates(String bannerType) throws TException {
                Client CatalogClient = null;
                CatalogClient = new CatalogClient().getClient();
                Banner banner = CatalogClient.getBannerDetails(bannerName,BannerType.valueOf(bannerType));
                try{
                        setFileExtention(banner.getImageName().split("[.]")[1]);
                }
                catch (Exception e){
                        log.error("Split image name error "+e);
                }
                return banner;
        } 

        public Banner getUpdates(String name,String bannerType) throws TException {
                Client CatalogClient = null;
                CatalogClient = new CatalogClient().getClient();
                return CatalogClient.getBannerDetails(name,BannerType.valueOf(bannerType));
        } 

        public List<BannerMap> getbannermapdetail(String bannerType) throws TException {
                Client CatalogClient = null;
                CatalogClient = new CatalogClient().getClient();
                return CatalogClient.getBannerMapDetails(bannerName,BannerType.valueOf(bannerType));
        }

        public String getImageName() {
                Calendar cal=GregorianCalendar.getInstance();
                return String.valueOf(cal.getTimeInMillis())+"."+fileExtention;
        }

        public String getTimeInMilliseconds(){
                Calendar cal=GregorianCalendar.getInstance();
                return String.valueOf(cal.getTimeInMillis());
        }

        public List<BannerUriMapping> getUriMapping(String bannerName,BannerType bannerType) throws TException{
                Client CatalogClient = new CatalogClient().getClient();
                return CatalogClient.getUriMapping(bannerName,bannerType);
        }

        public List<BannerUriMapping> getUriMapping(String bannerType) throws TException{
                Client CatalogClient = new CatalogClient().getClient();
                return CatalogClient.getUriMapping(bannerName,BannerType.valueOf(bannerType));
        }

        public List<Campaign> getCampaigns(String campaignName) throws TException{
                Client CatalogClient = new CatalogClient().getClient();
                return CatalogClient.getCampaigns(campaignName);
        }

        public List<String> getAllCampaigns() throws TException{
                Client CatalogClient = new CatalogClient().getClient();
                return CatalogClient.getAllCampaigns();
        }

        public String index() {
                return "index";
        }

        public String show() {
                if (StringUtils.equals(id, "newCampaign")){
                        return "newCampaign";
                }
                if (StringUtils.equals(id, "newSideBanner")){
                        return "newSideBanner";
                }
                if (StringUtils.equals(id, "map-image")){
            return "map-image";
        }
                return "show";
        }

        public String editNewsletter(){
                return "campaignEdit";
        }

        public String editSideBanner(){
                return "sideBannerEdit";
        }

        public String edit() {
                return "edit";
        }


        public String editNew() {
                return "editNew";
        }

        public File getUserImage() {
                return userImage;
        }

        public void setUserImage(File userImage) {
                this.userImage = userImage;
        }

        public String getUserImageContentType() {
                return userImageContentType;
        }

        public void setUserImageContentType(String userImageContentType) {
                this.userImageContentType = userImageContentType;
        }

        public String getUserImageFileName() {
                return userImageFileName;
        }

        public void setUserImageFileName(String userImageFileName) {
                this.userImageFileName = userImageFileName;
        }

        public void setUrl(String url) {
                this.url = url;
        }

        public String getUrl() {
                return url;
        }

        public void setIsActive(String[] isActive) {
                this.status=isActive;
        }

        public String[] getIsActive() {
                return status;
        }


        public void setBannerName(String bannerName) {
                this.bannerName=bannerName;
        }

        public String getBannerName() {
                return bannerName;
        }

        public void setLink(String link) {
                this.link=link;
        }

        public String getLink() {
                return link;
        }

        public void setAction(String action) {
                this.action=action;
        }

        public String getAction() {
                return action;
        }

        public void setPriority(String priority) {
                this.priority=priority;
        }

        public String getPriority() {
                return priority;
        }

        public void setId(String id) {
                this.id = id;
                this.bannerName = id;
        }

        public String[] getMapLink() {
                return mapLink;
        }
        public void setMapLink(String[] mapLink) {
                this.mapLink = mapLink;
        }
        public String[] getMapCoordinates() {
                return mapCoordinates;
        }
        public void setMapCoordinates(String[] mapCoordinates) {
                this.mapCoordinates = mapCoordinates;
        }

        public void setUri(String[] uri) {
                this.uri = uri;
        }

        public String[] getUri() {
                return uri;
        }

        public void setHasMap(String hasMap) {
                this.hasMap=hasMap;
        }

        public String getHasMap() {
                return hasMap;
        }

        public void setNewsletterName(String newsletterName) {
                this.newsletterName = newsletterName;
        }

        public String getNewsletterName() {
                return newsletterName;
        }

        public void setCampaignId(String campaignId) {
                this.campaignId = campaignId;
        }

        public String getCampaignId() {
                return campaignId;
        }

        @Override
        public void setServletRequest(HttpServletRequest servletRequest) {
                this.servletRequest = servletRequest;

        }

        public void setImageName(String imageName) {
                this.imageName = imageName;
        }

        public void setFileExtention(String fileExtention) {
                this.fileExtention = fileExtention;
        }

        public String getFileExtention() {
                return fileExtention;
        }

        public void setBannerType(String bannerType) {
                this.bannerType = bannerType;
        }

        public String getBannerType() {
                return bannerType;
        }

        public void setActionType(String actionType) {
                this.actionType = actionType;
        }

        public String getActionType() {
                return actionType;
        }

        public void setLinkTarget(String[] linkTarget) {
                this.linkTarget = linkTarget;
        }


}