[Castore-commits] DocumentsUtils.java NONE 1.1 PortletUtils.java NONE 1.1

Arnaud Thimel thimel at adullact1.hosting.cri74.org
Mer 14 Juin 20:28:01 CEST 2006


Update of /cvsroot/castore/castore-portlets/src/java/fr/emn/castor/portlets/common
In directory adullact1:/tmp/cvs-serv8222/src/java/fr/emn/castor/portlets/common

Added Files:
	DocumentsUtils.java PortletUtils.java 
Log Message:
Commit de castore-portlets

--- NEW FILE: DocumentsUtils.java ---
/*
 * $Id: DocumentsUtils.java,v 1.1 2006/06/14 18:27:58 thimel Exp $
 *
 * Plateforme CASTORE
 * CeCILL Copyright (C) 2005-2006 by EMN
 * Made by Stéphane Bouchet
 * Web site = http://www.emn.fr/castore
 * Contact = Cédric Dumas, e-mail = Cedric.Dumas at emn.fr
 *
 * Version 1.0 (1er mars 2005)
 *
 * Ce logiciel est un programme informatique servant à créer une plateforme
 * open-source de bibliothèque numérique XML pour Conserver, Valoriser et
 * Diffuser le patrimoine documentaire de votre institut.
 *
 * Ce logiciel est régi par la licence CeCILL soumise au droit français et
 * respectant les principes de diffusion des logiciels libres. Vous pouvez
 * utiliser, modifier et/ou redistribuer ce programme sous les conditions de la
 * licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA sur le site
 * "http://www.cecill.info". En contrepartie de l'accessibilité au code source
 * et des droits de copie, de modification et de redistribution accordés par
 * cette licence, il n'est offert aux utilisateurs qu'une garantie limitée. Pour
 * les mêmes raisons, seule une responsabilité restreinte pèse sur l'auteur du
 * programme, le titulaire des droits patrimoniaux et les concédants successifs.
 * A cet égard l'attention de l'utilisateur est attirée sur les risques associés
 * au chargement, à l'utilisation, à la modification et/ou au développement et à
 * la reproduction du logiciel par l'utilisateur étant donné sa spécificité de
 * logiciel libre, qui peut le rendre complexe à manipuler et qui le réserve
 * donc à des développeurs et des professionnels avertis possédant des
 * connaissances informatiques approfondies. Les utilisateurs sont donc invités
 * à charger et tester l'adéquation du logiciel à leurs besoins dans des
 * conditions permettant d'assurer la sécurité de leurs systèmes et ou de leurs
 * données et, plus généralement, à l'utiliser et l'exploiter dans les mêmes
 * conditions de sécurité. Le fait que vous puissiez accéder à cet en-tête
 * signifie que vous avez pris connaissance de la licence CeCILL, et que vous en
 * avez accepté les termes.
 *
 */

package fr.emn.castor.portlets.common;

import static fr.emn.castor.common.Constants.VraiFauxEnum.VRAI;
import static fr.emn.castor.documents.DocumentsConstants.StateEnum.PRIVATE;
import static fr.emn.castor.documents.DocumentsConstants.StateEnum.REFUSED;
import static fr.emn.castor.documents.DocumentsConstants.StateEnum.VALIDATED;
import static fr.emn.castor.documents.DocumentsConstants.StateEnum.VALIDATION_IN_PROGRESS;
import static fr.emn.castor.presentation.documents.DocumentBean.ETAT_DOC_ACPT;
import static fr.emn.castor.presentation.documents.DocumentBean.ETAT_DOC_ATT;
import static fr.emn.castor.presentation.documents.DocumentBean.ETAT_DOC_PRV;
import static fr.emn.castor.presentation.documents.DocumentBean.ETAT_DOC_RFS;
import static fr.emn.castor.users.UsersConstants.INFO_PROFIL_DOCS_ACCEPTES;
import static fr.emn.castor.users.UsersConstants.INFO_PROFIL_DOCS_ENATTENTE;
import static fr.emn.castor.users.UsersConstants.INFO_PROFIL_DOCS_PRIVES;
import static fr.emn.castor.users.UsersConstants.INFO_PROFIL_DOCS_REFUSES;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import fr.emn.castor.common.CoreProxy;
import fr.emn.castor.documents.IDocuments;
import fr.emn.castor.documents.DocumentsConstants.StateEnum;
import fr.emn.castor.presentation.documents.DocumentBean;
import fr.emn.castor.presentation.documents.DocumentBeanFactory;
import fr.emn.castor.users.IUser;
import fr.emn.castor.users.UsersException;

