org.squale.welcom.struts.action.MAction.java Source code

Java tutorial

Introduction

Here is the source code for org.squale.welcom.struts.action.MAction.java

Source

/**
 * Copyright (C) 2008-2010, Squale Project - http://www.squale.org
 *
 * This file is part of Squale.
 *
 * Squale is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or any later version.
 *
 * Squale 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 Lesser General Public License
 * along with Squale.  If not, see <http://www.gnu.org/licenses/>.
 */
/*
 * Cr le 6 nov. 06
 *
 * Pour changer le modle de ce fichier gnr, allez  :
 * Fentre&gt;Prfrences&gt;Java&gt;Gnration de code&gt;Code et commentaires
 */
package org.squale.welcom.struts.action;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.validator.GenericValidator;
import org.apache.struts.action.Action;
import org.apache.struts.util.MessageResources;
import org.squale.welcom.outils.Access;
import org.squale.welcom.struts.bean.WILogonBean;
import org.squale.welcom.struts.bean.WILogonBeanSecurity;
import org.squale.welcom.struts.bean.WResultAction;
import org.squale.welcom.struts.util.WConstants;

/**
 * Ajoute la couche de gestion des messages
 * 
 * @author M327837 Pour changer le modle de ce commentaire de type gnr, allez  :
 *         Fentre&gt;Prfrences&gt;Java&gt;Gnration de code&gt;Code et commentaires
 */
public class MAction extends Action {

    /** logger */
    private static Log log = LogFactory.getLog(MAction.class);

    /**
     * Recupere le WILogonBean
     * 
     * @param request : le request
     * @return WILogonBean
     */
    public WILogonBean getWILogonBean(final HttpServletRequest request) {
        if (request.getSession().getAttribute(WConstants.USER_KEY) instanceof WILogonBean) {
            return (WILogonBean) request.getSession().getAttribute(WConstants.USER_KEY);
        } else {
            return null;
        }
    }

    /**
     * Stocke un message
     * 
     * @deprecated
     * @param request : Request
     * @param msgRessource : message
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     */
    public void setResultAction(final HttpServletRequest request, final String msgRessource)
            throws ServletException {
        setMessagePopup(request, msgRessource, (Object[]) null);
    }

    /**
     * Stocke un message
     * 
     * @deprecated
     * @param request : Request
     * @param msgRessource : message
     * @param arg0 : le 1er argument du message
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     */
    public void setResultAction(final HttpServletRequest request, final String msgRessource, final String arg0)
            throws ServletException {
        final Object[] args = { arg0 };
        setMessagePopup(request, msgRessource, args);
    }

    /**
     * Stocke un message
     * 
     * @param request : Request
     * @param msgRessource : message
     * @param arg0 : le 1er argument du message
     * @param arg1 : le 2eme argument du message
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     * @deprecated
     */
    public void setResultAction(final HttpServletRequest request, final String msgRessource, final String arg0,
            final String arg1) throws ServletException {
        final Object[] args = { arg0, arg1 };
        setMessagePopup(request, msgRessource, args);
    }

    /**
     * Stocke un message
     * 
     * @param request : Request
     * @param msgRessource : message
     * @param arg0 : le 1er argument du message
     * @param arg1 : le 2eme argument du message
     * @param arg2 : le 3eme argument du message
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     * @deprecated
     */
    public void setResultAction(final HttpServletRequest request, final String msgRessource, final String arg0,
            final String arg1, final String arg2) throws ServletException {
        final Object[] args = { arg0, arg1, arg2 };
        setMessagePopup(request, msgRessource, args);
    }

    /**
     * Stocke un message
     * 
     * @param request : Request
     * @param msgRessource : message
     * @param arg0 : le 1er argument du message
     * @param arg1 : le 2eme argument du message
     * @param arg2 : le 3eme argument du message
     * @param arg3 : le 4eme argument du message
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     * @deprecated
     */
    public void setResultAction(final HttpServletRequest request, final String msgRessource, final String arg0,
            final String arg1, final String arg2, final String arg3) throws ServletException {
        final Object[] args = { arg0, arg1, arg2, arg3 };
        setMessagePopup(request, msgRessource, args);
    }

    /**
     * Stocke un message
     * 
     * @param request : Request
     * @param msgRessource : message
     * @param args : le tableau d'arguments
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     * @deprecated
     */
    public void setResultAction(final HttpServletRequest request, final String msgRessource, final Object[] args)
            throws ServletException {
        setMessagePopup(request, msgRessource, args);
    }

    /**
     * Stocke un message
     * 
     * @param request : Request
     * @param msgRessource : message
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     */
    public void setMessagePopup(final HttpServletRequest request, final String msgRessource)
            throws ServletException {
        setMessagePopup(request, msgRessource, (Object[]) null);
    }

