[Castore-commits] ComparateurCleMap.java NONE 1.1
RechercheMultifondsSimple.java NONE 1.1
ARechercheMultifonds.java NONE 1.1
RechercheMultifondsAvancee.java NONE 1.1
Céline BENOIT
cbenoit at adullact1.hosting.cri74.org
Ven 1 Déc 10:53:22 CET 2006
Update of /cvsroot/castore/castore-multifonds/src/java/fr/emn/castor/multifonds
In directory adullact1:/tmp/cvs-serv5040/src/java/fr/emn/castor/multifonds
Added Files:
ComparateurCleMap.java RechercheMultifondsSimple.java
ARechercheMultifonds.java RechercheMultifondsAvancee.java
Log Message:
Nouveau projet sur la gestion du multifond
--- NEW FILE: RechercheMultifondsAvancee.java ---
package fr.emn.castor.multifonds;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
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.Utils;
import fr.emn.castor.recherche.metier.RechercheException;
import fr.emn.castor.webservices.SearchInterface;
import fr.emn.castor.webservices.proxy.CastoreWebServicesFactory;
import fr.emn.castor.webservices.proxy.WebServicesProperties;
public class RechercheMultifondsAvancee extends ARechercheMultifonds {
/** le logger. */
private static Log log = LogFactory
.getLog(RechercheMultifondsAvancee.class);
/**
* Lancer la recherche avancee sur les fonds de castore présent dans la listeURLMultifonds
* @return la liste des résultats de la recherche classée par titre des documents
*/
public List<HashMap<String, String>> runRechercheMultifondsAvancee(
final Collection<String> listeRechercheFondsChoisis,
final Map<String, String> advancedSearchMap) {
List<HashMap<String, String>> listeResultats = new ArrayList<HashMap<String, String>>();
// Effectuer une recherche dans chaque fond de castore
for (String url : listeRechercheFondsChoisis) {
WebServicesProperties props = new WebServicesProperties(url);
// appeler l'interface du WebService de recherche
SearchInterface searchWS = CastoreWebServicesFactory
.createSearchWS(props);
// Creation du proxy
try {
HashMap<String, String>[] resultatArray = searchWS
.doAdvancedSearch(advancedSearchMap);
//fusion des résultats
// ajoute la liste des resultats pour ce fond aux autres resultats
listeResultats.addAll(Utils
.transHashMapArrayToList(resultatArray));
} catch (RechercheException e) {
if (log.isErrorEnabled()) {
log.error("Problème de recherche multifonds simple"
+ e.getMessage());
}
}
}
// classer les resultats obtenus
Collections.sort(listeResultats, new ComparateurCleMap());
return listeResultats;
}
}
--- NEW FILE: ARechercheMultifonds.java ---
package fr.emn.castor.multifonds;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.util.LabelValueBean;
import fr.emn.castor.common.Constants;
import fr.emn.castor.documents.DocumentsConstants;
public abstract class ARechercheMultifonds {
/** le logger. */
private static Log log = LogFactory.getLog(ARechercheMultifonds.class);
/**
* Indice pour déterminer si la recherche multifonds est activée
* @return true ou false
*/
public static boolean isRechercheMultifondsActivee() {
// Lecture du fichier de propriété contenant les URLs des services associés aux Castore
Properties prop = LoadPropertiesFilesURL();
Enumeration listeURLMultifondsCle = prop.keys();
Enumeration listeURLMultifondsValeur = prop.elements();
// recuperation de l'indice de recherche multifonds à true ou false
String cle = (String) listeURLMultifondsCle.nextElement();
String valeur = (String) listeURLMultifondsValeur.nextElement();
if (cle.equalsIgnoreCase("RechercheMultiFonds")
&& valeur.equalsIgnoreCase("true")) {
return true;
} else
return false;
}
/**
* Renvoie la liste des URLS des services utilisant Castore dans les différents établissements
* @return une collection contenant les noms des établissements + les URLs des services
*/
public static List<LabelValueBean> getListeURLMultifonds() {
// La liste complete des bases Castore disponibles de URL_MultiFonds.properties
List<LabelValueBean> listeRechercheMultifonds = new ArrayList<LabelValueBean>();
// Lecture du fichier de propriété contenant les URLs des services associés aux Castore
Properties prop = LoadPropertiesFilesURL();
// récupèration de la liste des URLs des établissements pour
// la recherche multifonds
Enumeration listeURLMultifondsCle = prop.keys();
Enumeration listeURLMultifondsValeur = prop.elements();
// recuperation de l'indice de recherche multifonds à true ou false
String cle = (String) listeURLMultifondsCle.nextElement();
String valeur = (String) listeURLMultifondsValeur.nextElement();
if (cle.equalsIgnoreCase("RechercheMultiFonds")
&& valeur.equalsIgnoreCase("true")) {
// initialisation de la listeRechercheMultifonds
if (listeRechercheMultifonds != null) {
while (listeURLMultifondsCle.hasMoreElements()
&& listeURLMultifondsValeur.hasMoreElements()) {
cle = (String) listeURLMultifondsCle.nextElement();
valeur = (String) listeURLMultifondsValeur.nextElement();
listeRechercheMultifonds.add(new LabelValueBean(
cle, valeur));
}
}
}
// trier par ordre alphabétique
Collections.sort(listeRechercheMultifonds);
return listeRechercheMultifonds;
}
/**
* Lecture des proprietes contenues dans le fichier URL_Multifonds.properties
* situé dans Constants.CASTOR_CONF_PATH
* @return
*/
private static Properties LoadPropertiesFilesURL() {
// lecture du fichier de propriété contenant les URLs des services associés aux Castore
Properties prop = new Properties();
try {
String fichierRessourceURL = Constants.CASTOR_CONF_PATH
+ Constants.FILE_SEPARATOR
+ DocumentsConstants.URL_MULTIFONDS + ".properties";
InputStream in = new FileInputStream(new File(
fichierRessourceURL));
prop.load(in);
in.close();
} catch (FileNotFoundException e) {
if (log.isErrorEnabled()) {
log
.error("Fichier de propriété non trouvé"
+ e.getMessage());
}
} catch (IOException e) {
if (log.isErrorEnabled()) {
log.error("Problème d'accès au fichier de propriété"
+ e.getMessage());
}
}
return prop;
}
}
--- NEW FILE: RechercheMultifondsSimple.java ---
package fr.emn.castor.multifonds;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import fr.emn.castor.common.Utils;
import fr.emn.castor.recherche.metier.RechercheException;
import fr.emn.castor.webservices.SearchInterface;
import fr.emn.castor.webservices.proxy.CastoreWebServicesFactory;
import fr.emn.castor.webservices.proxy.WebServicesProperties;
public class RechercheMultifondsSimple extends ARechercheMultifonds {
/** le logger. */
private static Log log = LogFactory
.getLog(RechercheMultifondsSimple.class);
/**
* Lancer la recherche simple sur les fonds de castore présent dans la listeURLMultifonds
* @return la liste des résultats de la recherche classée par titre des documents
*/
public List<HashMap<String, String>> runRechercheMultifondsSimple(
final Collection<String> listeRechercheFondsChoisis,
final String queryText, final boolean fullText) {
List<HashMap<String, String>> listeResultats = new ArrayList<HashMap<String, String>>();
// Effectuer une recherche dans chaque fond de castore
for (String url : listeRechercheFondsChoisis) {
WebServicesProperties props = new WebServicesProperties(url);
// appeler l'interface du WebService de recherche
SearchInterface searchWS = CastoreWebServicesFactory
.createSearchWS(props);
// Creation du proxy
try {
HashMap<String, String>[] resultatArray = searchWS
.doSimpleSearch(queryText, fullText);
// fusion des résultats
// ajoute la liste des resultats pour ce fond aux autres resultats
listeResultats.addAll(Utils
.transHashMapArrayToList(resultatArray));
} catch (RechercheException e) {
if (log.isErrorEnabled()) {
log.error("Problème de recherche multifonds simple"
+ e.getMessage());
}
}
}
// classer les resultats obtenus
Collections.sort(listeResultats, new ComparateurCleMap());
return listeResultats;
}
}
--- NEW FILE: ComparateurCleMap.java ---
package fr.emn.castor.multifonds;
import java.util.Comparator;
import java.util.Map;
/**
* Comparaison des titres contenus dans les map de resultats
* Pour trier les résultats
*
* @author $Author: cbenoit $
* @version $Revision: 1.1 $
*
*/
public class ComparateurCleMap implements Comparator<Map<String, String>> {
/**
* Comparateur de titre des map
* Pour trier par ordre alphabétique la List<hashMap<String, String>> par titres contenus dans les Map
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
public int compare(Map<String, String> o1, Map<String, String> o2) {
String title1 = o1.get("title");
String title2 = o2.get("title");
return (title1.compareTo(title2));
}
}
Plus d'informations sur la liste de diffusion Castore-commits