[Castore-commits] RechercheAvanceeAction.java 1.12 1.13

Céline BENOIT cbenoit at adullact1.hosting.cri74.org
Ven 1 Déc 15:32:42 CET 2006


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

Modified Files:
	RechercheAvanceeAction.java 
Log Message:
Ajout de la gestion multifond tout en gardant la possibité de rester en recherche monofond

Index: RechercheAvanceeAction.java
===================================================================
RCS file: /cvsroot/castore/castore-struts/src/java/fr/emn/castor/struts/actions/recherches/RechercheAvanceeAction.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** RechercheAvanceeAction.java	16 Aug 2006 14:20:43 -0000	1.12
--- RechercheAvanceeAction.java	1 Dec 2006 14:32:40 -0000	1.13
***************
*** 62,65 ****
--- 62,66 ----
  import fr.emn.castor.documents.DocumentsConstants.StateEnum;
  import fr.emn.castor.groupes.IGroupe;
+ import fr.emn.castor.multifonds.RechercheMultifondsAvancee;
  import fr.emn.castor.recherche.IRecherche;
  import fr.emn.castor.recherche.RechercheConstants;
***************
*** 78,279 ****
  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
--- 79,324 ----
  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"));
!         }
  
!         // Recherche monofond ou multifond ?
!         List<HashMap<String, String>> resultsRecherche;
!         RechercheMultifondsAvancee rechMultifonds = new RechercheMultifondsAvancee();
!         String[] listeFondsChoisis = rechercheForm
!             .getListeRechercheFondsChoisis();
!         if (rechMultifonds.isRechercheMultifondsActivee()
!                 && listeFondsChoisis != null) {
!             // recherche multifonds a true -> Utilisation WS               
!             // récupérer les etablissements du fichiers URL choisis 
!             Collection<String> listeURLMultifonds = fr.emn.castor.common.Utils
!                 .transStringArrayToList(listeFondsChoisis);
  
!             // recherche dans les fonds fournis dans URLMultifonds.properties
!             resultsRecherche = rechMultifonds.runRechercheMultifondsAvancee(
!                 listeURLMultifonds, query);
  
!         } else {
!             // recherche multifonds a false
!             // ->Utilisation de la recherche avancee implemente dans castore-core            
!             // on effectue la recherche dans le fonds !!
!             IRecherche recFac = CastorProxy.getModuleRecherche(request
!                 .getSession());
  
!             resultsRecherche = recFac.search(query);
!         }
  
!         List<DocumentBean> docResultatEnForme = new ArrayList<DocumentBean>();
!         if (resultsRecherche != null && resultsRecherche.size() > 0) {
!             // Mise en forme des resultats
!             for (Map<String, String> resultItem : resultsRecherche) {
!                 // 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();
  
!         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);
  
!         }
  
!         // Recherche monofond ou multifond ?
!         List<HashMap<String, String>> resultsRecherche;
!         RechercheMultifondsAvancee rechMultifonds = new RechercheMultifondsAvancee();
!         String[] listeFondsChoisis = rechercheForm
!             .getListeRechercheFondsChoisis();
!         if (rechMultifonds.isRechercheMultifondsActivee()
!                 && listeFondsChoisis != null) {
!             // recherche multifonds a true -> Utilisation WS               
!             // récupérer les etablissements du fichiers URL choisis 
!             Collection<String> listeURLMultifonds = fr.emn.castor.common.Utils
!                 .transStringArrayToList(listeFondsChoisis);
  
!             // recherche dans les fonds fournis dans URLMultifonds.properties
!             resultsRecherche = rechMultifonds.runRechercheMultifondsAvancee(
!                 listeURLMultifonds, query);
  
!         } else {
!             // recherche multifonds a false
!             // ->Utilisation de la recherche avancee implemente dans castore-core            
!             // on effectue la recherche dans le fonds !!
!             resultsRecherche = recFac.search(query);
!         }
  
!         List<DocumentBean> docResultatEnForme = new ArrayList<DocumentBean>();
!         if (resultsRecherche != null && resultsRecherche.size() > 0) {
!             // Mise en forme des resultats
!             for (Map<String, String> resultItem : resultsRecherche) {
!                 // 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) {
!         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