[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