    /**
     * Stocke un message
     * 
     * @param request : Request
     * @param msgRessource : message
     * @param arg0 : le 1er argument du message
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     */
    public void setMessagePopup(final HttpServletRequest request, final String msgRessource, final String arg0)
            throws ServletException {
        final Object[] args = { arg0 };
        setMessagePopup(request, msgRessource, args);
    }

    /**
     * Stocke un message
     * 
     * @param request : Request
     * @param msgRessource : message
     * @param arg0 : le 1er argument du message
     * @param arg1 : le 2eme argument du message
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     */
    public void setMessagePopup(final HttpServletRequest request, final String msgRessource, final String arg0,
            final String arg1) throws ServletException {
        final Object[] args = { arg0, arg1 };
        setMessagePopup(request, msgRessource, args);
    }

    /**
     * Stocke un message
     * 
     * @param request : Request
     * @param msgRessource : message
     * @param arg0 : le 1er argument du message
     * @param arg1 : le 2eme argument du message
     * @param arg2 : le 3eme argument du message
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     */
    public void setMessagePopup(final HttpServletRequest request, final String msgRessource, final String arg0,
            final String arg1, final String arg2) throws ServletException {
        final Object[] args = { arg0, arg1, arg2 };
        setMessagePopup(request, msgRessource, args);
    }

    /**
     * Stocke un message
     * 
     * @param request : Request
     * @param msgRessource : message
     * @param arg0 : le 1er argument du message
     * @param arg1 : le 2eme argument du message
     * @param arg2 : le 3eme argument du message
     * @param arg3 : le 4eme argument du message
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     */
    public void setMessagePopup(final HttpServletRequest request, final String msgRessource, final String arg0,
            final String arg1, final String arg2, final String arg3) throws ServletException {
        final Object[] args = { arg0, arg1, arg2, arg3 };
        setMessagePopup(request, msgRessource, args);
    }

    /**
     * Stocke un message
     * 
     * @param request : Request
     * @param msgRessource : message
     * @param args : le tableau d'arguments
     * @throws ServletException : Le logonBean n'implemente pas l'interface WIResultAction pour la gestion des popup de
     *             resultat de l'action
     */
    public void setMessagePopup(final HttpServletRequest request, final String msgRessource, final Object[] args)
            throws ServletException {
        final MessageResources resources = getResources(request);
        String result = resources.getMessage(getLocale(request), msgRessource, args);

        if (GenericValidator.isBlankOrNull(result)) {
            result = msgRessource;
        }
        WResultAction.saveMessage(request, result);
    }

    /**
     * Verifie l'habillitation d'une personne pour executer la methode
     * 
     * @param request Requette
     * @param accessKey droit d'acces de la personne
     * @param minimalAccess niveau d'acces minimal, NONE, NO, READONLY, YES, READWRITE
     * @throws NoHabilitationException Probleme pour retouver le niveau d'habilitation
     * @since 2.4.3
     */
    public void checkHabilitation(final HttpServletRequest request, String accessKey, String minimalAccess)
            throws NoHabilitationException {
        if (GenericValidator.isBlankOrNull(accessKey)) {
            throw new NoHabilitationException("Votre clef d'accs ne peux tre nulle");
        }
        // Recupere le logon bean pour effectuer les tests
        WILogonBean logonBean = getWILogonBean(request);
        if (logonBean != null) {
            if (!(logonBean instanceof WILogonBeanSecurity)) {
                throw new NoHabilitationException(
                        "Votre Logon Bean n'herite par de WILogonBeanSecurity, Le gestion des droits d'accs n'est pas activ");
            }
            String access = ((WILogonBeanSecurity) logonBean).getAccess(accessKey);
            if (GenericValidator.isBlankOrNull(access)) {
                throw new NoHabilitationException(
                        "La valeur de la clef " + accessKey + " ne retourne pas de droit valide (null)");
            }

            String max = Access.getMaxAccess(access, minimalAccess);

            if (!access.equals(max)) {
                throw new NoHabilitationException(
                        "Vous ne possdez pas les privilges necessaire pour executer cette methode. Le niveau minimal requis est "
                                + minimalAccess + ", vous possdez seulement le niveau " + max);
            }
        }

    }

    /**
     * Verfie le niveau d'habilitation, si le droit retourne au moins un acce en READONLY / READWRITE / YES
     * 
     * @param request requette
     * @param accessKey droit d'acces
     * @throws NoHabilitationException Probleme pour retouver le niveau d'habilitation
     * @since 2.4.3
     */
    public void checkHabilitation(final HttpServletRequest request, String accessKey)
            throws NoHabilitationException {
        checkHabilitation(request, accessKey, Access.READONLY);
    }
}