[Castore-commits] RechercheAvanceeAction.java 1.10 1.11

Neman OULD SID'AHMED neman at adullact1.hosting.cri74.org
Mer 16 Aou 16:13:48 CEST 2006


Update of /cvsroot/castore/castore-struts/src/java/fr/emn/castor/struts/actions/recherches
In directory adullact1:/tmp/cvs-serv21722/src/java/fr/emn/castor/struts/actions/recherches

Modified Files:
	RechercheAvanceeAction.java 
Log Message:
Ajout d'une methode pour la recherche sur tous les champs

Index: RechercheAvanceeAction.java
===================================================================
RCS file: /cvsroot/castore/castore-struts/src/java/fr/emn/castor/struts/actions/recherches/RechercheAvanceeAction.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** RechercheAvanceeAction.java	13 Jun 2006 15:54:55 -0000	1.10
--- RechercheAvanceeAction.java	16 Aug 2006 14:13:46 -0000	1.11
***************
*** 48,51 ****
--- 48,59 ----
  import java.util.Set;
  
+ import java.util.ArrayList;
+ import java.util.Collection;
+ import java.util.HashMap;
+ import java.util.Iterator;
+ import java.util.List;
+ import java.util.Map;
+ import java.util.Set;
+ 
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
***************
*** 53,60 ****
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
- import org.apache.struts.action.Action;
  import org.apache.struts.action.ActionForm;
  import org.apache.struts.action.ActionForward;
  import org.apache.struts.action.ActionMapping;
  
  import fr.emn.castor.common.Utils;
--- 61,68 ----
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.struts.action.ActionForm;
  import org.apache.struts.action.ActionForward;
  import org.apache.struts.action.ActionMapping;
+ import org.apache.struts.actions.LookupDispatchAction;
  
  import fr.emn.castor.common.Utils;
***************
*** 72,187 ****
  /**
   * Action de recherche simple...
!  *
   * @author $Author$
   * @version $Revision$
   */
