[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