diff --git a/pom.xml b/pom.xml
index 626821d..dd40040 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
fr.abes
sudoc
- 1.1.1
+ 1.1.2-SNAPSHOT
jar
sudoc
webservices de récupération de ppns dans le sudoc
diff --git a/src/main/java/fr/abes/sudoc/component/BaseXmlFunctionsCaller.java b/src/main/java/fr/abes/sudoc/component/BaseXmlFunctionsCaller.java
index 5f67ece..d5bae4c 100644
--- a/src/main/java/fr/abes/sudoc/component/BaseXmlFunctionsCaller.java
+++ b/src/main/java/fr/abes/sudoc/component/BaseXmlFunctionsCaller.java
@@ -44,6 +44,7 @@ public List datToPpn(Integer date, String auteur, String titre) throws U
if (titre == null || titre.isEmpty()) {
throw new IllegalArgumentException("Le titre ne peut pas être null");
}
+ log.debug("params : date : " + date + " auteur : " + auteur + " titre : " + titre);
StringBuilder request = new StringBuilder("SELECT DISTINCT a.PPN");
if (date != null) {
request.append(" FROM AUTORITES.biblio_table_generale a");
diff --git a/src/main/java/fr/abes/sudoc/utils/Utilitaire.java b/src/main/java/fr/abes/sudoc/utils/Utilitaire.java
index 43bd104..8a6e781 100644
--- a/src/main/java/fr/abes/sudoc/utils/Utilitaire.java
+++ b/src/main/java/fr/abes/sudoc/utils/Utilitaire.java
@@ -96,7 +96,7 @@ public static String replaceDiacritics(String src) {
public static String formatString(String chaine) {
if (chaine != null && !chaine.isEmpty()) {
- return suppReservedWords(suppCaracters(chaine));
+ return ajoutNearBetweenWords(banalisationReservedWords(suppCaracters(chaine)));
}
return chaine;
}
@@ -112,12 +112,21 @@ private static String suppCaracters(String chaine) {
return chaine.replaceAll(regex, "");
}
- private static String suppReservedWords(String chaine) {
- List wordsToRemove = Arrays.asList("ABOUT", "ACCUM", "AND", "BT", "BTG", "BTI", "BTP", "EQUIV", "FUZZY", "HASPATH", "INPATH", "MDATA", "MINUS", "NEAR", "NOT", "NT", "NTG", "NTI", "NTP", "OR", "PATTERN", "PT", "RT", "SQE", "SYN", "TR", "TRSYN", "TT", "WITHIN");
- // Construire une expression régulière avec les caractères à supprimer
- String regex = "\\b(" + String.join("|", wordsToRemove) + ")\\b";
- return chaine.replaceAll("(?i)" + regex, "").replaceAll("\\s+", " ").trim();
+ private static String banalisationReservedWords(String chaine) {
+ List reservedWords = Arrays.asList("ABOUT", "ACCUM", "AND", "BT", "BTG", "BTI", "BTP", "EQUIV", "FUZZY", "HASPATH", "INPATH", "MDATA", "MINUS", "NEAR", "NOT", "NT", "NTG", "NTI", "NTP", "OR", "PATTERN", "PT", "RT", "SQE", "SYN", "TR", "TRSYN", "TT", "WITHIN");
+ // Transformer la liste des mots réservés en une expression régulière
+ String regex = "\\b(" + String.join("|", reservedWords) + ")\\b";
+
+ // Remplacer les mots réservés par eux-mêmes entourés d'accolades
+ return chaine.toUpperCase().replaceAll(regex, "{$1}");
+ }
+
+ private static String ajoutNearBetweenWords(String chaine) {
+ // Split la chaîne en mots en éliminant les espaces multiples
+ String[] words = chaine.trim().split("\\s+");
+ // Utilise String.join pour insérer "NEAR" entre les mots
+ return String.join(" NEAR ", words);
}
diff --git a/src/test/java/fr/abes/sudoc/utils/UtilitaireTest.java b/src/test/java/fr/abes/sudoc/utils/UtilitaireTest.java
index 98fde46..cb036e9 100644
--- a/src/test/java/fr/abes/sudoc/utils/UtilitaireTest.java
+++ b/src/test/java/fr/abes/sudoc/utils/UtilitaireTest.java
@@ -110,8 +110,8 @@ void testReplaceDiacritics() {
@Test
@DisplayName("test reformatage chaine DAT")
void testReformatageChaineDat() {
- Assertions.assertEquals("Assez de ces fichus TU", Utilitaire.formatString("Assez ! de _ ces ~fichus *TU"));
- Assertions.assertEquals("Je suis content", Utilitaire.formatString("Je AND suis! WITHIN content"));
- Assertions.assertEquals("Je suis content", Utilitaire.formatString("Je AND suis! 'WITHIN' content"));
+ Assertions.assertEquals("Assez NEAR de NEAR ces NEAR fichus NEAR TU".toUpperCase(), Utilitaire.formatString("Assez ! de _ ces ~fichus *TU"));
+ Assertions.assertEquals("Je NEAR {AND} NEAR suis NEAR {WITHIN} NEAR content".toUpperCase(), Utilitaire.formatString("Je AND suis! within content"));
+ Assertions.assertEquals("Je NEAR {AND} NEAR suis NEAR {WITHIN} NEAR content".toUpperCase(), Utilitaire.formatString("Je AND suis! 'WITHIN' content"));
}
}