[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