! public class RechercheAvanceeAction extends Action {
  
!     /** le logger. */
!     private static Log log = LogFactory.getLog(RechercheAvanceeAction.class);
  
!     /** la liste des groupes dans lequel est cet utilisateur. */
!     private Collection userInGroupes;
  
!     /**
!      * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping,
!      *      org.apache.struts.action.ActionForm,
!      *      javax.servlet.http.HttpServletRequest,
!      *      javax.servlet.http.HttpServletResponse)
!      */
!     public final ActionForward execute(
!             final ActionMapping mapping, final ActionForm form,
!             final HttpServletRequest request,
!             final HttpServletResponse response) throws Exception {
  
!         String userLogin = (String) request.getSession().getAttribute(
!             "user_online");
!         IGroupe groupeFac = CastorProxy
!             .getModuleGroupe(request.getSession());
!         List<String> groupesUser = groupeFac.getGroupesWithUser(userLogin);
!         this.userInGroupes = new ArrayList<String>(groupesUser);
  
!         RechercheAvanceeForm rechercheForm = (RechercheAvanceeForm) form;
!         // mise en forme de la requete
!         HashMap<String, String> query = new HashMap<String, String>();
!         query.put(
!             UsersConstants.TYPE_RECHERCHE,
!             UsersConstants.TYPE_RECHERCHE_AVANCEE);
!         //recuperation des valeurs remplies
!         Map searchMap = rechercheForm.getSearchMap();
!         Set keys = searchMap.keySet();
!         for (Iterator iterKeys = keys.iterator(); iterKeys.hasNext();) {
!             String key = (String) iterKeys.next();
!             Map valueMap = (Map) searchMap.get(key);
!             query.put(key, (String) valueMap.get("value"));
!         }
  
!         List<DocumentBean> docResultatEnForme = new ArrayList<DocumentBean>();
  
!         // on effectue la recherche dans le fonds !!
!         IRecherche recFac = CastorProxy.getModuleRecherche(request
!             .getSession());
  
!         List<HashMap<String, String>> results = recFac.search(query);
  
!         if (results != null && results.size() > 0) {
!             //Mise en forme des resultats
!             for (Map<String, String> resultItem : results) {
!                 //FIXME Est-ce utile de faire une recopie ?
!                 HashMap<String, String> resultElement = new HashMap<String, String>(
!                     resultItem);
  
!                 String docId = (String) resultElement
!                     .get(RechercheConstants.KEYWORD_ID);
!                 String state = this.getBeanState(docId, request);
!                 float score = 100 * Float.parseFloat((String) resultElement
!                     .get(RechercheConstants.SEARCH_SCORE));
!                 double arrondi = (Math.round(score * Math.pow(10, 1)))
!                         / (Math.pow(10, 1));
  
!                 String auteurs = (String) resultElement
!                     .get(RechercheConstants.KEYWORD_AUTEUR);
  
!                 DocumentBean docBean = new DocumentBean(
!                     docId, userLogin, state, arrondi, Utils
!                         .transformMultiNoticeValueToCollection(auteurs));
!                 docResultatEnForme.add(docBean);
!             }
!         }
  
!         //Transmission du résultat
!         rechercheForm.setResultat(docResultatEnForme);
  
!         //mise a jour de la liste des requetes
!         rechercheForm.majListeRequete(request);
  
!         return mapping.getInputForward();
!     }
  
!     private String getBeanState(String idDoc, HttpServletRequest request) {
!         //        fr.emn.castor.documents.Facade fDoc =
!         // fr.emn.castor.documents.Facade.getInstance();
!         IDocuments fDoc = CastorProxy.getModuleDocuments(request
!             .getSession());
!         StateEnum docState = null;
!         try {
!             docState = fDoc.getStateOfDoc(idDoc);
!         } catch (UsersException e) {
!             if (log.isErrorEnabled()) {
!                 log
!                     .error("Erreur lors de la recherche de l'état du document"
!                             + e);
!             }
!         }
!         if (docState == StateEnum.PRIVATE) {
!             return DocumentBean.ETAT_DOC_PRV;
!         } else if (docState == StateEnum.VALIDATED) {
!             return DocumentBean.ETAT_DOC_ACPT;
!         } else if (docState == StateEnum.REFUSED) {
!             return DocumentBean.ETAT_DOC_RFS;
!         } else {
!             return DocumentBean.ETAT_DOC_ATT;
!         }
!     }
  
  }
\ No newline at end of file
--- 80,287 ----
  /**
   * Action de recherche simple...
!  * 
   * @author $Author$
   * @version $Revision$
   */
