diff --git a/src/main/java/org/computate/frFR/java/EcrireApiClasse.java b/src/main/java/org/computate/frFR/java/EcrireApiClasse.java index bb8f6cd6..1f86c097 100644 --- a/src/main/java/org/computate/frFR/java/EcrireApiClasse.java +++ b/src/main/java/org/computate/frFR/java/EcrireApiClasse.java @@ -2015,7 +2015,7 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception { for(String classeRessourceAutorisation : classeRessourcesAutorisation) { tl(6, "groups.stream().map(group -> {"); - tl(9, "Matcher mPermission = Pattern.compile(\"^/(.*-?", StringUtils.substringBefore(classeRessourceAutorisation, "-"), "-(.*))-(", classeApiMethodeMethode, ")$\").matcher(group);"); + tl(9, "Matcher mPermission = Pattern.compile(\"^/(.*-?", StringUtils.substringBefore(classeRessourceAutorisation, "-"), "-([a-z0-9\\\\-]+))-(", classeApiMethodeMethode, ")$\").matcher(group);"); tl(9, "return mPermission.find() ? mPermission.group(1) : null;"); tl(8, "}).filter(v -> v != null).forEach(", i18nGlobale.getString(I18n.var_valeur), " -> {"); tl(9, "fqs.add(String.format(\"%s:%s\", \"", StringUtils.substringAfter(classeRessourceAutorisation, "-"), "\", ", i18nGlobale.getString(I18n.var_valeur), "));"); @@ -2222,7 +2222,7 @@ public void ecrireGenApiServiceImpl2(String classeLangueNom) throws Exception { for(String classeRessourceAutorisation : classeRessourcesAutorisation) { tl(6, "groups.stream().map(group -> {"); - tl(9, "Matcher mPermission = Pattern.compile(\"^/(.*-?", StringUtils.substringBefore(classeRessourceAutorisation, "-"), "-(.*))-(", classeApiMethodeMethode, ")$\").matcher(group);"); + tl(9, "Matcher mPermission = Pattern.compile(\"^/(.*-?", StringUtils.substringBefore(classeRessourceAutorisation, "-"), "-([a-z0-9\\\\-]+))-(", classeApiMethodeMethode, ")$\").matcher(group);"); tl(9, "return mPermission.find() ? mPermission.group(1) : null;"); tl(8, "}).filter(v -> v != null).forEach(", i18nGlobale.getString(I18n.var_valeur), " -> {"); tl(9, "fqs.add(String.format(\"%s:%s\", \"", StringUtils.substringAfter(classeRessourceAutorisation, "-"), "\", ", i18nGlobale.getString(I18n.var_valeur), "));"); diff --git a/src/main/java/org/computate/frFR/java/EcrirePageClasse.java b/src/main/java/org/computate/frFR/java/EcrirePageClasse.java index 123dc427..8ea1f042 100644 --- a/src/main/java/org/computate/frFR/java/EcrirePageClasse.java +++ b/src/main/java/org/computate/frFR/java/EcrirePageClasse.java @@ -1805,7 +1805,21 @@ public void pageCodeClasseJava(String langueNom, JsonObject langueConfig) throws tl(3, "json.put(\"", langueConfig.getString(I18n.var_classeNomSimple), "\", Optional.ofNullable(", classeNomSimple, ".", langueConfig.getString(I18n.var_classeNomSimple), classeNomSimple, "(var)).map(d -> StringUtils.isBlank(d) ? var : d).orElse(var));"); tl(3, "Object v = ", langueConfig.getString(I18n.var_listeRecherche), classeApiClasseNomSimple, "_.getRequest().getFilterQueries().stream().filter(fq -> fq.startsWith(", classeNomSimple, ".varIndexed", classeNomSimple, "(var) + \":\")).findFirst().map(s -> SearchTool.unescapeQueryChars(StringUtils.substringAfter(s, \":\"))).orElse(null);"); tl(3, "if(v != null) {"); - tl(4, "json.put(\"val\", v);"); + tl(4, "Matcher mFq = Pattern.compile(\"(\\\\w+):(.+?(?=(\\\\)|\\\\s+OR\\\\s+|\\\\s+AND\\\\s+|$)))\").matcher(SearchTool.unescapeQueryChars((String)v));"); + tl(4, "StringBuffer sb = new StringBuffer();"); + tl(4, "while(mFq.find()) {"); + tl(5, "String entityVar = ", classeNomSimple, ".searchVar", classeNomSimple, "(varIndexed);"); + tl(5, "String valueIndexed = mFq.group(2).trim();"); + tl(5, "String entityFq = entityVar + \":\" + valueIndexed;"); + tl(5, "if(var.equals(entityVar))"); + tl(6, "mFq.appendReplacement(sb, valueIndexed);"); + tl(5, "else"); + tl(6, "mFq.appendReplacement(sb, entityFq);"); + tl(4, "}"); + tl(4, "if(!sb.isEmpty()) {"); + tl(5, "mFq.appendTail(sb);"); + tl(5, "json.put(\"val\", sb.toString());"); + tl(4, "}"); tl(4, "varsFqCount++;"); tl(3, "}"); tl(3, "Optional.ofNullable(stats).map(s -> s.get(var", langueConfig.getString(I18n.var_Indexe), ")).ifPresent(stat -> {"); diff --git a/src/main/java/org/computate/frFR/java/IndexerClasse.java b/src/main/java/org/computate/frFR/java/IndexerClasse.java index 56285e50..73213597 100644 --- a/src/main/java/org/computate/frFR/java/IndexerClasse.java +++ b/src/main/java/org/computate/frFR/java/IndexerClasse.java @@ -5575,6 +5575,8 @@ else if(groupe1 != null && !groupe1.contains("+")) classePartsGenPageAjouter(ClasseParts.initClasseParts(this, "org.computate.search.tool.SearchTool", classeLangueNom), classeLangueNom); classePartsGenPageAjouter(ClasseParts.initClasseParts(this, "java.time.ZoneId", classeLangueNom), classeLangueNom); classePartsGenPageAjouter(ClasseParts.initClasseParts(this, "io.vertx.pgclient.data.Point", classeLangueNom), classeLangueNom); + classePartsGenPageAjouter(ClasseParts.initClasseParts(this, "java.util.regex.Matcher", classeLangueNom), classeLangueNom); + classePartsGenPageAjouter(ClasseParts.initClasseParts(this, "java.util.regex.Pattern", classeLangueNom), classeLangueNom); for(ClasseParts classePartGenPage : classePartsGenPage.values()) { indexerStockerListeSolr(langueNomGlobale, classeDoc, "classeImportationsGenPage", classePartGenPage.nomCanonique(classeLangueNom));