/**
 * Utilitaires pour les Documents
 */
public class DocumentsUtils {

    private static Log log = LogFactory.getLog(DocumentsUtils.class);

    private static Map<String, String> stateProfilConverter;
    static {
        stateProfilConverter = new HashMap<String, String>();
        stateProfilConverter.put(INFO_PROFIL_DOCS_ACCEPTES, ETAT_DOC_ACPT);
        stateProfilConverter.put(INFO_PROFIL_DOCS_ENATTENTE, ETAT_DOC_ATT);
        stateProfilConverter.put(INFO_PROFIL_DOCS_REFUSES, ETAT_DOC_RFS);
        stateProfilConverter.put(INFO_PROFIL_DOCS_PRIVES, ETAT_DOC_PRV);
    }

    private static Map<StateEnum, String> stateEnumConverter;
    static {
        stateEnumConverter = new HashMap<StateEnum, String>();
        stateEnumConverter.put(VALIDATED, ETAT_DOC_ACPT);
        stateEnumConverter.put(VALIDATION_IN_PROGRESS, ETAT_DOC_ATT);
        stateEnumConverter.put(REFUSED, ETAT_DOC_RFS);
        stateEnumConverter.put(PRIVATE, ETAT_DOC_PRV);
    }

    /**
     * @see #getDocuments(String, List)
     */
    public static Map<String, DocumentBean> getDocumentsWithState(
            String userId, String ... states) {
        if (states == null) {
            return null;
        }
        return getDocumentsWithState(userId, Arrays.asList(states));
    }

    /**
     * Renvoie une Map avec les DocumentBean correpondant aux etats recherches
     * @param userId l'identifiant de l'utilisateur
     * @param states la liste des etats recherches
     * @return une Map ayant pour cle les identifiants des documents et pour
     * valeur les DocumentBean correspondants
     */
    public static Map<String, DocumentBean> getDocumentsWithState(
            String userId, List<String> states) {
        if (states == null) {
            return null;
        }
        Map<String, DocumentBean> docs =
            new HashMap<String, DocumentBean>(states.size());
        IUser userFacade = CoreProxy.getModuleUtilisateur(userId);
        IDocuments docFacade = CoreProxy.getModuleDocuments(userId);
        Map profilMap = userFacade.getProfilMap(userId);
        for (String state : states) {
            List<String> docList =
                (List<String>)profilMap.get(state);
            for (String docId : docList) {
                if (VRAI.equals(docFacade.docExist(docId))) {
                    DocumentBean doc = DocumentBeanFactory.getDocumentBean(
                            docId, userId, stateProfilConverter.get(state));
                    docs.put(docId, doc);
                }
            }
        }
        return docs;
    }

    /**
     * @see #getDocumentsWithState(String, List)
     */
    public static List<DocumentBean> getDocuments(
            String userId, String ... docIds) {
        if (docIds == null) {
            return null;
        }
        return getDocuments(userId, Arrays.asList(docIds));
    }

    /**
     * Renvoie une liste de DocumentBean constituee a partir des d'identifiant
     * passes en param. Si il n'y a aucun document specifie, le resultat vaudra
     * null.
     * @param userId l'identifiant de l'utilisateur
     * @param docIds les identifiants des documents
     * @return Une liste des DocumentBean ou null si docIds vaut null
     */
    public static List<DocumentBean> getDocuments(
            String userId, List<String> docIds) {
        if (docIds == null) {
            return null;
        }
        List<DocumentBean> results = null;
        IDocuments docFacade = CoreProxy.getModuleDocuments(userId);
        results = new ArrayList<DocumentBean>(docIds.size());
        for (String docId : docIds) {
            if (VRAI.equals(docFacade.docExist(docId))) {
                StateEnum state = null;
                try {
                    state = docFacade.getStateOfDoc(docId);
                } catch (UsersException ue) {
                    PortletUtils.log(ue, log);
                }
                if (state == null || !stateEnumConverter.containsKey(state)) {
                    state = VALIDATION_IN_PROGRESS;
                }
                String stateForBean = stateEnumConverter.get(state);
                DocumentBean doc = DocumentBeanFactory.
                    getDocumentBean(docId, userId, stateForBean);
                results.add(doc);
            }
        }
        return results;
    }

} //DocumentsUtil

