com.salesmanager.central.merchantstore.StoreFrontPortletsAction.java Source code

Java tutorial

Introduction

Here is the source code for com.salesmanager.central.merchantstore.StoreFrontPortletsAction.java

Source

/*
 * Provided by CSTI Consulting 
 * Following GNU LESSER GENERAL PUBLIC LICENSE
 * You may obtain more details at
 *
 * http://www.csticonsulting.com
 * Copyright (c) 2006-2010 Consultation CS-TI inc. 
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package com.salesmanager.central.merchantstore;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import com.salesmanager.central.BaseAction;
import com.salesmanager.core.constants.CatalogConstants;
import com.salesmanager.core.constants.ConfigurationConstants;
import com.salesmanager.core.constants.LabelConstants;
import com.salesmanager.core.entity.merchant.MerchantConfiguration;
import com.salesmanager.core.entity.reference.CoreModuleService;
import com.salesmanager.core.entity.reference.DynamicLabel;
import com.salesmanager.core.entity.reference.DynamicLabelDescription;
import com.salesmanager.core.entity.reference.DynamicLabelDescriptionId;
import com.salesmanager.core.service.ServiceFactory;
import com.salesmanager.core.service.merchant.ConfigurationRequest;
import com.salesmanager.core.service.merchant.ConfigurationResponse;
import com.salesmanager.core.service.merchant.MerchantService;
import com.salesmanager.core.service.reference.ReferenceService;
import com.salesmanager.core.util.LabelUtil;
import com.salesmanager.core.util.MerchantConfigurationUtil;

public class StoreFrontPortletsAction extends BaseAction {

    private static Logger log = Logger.getLogger(StoreFrontPortletsAction.class);

    Collection<CoreModuleService> portlets;
    Map<String, String> selectedPortlets;
    Map<String, String> configuredPortlets;

    Collection customPortlets;

    String[] selection;// selected portlets
    String[] selectionCustomPortlets;// selection custom portlets

    private List<String> descriptions = new ArrayList<String>();

    private DynamicLabel label = null;

    private Map portletsPositions = null;

    private MerchantConfiguration mc = null;

    public MerchantConfiguration getMc() {
        return mc;
    }

    public void setMc(MerchantConfiguration mc) {
        this.mc = mc;
    }

    public String[] getSelection() {
        return selection;
    }

    public void setSelection(String[] selection) {
        this.selection = selection;
    }

    public Map<String, String> getSelectedPortlets() {
        return selectedPortlets;
    }

    public void setSelectedPortlets(Map<String, String> selectedPortlets) {
        this.selectedPortlets = selectedPortlets;
    }

    public Collection<CoreModuleService> getPortlets() {
        return portlets;
    }

    public void setPortlets(Collection<CoreModuleService> portlets) {
        this.portlets = portlets;
    }

    public String display() {

        try {

            super.setPageTitle("label.storefront.portletsconfig");

            // get portlets
            ReferenceService rservice = (ReferenceService) ServiceFactory
                    .getService(ServiceFactory.ReferenceService);
            portlets = rservice.getCoreModules(CatalogConstants.STORE_FRONT_PORTLETS_CODE, "XX");
            Collections.reverse((List) portlets);

            // get selection
            ConfigurationRequest request = new ConfigurationRequest(super.getContext().getMerchantid(), true,
                    ConfigurationConstants.STORE_PORTLETS_);
            MerchantService mservice = (MerchantService) ServiceFactory.getService(ServiceFactory.MerchantService);
            ConfigurationResponse vo = mservice.getConfiguration(request);

            if (vo != null) {
                List configurations = vo.getMerchantConfigurationList();

                if (configurations != null && configurations.size() > 0) {

                    Iterator i = configurations.iterator();

                    while (i.hasNext()) {

                        MerchantConfiguration conf = (MerchantConfiguration) i.next();

                        if (conf.getConfigurationKey().equals(ConfigurationConstants.STORE_PORTLETS_)) {
                            mc = conf;
                            Collection portletsList = MerchantConfigurationUtil
                                    .getConfigurationList(mc.getConfigurationValue(), ";");
                            if (portletsList != null && portletsList.size() > 0) {
                                Map returnMap = new HashMap();
                                Iterator ii = portletsList.iterator();
                                while (ii.hasNext()) {
                                    String p = (String) ii.next();
                                    returnMap.put(p, p);
                                }
                                selectedPortlets = returnMap;
                            }
                            continue;
                        }

                        if (conf.getConfigurationModule() != null) {
                            this.configuredPortlets.put(conf.getConfigurationModule(),
                                    conf.getConfigurationModule());
                        }
                    }

                }
            }

            // get custom portlets
            customPortlets = rservice.getDynamicLabels(super.getContext().getMerchantid(),
                    LabelConstants.STORE_FRONT_CUSTOM_PORTLETS, super.getLocale());

        } catch (Exception e) {
            log.error(e);
            super.setTechnicalMessage();
        }

        return SUCCESS;

    }

    public String customPortletsDetails() {

        super.setPageTitle("label.storefront.portletsconfig");

        try {

            super.prepareLanguages();

            this.preparePortletsPositions();
            ReferenceService rservice = (ReferenceService) ServiceFactory
                    .getService(ServiceFactory.ReferenceService);

            if (label != null) {

                // get label

                label = rservice.getDynamicLabel(label.getDynamicLabelId());

                Set descriptionsSet = label.getDescriptions();

                Map descriptionsMap = new HashMap();

                if (descriptionsSet != null) {

                    for (Object desc : descriptionsSet) {
                        DynamicLabelDescription description = (DynamicLabelDescription) desc;
                        descriptionsMap.put(description.getId().getLanguageId(), description);
                    }

                    // iterate through languages for appropriate order
                    for (int count = 0; count < reflanguages.size(); count++) {
                        int langid = (Integer) reflanguages.get(count);
                        DynamicLabelDescription description = (DynamicLabelDescription) descriptionsMap.get(langid);
                        if (description != null) {
                            descriptions.add(description.getDynamicLabelDescription());
                        }
                    }
                }

            }

        } catch (Exception e) {
            log.error(e);
            super.setTechnicalMessage();
        }

        return SUCCESS;

    }

    private void preparePortletsPositions() {

        LabelUtil l = LabelUtil.getInstance();

        portletsPositions = new HashMap();
        portletsPositions.put(LabelConstants.LABEL_POSITION_LEFT,
                l.getText(super.getLocale(), "label.generic.position.left"));
        portletsPositions.put(LabelConstants.LABEL_POSITION_RIGHT,
                l.getText(super.getLocale(), "label.generic.position.right"));
        portletsPositions.put(LabelConstants.LABEL_POSITION_BOTTOM_LANDING,
                l.getText(super.getLocale(), "label.merchantstore.position.bottom.landing"));

    }

    public String savePortlet() {

        try {

            super.setPageTitle("label.storefront.portletsconfig");

            boolean hasError = false;

            super.prepareLanguages();

            this.preparePortletsPositions();

            ReferenceService rservice = (ReferenceService) ServiceFactory
                    .getService(ServiceFactory.ReferenceService);

            if (label == null) {
                label = new DynamicLabel();
            }

            if (this.label.getSortOrder() == null) {
                super.addFieldError("label.sortOrder", getText("invalid.fieldvalue.sortorder"));
                hasError = true;
            }

            if (StringUtils.isBlank(this.label.getTitle())) {
                super.addFieldError("label.title", getText("error.message.storefront.portletidrequired"));
                hasError = true;
            }

            Iterator i = reflanguages.keySet().iterator();
            while (i.hasNext()) {
                int langcount = (Integer) i.next();

                String description = (String) this.getDescriptions().get(langcount);

                int submitedlangid = (Integer) reflanguages.get(langcount);
                // create
                DynamicLabelDescriptionId id = new DynamicLabelDescriptionId();
                id.setLanguageId(submitedlangid);
                if (label != null) {
                    id.setDynamicLabelId(label.getDynamicLabelId());
                }

                DynamicLabelDescription dldescription = new DynamicLabelDescription();
                dldescription.setId(id);
                dldescription.setDynamicLabelDescription(description);
                dldescription.setDynamicLabelTitle("-");

                Set descs = label.getDescriptions();
                if (descs == null) {
                    descs = new HashSet();
                }

                descs.add(dldescription);

                label.setMerchantId(super.getContext().getMerchantid());
                label.setSectionId(LabelConstants.STORE_FRONT_CUSTOM_PORTLETS);
                label.setDescriptions(descs);

            }

            if (hasError) {
                return INPUT;
            }

            rservice.saveOrUpdateDynamicLabel(label);

            super.setSuccessMessage();

        } catch (Exception e) {
            log.error(e);
            super.setTechnicalMessage();
        }

        return SUCCESS;

    }

    public String saveCustomPortlets() {

        try {

            super.setPageTitle("label.storefront.portletsconfig");

            ReferenceService rservice = (ReferenceService) ServiceFactory
                    .getService(ServiceFactory.ReferenceService);
            Collection<DynamicLabel> labels = rservice.getDynamicLabels(super.getContext().getMerchantid(),
                    LabelConstants.STORE_FRONT_CUSTOM_PORTLETS);

            if (labels != null && labels.size() > 0) {

                for (Object o : labels) {

                    DynamicLabel dl = (DynamicLabel) o;
                    String[] labelIds = this.getSelectionCustomPortlets();

                    if (labelIds != null && labelIds.length > 0) {

                        boolean found = false;
                        for (int i = 0; i < labelIds.length; i++) {
                            String sId = labelIds[i];
                            try {
                                long id = Long.parseLong(sId);
                                if (dl.getDynamicLabelId() == id) {
                                    found = true;
                                }

                            } catch (Exception e) {
                                log.error("Wrong id " + sId);
                                if (sId.equals("false")) {
                                    dl.setVisible(false);
                                } else {
                                    dl.setVisible(true);
                                }
                            }

                        }
                        if (found == true) {
                            dl.setVisible(true);
                        } else {
                            dl.setVisible(false);
                        }

                    } else {
                        dl.setVisible(false);
                    }
                }

                rservice.saveDynamicLabel(labels);
                super.setSuccessMessage();
            }

            super.setSuccessMessage();

        } catch (Exception e) {
            log.error(e);
            super.setTechnicalMessage();
            return INPUT;
        }
        this.display();// prepare display elements
        return SUCCESS;

    }

    public String deleteCustomPortlet() {

        try {

            super.setPageTitle("label.storefront.portletsconfig");

            super.prepareLanguages();
            ReferenceService rservice = (ReferenceService) ServiceFactory
                    .getService(ServiceFactory.ReferenceService);
            DynamicLabel l = rservice.getDynamicLabel(this.getLabel().getDynamicLabelId());
            if (l != null) {
                if (l.getMerchantId() == super.getContext().getMerchantid()) {
                    rservice.deleteDynamicLabel(l);
                }
            }

            this.display();
            super.setSuccessMessage();

        } catch (Exception e) {
            super.setTechnicalMessage();
            log.error(e);
            this.display();
        }

        return SUCCESS;

    }

    public String save() {

        try {

            super.setPageTitle("label.storefront.portletsconfig");

            this.display();
            // save selected protlets

            // get selection first
            MerchantService mservice = (MerchantService) ServiceFactory.getService(ServiceFactory.MerchantService);

            if (selection == null) {

                if (mc != null) {
                    mservice.deleteMerchantConfiguration(mc);
                    this.selectedPortlets = null;
                    super.setSuccessMessage();
                    return SUCCESS;
                } else {
                    return SUCCESS;
                }
            }

            List l = Arrays.asList(selection);

            String line = MerchantConfigurationUtil.buildConfigurationLine(l, ";");

            Collection portletsList = MerchantConfigurationUtil.getConfigurationList(line, ";");
            if (portletsList != null && portletsList.size() > 0) {
                Map returnMap = new HashMap();
                Iterator i = portletsList.iterator();
                while (i.hasNext()) {
                    String p = (String) i.next();
                    returnMap.put(p, p);
                }
                selectedPortlets = returnMap;
            }

            if (mc == null) {
                mc = new MerchantConfiguration();
                mc.setConfigurationKey(ConfigurationConstants.STORE_PORTLETS_);
                mc.setDateAdded(new Date());
                mc.setLastModified(new Date());
                mc.setMerchantId(super.getContext().getMerchantid());
            }

            mc.setConfigurationValue(line);
            mservice.saveOrUpdateMerchantConfiguration(mc);

            super.setSuccessMessage();

        } catch (Exception e) {
            log.error(e);
            super.setTechnicalMessage();
            return INPUT;
        }

        return SUCCESS;

    }

    public Map<String, String> getConfiguredPortlets() {
        return configuredPortlets;
    }

    public void setConfiguredPortlets(Map<String, String> configuredPortlets) {
        this.configuredPortlets = configuredPortlets;
    }

    public Collection getCustomPortlets() {
        return customPortlets;
    }

    public void setCustomPortlets(Collection customPortlets) {
        this.customPortlets = customPortlets;
    }

    public String[] getSelectionCustomPortlets() {
        return selectionCustomPortlets;
    }

    public void setSelectionCustomPortlets(String[] selectionCustomPortlets) {
        this.selectionCustomPortlets = selectionCustomPortlets;
    }

    public DynamicLabel getLabel() {
        return label;
    }

    public void setLabel(DynamicLabel label) {
        this.label = label;
    }

    public List<String> getDescriptions() {
        return descriptions;
    }

    public void setDescriptions(List<String> descriptions) {
        this.descriptions = descriptions;
    }

    public Map getPortletsPositions() {
        return portletsPositions;
    }

    public void setPortletsPositions(Map portletsPositions) {
        this.portletsPositions = portletsPositions;
    }

}