org.uhp.portlets.news.web.AudienceViewController.java Source code

Java tutorial

Introduction

Here is the source code for org.uhp.portlets.news.web.AudienceViewController.java

Source

package org.uhp.portlets.news.web;

/**
 * @Project NewsPortlet : http://sourcesup.cru.fr/newsportlet/ 
 * Copyright (C) 2007-2008 University Nancy 1
 * 
 * This program 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 version 2 of the License.
 * 
 * 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, write to the Free Software Foundation, Inc., 51
 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 */

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.esco.portlets.news.services.EntityManager;
import org.esco.portlets.news.services.UserManager;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.portlet.ModelAndView;
import org.springframework.web.portlet.mvc.AbstractController;
import org.uhp.portlets.news.NewsConstants;
import org.uhp.portlets.news.domain.Category;
import org.uhp.portlets.news.domain.RolePerm;
import org.uhp.portlets.news.domain.Subscriber;
import org.uhp.portlets.news.domain.Topic;
import org.uhp.portlets.news.domain.UserRole;
import org.uhp.portlets.news.service.CategoryManager;
import org.uhp.portlets.news.service.SubscribeService;
import org.uhp.portlets.news.service.TopicManager;
import org.uhp.portlets.news.web.support.Constants;

/**
 * modified by GIP RECIA - Gribonvald Julien.
 * 14 avr. 2010
 */
public class AudienceViewController extends AbstractController implements InitializingBean {

    /** Logger. */
    private static final Log LOG = LogFactory.getLog(AudienceViewController.class);

    /** */
    private String ctx;

    /** */
    @Autowired
    private SubscribeService subService;
    /** */
    @Autowired
    private CategoryManager cm;
    /** */
    @Autowired
    private TopicManager tm;
    /** */
    @Autowired
    private UserManager um;
    /** The Entity Manager. */
    @Autowired
    private EntityManager em;

    /**
     * Constructeur de l'objet AudienceViewController.java.
     */
    public AudienceViewController() {
        super();
    }

    /**
     * @throws Exception
     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
     */
    public void afterPropertiesSet() throws Exception {
        Assert.notNull(this.getSubService(), "A SubscribeService is required.");
        Assert.notNull(this.getCm(), "A CategoryManager is required.");
        Assert.notNull(this.getTm(), "A TopicManager is required.");
        Assert.notNull(this.getUm(), "A UserManager is required.");
        Assert.notNull(this.getEm(), "A EntityManager is required.");
        Assert.hasLength(this.getCtx(), "ctx property should be defined...");
    }

    /**
     * @param request
     * @param response
     * @return <code>ModelAndView</code>
     * @throws Exception
     * @see org.springframework.web.portlet.mvc.AbstractController#
     * handleRenderRequestInternal(javax.portlet.RenderRequest, javax.portlet.RenderResponse)
     */
    @Override
    protected ModelAndView handleRenderRequestInternal(final RenderRequest request, final RenderResponse response)
            throws Exception {
        final Long ctxId = Long.valueOf(request.getParameter(Constants.ATT_CTX_ID));

        final ModelAndView mav = new ModelAndView(Constants.ACT_VIEW_AUDIENCE + this.ctx);
        List<String> usersUid = new ArrayList<String>();

        mav.addObject(Constants.ATT_CTX_ID, ctxId);
        if (this.getCtx().equalsIgnoreCase(NewsConstants.CTX_E)) {
            mav.addObject(Constants.OBJ_ENTITY, this.getEm().getEntityById(ctxId));
        } else if (this.getCtx().equalsIgnoreCase(NewsConstants.CTX_C)) {
            Category c = this.getCm().getCategoryById(ctxId);
            mav.addObject(Constants.OBJ_CATEGORY, c);
            mav.addObject(Constants.OBJ_ENTITY, this.getEm().getEntityById(c.getEntityId()));
        } else if (this.getCtx().equalsIgnoreCase(NewsConstants.CTX_T)) {
            final Topic topic = this.getTm().getTopicById(ctxId);
            Category c = this.getCm().getCategoryById(topic.getCategoryId());
            mav.addObject(Constants.OBJ_TOPIC, topic);
            mav.addObject(Constants.OBJ_CATEGORY, c);
            mav.addObject(Constants.OBJ_ENTITY, this.getEm().getEntityById(c.getEntityId()));
        }

        // get uid List from subscribers
        Map<String, List<Subscriber>> subcribers = this.getSubService().getSubscribersByCtxId(ctxId, this.getCtx());
        for (Map.Entry<String, List<Subscriber>> ls : subcribers.entrySet()) {
            for (Subscriber s : ls.getValue()) {
                if (s.getIsGroup() == 0 && !usersUid.contains(s.getPrincipal())) {
                    usersUid.add(s.getPrincipal());
                }
            }
        }

        mav.addObject(Constants.ATT_LIST, subcribers);
        mav.addObject(Constants.ATT_PM, RolePerm
                .valueOf(this.getUm().getUserRoleInCtx(ctxId, this.getCtx(), request.getRemoteUser())).getMask());
        mav.addObject(Constants.ATT_LDAP_DISPLAY, this.getUm().getLdapUserService().getSearchDisplayedAttributes());
        mav.addObject(Constants.ATT_USER_LIST, this.getUm().getUsersByListUid(usersUid));
        if (LOG.isTraceEnabled()) {
            LOG.trace(" ModelAndView : " + mav.toString());
        }
        return mav;

    }

    /**
     * Getter du membre subService.
     * @return <code>SubscribeService</code> le membre subService.
     */
    public SubscribeService getSubService() {
        return subService;
    }

    /**
     * Setter du membre subService.
     * @param subService la nouvelle valeur du membre subService. 
     */
    public void setSubService(final SubscribeService subService) {
        this.subService = subService;
    }

    /**
     * Getter du membre cm.
     * @return <code>CategoryManager</code> le membre cm.
     */
    public CategoryManager getCm() {
        return cm;
    }

    /**
     * Setter du membre cm.
     * @param cm la nouvelle valeur du membre cm. 
     */
    public void setCm(final CategoryManager cm) {
        this.cm = cm;
    }

    /**
     * Getter du membre tm.
     * @return <code>TopicManager</code> le membre tm.
     */
    public TopicManager getTm() {
        return tm;
    }

    /**
     * Setter du membre tm.
     * @param tm la nouvelle valeur du membre tm. 
     */
    public void setTm(final TopicManager tm) {
        this.tm = tm;
    }

    /**
     * Getter du membre um.
     * @return <code>UserManager</code> le membre um.
     */
    public UserManager getUm() {
        return um;
    }

    /**
     * Setter du membre um.
     * @param um la nouvelle valeur du membre um. 
     */
    public void setUm(final UserManager um) {
        this.um = um;
    }

    /**
     * Getter du membre em.
     * @return <code>EntityManager</code> le membre em.
     */
    public EntityManager getEm() {
        return em;
    }

    /**
     * Setter du membre em.
     * @param em la nouvelle valeur du membre em. 
     */
    public void setEm(final EntityManager em) {
        this.em = em;
    }

    /**
     * Getter du membre ctx.
     * @return <code>String</code> le membre ctx.
     */
    public String getCtx() {
        return ctx;
    }

    /**
     * Setter du membre ctx.
     * @param ctx la nouvelle valeur du membre ctx. 
     */
    public void setCtx(final String ctx) {
        this.ctx = ctx;
    }
}