! public class RechercheAvanceeAction extends LookupDispatchAction {
  
! 	/** le logger. */
! 	private static Log log = LogFactory.getLog(RechercheAvanceeAction.class);
  
! 	/** la liste des groupes dans lequel est cet utilisateur. */
! 	private Collection userInGroupes;
  
! 	/**
! 	 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping,
! 	 *      org.apache.struts.action.ActionForm,
! 	 *      javax.servlet.http.HttpServletRequest,
! 	 *      javax.servlet.http.HttpServletResponse)
! 	 */
! 	public final ActionForward execute(final ActionMapping mapping,
! 			final ActionForm form, final HttpServletRequest request,
! 			final HttpServletResponse response) throws Exception {
! 		if (request.getParameter("choixRecherche") != null)
! 			return super.execute(mapping, form, request, response);
! 		return mapping.getInputForward();
! 	}
  
! 	/**
! 	 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping,
! 	 *      org.apache.struts.action.ActionForm,
! 	 *      javax.servlet.http.HttpServletRequest,
! 	 *      javax.servlet.http.HttpServletResponse)
! 	 */
! 	public final ActionForward rechercheAvancee(final ActionMapping mapping,
! 			final ActionForm form, final HttpServletRequest request,
! 			final HttpServletResponse response) throws Exception {
! 		String userLogin = (String) request.getSession().getAttribute(
! 				"user_online");
! 		IGroupe groupeFac = CastorProxy.getModuleGroupe(request.getSession());
! 		List<String> groupesUser = groupeFac.getGroupesWithUser(userLogin);
! 		this.userInGroupes = new ArrayList<String>(groupesUser);
  
! 		RechercheAvanceeForm rechercheForm = (RechercheAvanceeForm) form;
! 		// mise en forme de la requete
! 		HashMap<String, String> query = new HashMap<String, String>();
! 		query.put(UsersConstants.TYPE_RECHERCHE,
! 				UsersConstants.TYPE_RECHERCHE_AVANCEE);
! 		// recuperation des valeurs remplies
! 		Map searchMap = rechercheForm.getSearchMap();
! 		Set keys = searchMap.keySet();
! 		for (Iterator iterKeys = keys.iterator(); iterKeys.hasNext();) {
! 			String key = (String) iterKeys.next();
! 			Map valueMap = (Map) searchMap.get(key);
! 			query.put(key, (String) valueMap.get("value"));
! 		}
! 		List<DocumentBean> docResultatEnForme = new ArrayList<DocumentBean>();
  
! 		// on effectue la recherche dans le fonds !!
! 		IRecherche recFac = CastorProxy
! 				.getModuleRecherche(request.getSession());
  
! 		List<HashMap<String, String>> results = recFac.search(query);
  
! 		if (results != null && results.size() > 0) {
! 			// Mise en forme des resultats
! 			for (Map<String, String> resultItem : results) {
! 				// FIXME Est-ce utile de faire une recopie ?
! 				HashMap<String, String> resultElement = new HashMap<String, String>(
! 						resultItem);
  
! 				String docId = (String) resultElement
! 						.get(RechercheConstants.KEYWORD_ID);
! 				String state = this.getBeanState(docId, request);
! 				float score = 100 * Float.parseFloat((String) resultElement
! 						.get(RechercheConstants.SEARCH_SCORE));
! 				double arrondi = (Math.round(score * Math.pow(10, 1)))
! 						/ (Math.pow(10, 1));
  
! 				String auteurs = (String) resultElement
! 						.get(RechercheConstants.KEYWORD_AUTEUR);
  
! 				DocumentBean docBean = new DocumentBean(docId, userLogin,
! 						state, arrondi, Utils
! 								.transformMultiNoticeValueToCollection(auteurs));
! 				docResultatEnForme.add(docBean);
! 			}
! 		}
  
! 		// Transmission du résultat
! 		rechercheForm.setResultat(docResultatEnForme);
  
! 		// mise a jour de la liste des requetes
! 		rechercheForm.majListeRequete(request);
! 		return mapping.getInputForward();
  
! 	}
  
! 	/**
! 	 * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping,
! 	 *      org.apache.struts.action.ActionForm,
! 	 *      javax.servlet.http.HttpServletRequest,
! 	 *      javax.servlet.http.HttpServletResponse)
! 	 */
! 	public final ActionForward rechercheAll(final ActionMapping mapping,
! 			final ActionForm form, final HttpServletRequest request,
! 			final HttpServletResponse response) throws Exception {
! 		RechercheAvanceeForm rechercheForm = (RechercheAvanceeForm) form;
! 		String userLogin = (String) request.getSession().getAttribute(
! 				"user_online");
! 		IGroupe groupeFac = CastorProxy.getModuleGroupe(request.getSession());
! 		List<String> groupesUser = groupeFac.getGroupesWithUser(userLogin);
! 		this.userInGroupes = new ArrayList<String>(groupesUser);
  
! 		// mise en forme de la requete
! 		HashMap<String, String> query = new HashMap<String, String>();
! 		query.put(UsersConstants.TYPE_RECHERCHE,
! 				UsersConstants.TYPE_RECHERCHE_AVANCEE);
! 		// recuperation des valeurs remplies
! 		String requette = rechercheForm.getRequette();
! 
! 		// query.put("title", requette);
! 
! 		List<DocumentBean> docResultatEnForme = new ArrayList<DocumentBean>();
! 
! 		// on effectue la recherche dans le fonds !!
! 		IRecherche recFac = CastorProxy
! 				.getModuleRecherche(request.getSession());
! 		List listeChamps = recFac.getFieldNames();
! 		Iterator iter = listeChamps.iterator();
! 		while (iter.hasNext()) {
! 			String element = (String) iter.next();
! 			if (!element.equals(RechercheConstants.KEYWORD_CONTENT))
! 
! 				query.put(element, requette);
! 
! 		}
! 
! 		List<HashMap<String, String>> results = recFac.search(query);
! 
! 		if (results != null && results.size() > 0) {
! 			// Mise en forme des resultats
! 			for (Map<String, String> resultItem : results) {
! 				// FIXME Est-ce utile de faire une recopie ?
! 				HashMap<String, String> resultElement = new HashMap<String, String>(
! 						resultItem);
! 
! 				String docId = (String) resultElement
! 						.get(RechercheConstants.KEYWORD_ID);
! 				String state = this.getBeanState(docId, request);
! 				float score = 100 * Float.parseFloat((String) resultElement
! 						.get(RechercheConstants.SEARCH_SCORE));
! 				double arrondi = (Math.round(score * Math.pow(10, 1)))
! 						/ (Math.pow(10, 1));
! 
! 				String auteurs = (String) resultElement
! 						.get(RechercheConstants.KEYWORD_AUTEUR);
! 
! 				DocumentBean docBean = new DocumentBean(docId, userLogin,
! 						state, arrondi, Utils
! 								.transformMultiNoticeValueToCollection(auteurs));
! 				docResultatEnForme.add(docBean);
! 			}
! 		}
! 
! 		// Transmission du résultat
! 		rechercheForm.setResultat(docResultatEnForme);
! 
! 		// mise a jour de la liste des requetes
! 		rechercheForm.majListeRequete(request);
  
+ 		return mapping.getInputForward();
+ 	}
+ 
+ 	private String getBeanState(String idDoc, HttpServletRequest request) {
+ 		// fr.emn.castor.documents.Facade fDoc =
+ 		// fr.emn.castor.documents.Facade.getInstance();
+ 		IDocuments fDoc = CastorProxy.getModuleDocuments(request.getSession());
+ 		StateEnum docState = null;
+ 		try {
+ 			docState = fDoc.getStateOfDoc(idDoc);
+ 		} catch (UsersException e) {
+ 			if (log.isErrorEnabled()) {
+ 				log.error("Erreur lors de la recherche de l'état du document"
+ 						+ e);
+ 			}
+ 		}
+ 		if (docState == StateEnum.PRIVATE) {
+ 			return DocumentBean.ETAT_DOC_PRV;
+ 		} else if (docState == StateEnum.VALIDATED) {
+ 			return DocumentBean.ETAT_DOC_ACPT;
+ 		} else if (docState == StateEnum.REFUSED) {
+ 			return DocumentBean.ETAT_DOC_RFS;
+ 		} else {
+ 			return DocumentBean.ETAT_DOC_ATT;
+ 		}
+ 	}
+ 
+ 	/**
+ 	 * @see org.apache.struts.actions.LookupDispatchAction#getKeyMethodMap()
+ 	 */
+ 	public final Map getKeyMethodMap() {
+ 		Map<String, String> map = new HashMap<String, String>();
+ 		map.put("message.recherche.submit", "rechercheAvancee");
+ 		map.put("message.rechercheAll.submit", "rechercheAll");
+ 		return map;
+ 	}
  }
\ No newline at end of file




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