--- NEW FILE: PortletUtils.java ---
/*
 * $Id: PortletUtils.java,v 1.1 2006/06/14 18:27:58 thimel Exp $
 *
 * Plateforme CASTORE
 * CeCILL Copyright (C) 2005-2006 by EMN
 * Made by Stéphane Bouchet
 * Web site = http://www.emn.fr/castore
 * Contact = Cédric Dumas, e-mail = Cedric.Dumas at emn.fr
 *
 * Version 1.0 (1er mars 2005)
 *
 * Ce logiciel est un programme informatique servant à créer une plateforme
 * open-source de bibliothèque numérique XML pour Conserver, Valoriser et
 * Diffuser le patrimoine documentaire de votre institut.
 *
 * Ce logiciel est régi par la licence CeCILL soumise au droit français et
 * respectant les principes de diffusion des logiciels libres. Vous pouvez
 * utiliser, modifier et/ou redistribuer ce programme sous les conditions de la
 * licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA sur le site
 * "http://www.cecill.info". En contrepartie de l'accessibilité au code source
 * et des droits de copie, de modification et de redistribution accordés par
 * cette licence, il n'est offert aux utilisateurs qu'une garantie limitée. Pour
 * les mêmes raisons, seule une responsabilité restreinte pèse sur l'auteur du
 * programme, le titulaire des droits patrimoniaux et les concédants successifs.
 * A cet égard l'attention de l'utilisateur est attirée sur les risques associés
 * au chargement, à l'utilisation, à la modification et/ou au développement et à
 * la reproduction du logiciel par l'utilisateur étant donné sa spécificité de
 * logiciel libre, qui peut le rendre complexe à manipuler et qui le réserve
 * donc à des développeurs et des professionnels avertis possédant des
 * connaissances informatiques approfondies. Les utilisateurs sont donc invités
 * à charger et tester l'adéquation du logiciel à leurs besoins dans des
 * conditions permettant d'assurer la sécurité de leurs systèmes et ou de leurs
 * données et, plus généralement, à l'utiliser et l'exploiter dans les mêmes
 * conditions de sécurité. Le fait que vous puissiez accéder à cet en-tête
 * signifie que vous avez pris connaissance de la licence CeCILL, et que vous en
 * avez accepté les termes.
 *
 */

package fr.emn.castor.portlets.common;

import java.util.Collection;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

import org.apache.commons.logging.Log;

import fr.emn.castor.common.tree.Composite;

/**
 * Une classe d'utilitaires pour les differentes Portlets. Regroupe notamment
 * les methodes pour le logging.
 */
public class PortletUtils {

    /**
     * Log l'objet passe en parametre dans le log specifie
     * @see{@link #log(Object, int, Log)}
     * @param toLog l'objet a logger
     * @param log le log
     */
    public static void log(Object toLog, Log log) {
        log(toLog, 0, log);
    }

    /**
     * Ecrit dans les logs l'objet specifie. En fonction du type d'objet,
     * differentes actions sont effectuees.
     * @param toLog
     * @param nbTabs
     * @param log
     */
    public static void log(Object toLog, int nbTabs, Log log) {
        if (toLog instanceof Throwable) {
            Throwable t = (Throwable)toLog;
            log.error(t.getMessage(), t);
        } else if (log.isInfoEnabled()) {
            if (toLog == null) {
                log.info(getTabs(nbTabs) + null);
            } else if (toLog instanceof Enumeration) {
                Enumeration en = (Enumeration)toLog;
                while (en.hasMoreElements()) {
                    log(en.nextElement(), nbTabs + 1, log);
                }
            } else if (toLog instanceof Collection) {
                for (Object o : (Collection)toLog) {
                    log.info(getTabs(nbTabs) + o.toString());
                    log(o, nbTabs+1, log);
                }
            } else if (toLog instanceof Map) {
                for (Entry entry : (Set<Entry>)((Map)toLog).entrySet()) {
                    log(entry.getKey(), nbTabs+1, log);
                    log(entry.getValue(), nbTabs+2, log);
                }
            } else if (toLog instanceof Composite) {
                log.info(getTabs(nbTabs) + toLog.toString());
                Composite c = (Composite)toLog;
                List<Composite> children = (List<Composite>)c.getChildren();
                for (Composite child : children) {
                    log(child, nbTabs+1, log);
                }
            } else {
                log.info(getTabs(nbTabs) + toLog.toString());
            }
        }
    }

    /**
     * Cree une String avec le nombre de tabulations demande
     * @param nbTabs
     * @return
     */
    private static String getTabs(int nbTabs) {
        String result = "";
        while (nbTabs > 0) {
            result += "\t";
            nbTabs--;
        }
        return result;
    }

} //PortletUtils




Plus d'informations sur la liste de diffusion Castore-commits