org.esco.portlets.news.web.TypeSettingViewController.java Source code

Java tutorial

Introduction

Here is the source code for org.esco.portlets.news.web.TypeSettingViewController.java

Source

/**
 * ESUP-Portail News - Copyright (c) 2009 ESUP-Portail consortium
 * For any information please refer to http://esup-helpdesk.sourceforge.net
 * You may obtain a copy of the licence at http://www.esup-portail.org/license/
 */
package org.esco.portlets.news.web;

import java.util.ArrayList;
import java.util.HashMap;
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.domain.Entity;
import org.esco.portlets.news.domain.Type;
import org.esco.portlets.news.services.EntityManager;
import org.esco.portlets.news.services.TypeManager;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.stereotype.Controller;
import org.springframework.util.Assert;
import org.springframework.web.portlet.ModelAndView;
import org.springframework.web.portlet.mvc.AbstractController;
import org.uhp.portlets.news.domain.Category;
import org.uhp.portlets.news.service.CategoryManager;
import org.uhp.portlets.news.web.support.Constants;

/**
 * Controller.
 * @author GIP RECIA - Gribonvald Julien
 * 5 fvr. 2010
 */
@Controller
public class TypeSettingViewController extends AbstractController implements InitializingBean {

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

    /** The Type Manager.*/
    @Autowired
    private TypeManager tm;
    /** The Entity Manager.*/
    @Autowired
    private EntityManager em;
    /** The CategoryManager. */
    @Autowired
    private CategoryManager cm;

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

    /**
     * @param request
     * @param response
     * @return <code>ModelAndView</code>
     * @throws Exception
     * @see org.springframework.web.portlet.mvc.AbstractController#
     * handleRenderRequest(javax.portlet.RenderRequest, javax.portlet.RenderResponse)
     */
    @Override
    public ModelAndView handleRenderRequest(final RenderRequest request, final RenderResponse response)
            throws Exception {
        Long id = Long.valueOf(request.getParameter(Constants.ATT_TYPE_ID));
        if (LOG.isDebugEnabled()) {
            LOG.debug("TypeSettingViewController:: entering method handleRenderRequestInternal: type Id=" + id);
        }
        final Type type = this.getTm().getTypeById(id);
        if (type != null) {
            TypeForm typeF = new TypeForm();
            typeF.setType(type);
            List<Entity> entities = this.getEm().getEntitiesByType(id);
            List<String> entitiesIds = new ArrayList<String>();
            Map<Long, List<Category>> categoriesOfTypeInEntity = new HashMap<Long, List<Category>>();
            if (entities != null && !entities.isEmpty()) {
                for (Entity e : entities) {
                    entitiesIds.add(String.valueOf(e.getEntityId()));
                    List<Category> catList = this.cm.getCategoryByTypeOfEntity(type.getTypeId(), e.getEntityId());
                    categoriesOfTypeInEntity.put(e.getEntityId(), catList);
                }
                typeF.setEntitiesIds(entitiesIds.toArray(new String[0]));
            }

            ModelAndView mav = new ModelAndView(Constants.ACT_VIEW_TYPE_SETTING);
            mav.addObject(Constants.CMD_TYPE, typeF);
            mav.addObject(Constants.ATT_E_LIST, entities);
            mav.addObject(Constants.ATT_MAP_C_E, categoriesOfTypeInEntity);
            return mav;
        }
        throw new ObjectRetrievalFailureException(Type.class, id);
    }

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

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

    /**
     * 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;
    }

    /**
     * @throws Exception
     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
     */
    public void afterPropertiesSet() throws Exception {
        Assert.notNull(this.getTm(),
                "The property TypeManager tm in class " + getClass().getSimpleName() + " must not be null.");
        Assert.notNull(this.getEm(),
                "The property EntityManager em in class " + getClass().getSimpleName() + " must not be null.");
    }
}