ch.screenconcept.artoz.faces.beans.CmsJSFBean.java Source code

Java tutorial

Introduction

Here is the source code for ch.screenconcept.artoz.faces.beans.CmsJSFBean.java

Source

package ch.screenconcept.artoz.faces.beans;

/*
The extension "website" is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
    
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
    
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.context.FacesContext;

import org.apache.commons.validator.GenericValidator;
import org.apache.log4j.Logger;
import org.apache.shale.tiger.managed.Bean;
import org.apache.shale.tiger.managed.Scope;

import ch.screenconcept.artoz.website.constants.WebsiteConstants;
import ch.screenconcept.artoz.website.navigation.ArtozMainNavigationElement;

import com.exedio.campaign.jalo.EMailCampaignParticipation;

import de.hybris.platform.cms.constants.CmsConstants;
import de.hybris.platform.cms.jalo.AbstractCMSItem;
import de.hybris.platform.cms.jalo.CmsManager;
import de.hybris.platform.cms.jalo.NavigationElement;
import de.hybris.platform.cms.jalo.PageContent;
import de.hybris.platform.cms.jalo.Website;
import de.hybris.platform.core.PK;
import de.hybris.platform.jalo.JaloSession;
import de.hybris.platform.jalo.c2l.Language;
import de.hybris.platform.jalo.flexiblesearch.FlexibleSearch;
import de.hybris.platform.jalo.user.User;

/**
 * Managed bean that brigdes to the CMS extension.
 * 
 * @author p-naef
 */
@Bean(name = "cmsJSFBean", scope = Scope.REQUEST)
public class CmsJSFBean {
    private static final Logger log = Logger.getLogger(CmsJSFBean.class.getName());

    public static final String FRONTPAGE_CATEGORY_CODE = "home";

    public CmsJSFBean() {
        final String participationID = getRequestParameter(WebsiteConstants.PARAM_PARTICIPATION);
        if (!GenericValidator.isBlankOrNull(participationID)) {
            try {
                final EMailCampaignParticipation participation = (EMailCampaignParticipation) JaloSession
                        .getCurrentSession().getItem(PK.parseHex(participationID));
                participation.setPositiveReaction(true);
            } catch (Exception e) {
                log.error("", e);
            }
        }

        CmsManager.getInstance().setActiveWebsite(getWebsite());

        LoginJSFBean loginBean = (LoginJSFBean) FacesContext.getCurrentInstance().getApplication()
                .createValueBinding("#{loginJSFBean}").getValue(FacesContext.getCurrentInstance());

        LanguageJSFBean languageBean = (LanguageJSFBean) FacesContext.getCurrentInstance().getApplication()
                .createValueBinding("#{languageBean}").getValue(FacesContext.getCurrentInstance());

        User user = loginBean.getLoginUser();

        Language lang = languageBean.getLanguage();

        if (user != null) {
            JaloSession.getCurrentSession().setUser(user);
        }
        JaloSession.getCurrentSession().getSessionContext().setLanguage(lang);
    }

    public String getRequestParameter(String name) {
        return (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(name);
    }

    public String getTemplate() {
        return FRONTPAGE_CATEGORY_CODE;
    }

    public String getParagraph() {
        return FRONTPAGE_CATEGORY_CODE;
    }

    public AbstractCMSItem getMainNav() {
        return getWebsite().getNavigationElement(WebsiteConstants.MAIN_NAV);
    }

    public AbstractCMSItem getSubNav() {
        return getActivMainNavigationElement();
    }

    public AbstractCMSItem getHelpNav() {
        return getWebsite().getNavigationElement(WebsiteConstants.HELP_NAV);
    }

    public AbstractCMSItem getQuickNav() {
        return getWebsite().getNavigationElement(WebsiteConstants.QUICK_NAV);
    }

    public PageContent getPageContent() {
        return (PageContent) CmsManager.getInstance().getPageContent((String) FacesContext.getCurrentInstance()
                .getExternalContext().getRequestParameterMap().get(WebsiteConstants.PARAM_PAGEID), getWebsite());
    }

    public NavigationElement getActivMainNavigationElement() {
        final NavigationElement link = getActivNavigationElement();

        if (link == null)
            return null;

        if (getMainNav().equals(link.getParent()))
            return link;
        if (getMainNav().equals(link.getParent().getParent()))
            return link.getParent();
        if (null == link.getParent().getParent())
            return null;
        if (getMainNav().equals(link.getParent().getParent().getParent()))
            return link.getParent().getParent();
        return null;

    }

    public NavigationElement getActivSubNavigationElement() {
        final NavigationElement link = getActivNavigationElement();

        if (link == null)
            return null;

        if (getMainNav().equals(link.getParent()))
            return null;
        if (getMainNav().equals(link.getParent().getParent()))
            return link;
        if (null == link.getParent().getParent())
            return null;
        if (getMainNav().equals(link.getParent().getParent().getParent()))
            return link.getParent();
        return null;
    }

    public NavigationElement getActivNavigationElement() {
        final String pageID = (String) FacesContext.getCurrentInstance().getExternalContext()
                .getRequestParameterMap().get(WebsiteConstants.PARAM_PAGEID);
        if (pageID == null)
            return null;
        if (pageID.equals(""))
            return null;
        final PageContent page = CmsManager.getInstance().getPageContent(pageID, getWebsite());
        if (page == null)
            return null;

        final String query = "SELECT {" + NavigationElement.PK + "} " + "FROM {" + CmsConstants.TC.NAVIGATIONELEMENT
                + "} " + "WHERE {" + NavigationElement.CONTENT + "}=?page";
        final Map<String, Object> parameter = new HashMap<String, Object>();
        parameter.put("page", page);

        final List<NavigationElement> elements = FlexibleSearch.getInstance()
                .search(query, parameter, NavigationElement.class).getResult();
        if (elements == null || elements.isEmpty())
            return null;

        final NavigationElement link = elements.get(0);
        return link;
    }

    public List<ArtozMainNavigationElement> getMainNavigationElements() {
        List<ArtozMainNavigationElement> results = new ArrayList<ArtozMainNavigationElement>();
        Collection<NavigationElement> children = ((NavigationElement) getMainNav()).getChildren();
        for (NavigationElement c : children) {
            if (c instanceof ArtozMainNavigationElement) {
                results.add((ArtozMainNavigationElement) c);
            }
        }
        return results;
    }

    public List<ArtozMainNavigationElement> getSubNavigationElements() {
        List<ArtozMainNavigationElement> results = new ArrayList<ArtozMainNavigationElement>();
        Collection<NavigationElement> children = ((NavigationElement) getSubNav()).getChildren();
        for (NavigationElement c : children) {
            if (c instanceof ArtozMainNavigationElement) {
                results.add((ArtozMainNavigationElement) c);
            }
        }
        return results;
    }

    public Website getWebsite() {
        return CmsManager.getInstance().getWebsite("artoz");
    }

}