J’essaie de surcharger preSearchIndex dans PlatformHooks mais j’ai l’erreur suivante
Class compilation error (status 1)
/usr/local/tomcat/webapps/ROOT/WEB-INF/src/com/simplicite/commons/RCIB/PlatformHooks.java:190: error: method does not override or implement a method from a supertype
@Override
^
1 error
#ERROR
Je souhaite utiliser ce hook pour filtrer des résultats dans la recherche globale uniquement.
J’ai tenté d’utiliser le Contexte mais en recherche globale le Contexte ne semble pas mis à jour et prend la valeur de la dernière instance de l’objet affichée.
Y a-t-il un autre moyen d’identifier si on est dans la recherche globale ou non ?
Voici la méthode que j’ai utilisée avec CTRL+espace
@Override
public String preSearchIndex(Grant g, String search, List<String> objects, int context, ObjectDB parent) {
return search;
}
Je constate effectivement qu’il manque un paramètre par rapport à la JAVADOC, désolée !
Concernant le contexte, je constate que la recherche globale renvoie des résultats différents selon l’instance que j’ai utilisée avant car j’ai tenté de filtrer sur le contexte dans le preSearch. Si j’ai affiché un Form, j’ai 5 ; si j’ai affiché une liste en dernier, j’ai 2.
J’ai aussi une autre question sur ce sujet, surcharger le postSearchIndex influe-t-il sur le contenu de m_index ? Car j’ai l’impression que les lignes supprimées de rows ne sont pas dans la table.
Ok le code snippet du ace-editor ne doit pas être le bon, on va regarder.
public String preSearchIndex(Grant g, String search, List<String> objects, int context, ObjectDB parent, Map<String, String> filters)
Les hooks n’influencent pas le contenu de la table. Par contre ton indexation est peut être incomplète (par exemple suite à des imports en masse), il faut faire un rebuild complet depuis la liste des index.
Tu peux aussi regarder ce que vaut List<String> objects pour savoir si la recherche se limite à 1 ou N objets métiers (null=tous ou ceux cochés dans l’écran de recherche).
Ensuite si les BD sont différentes entre instances, le résultat ne sera pas identique, par exemple sur hsql il n’y pas d’index fulltext, donc c’est un simple “like” en base, pour les autres Simplicité utilise des recherches fulltext native (@@, match…).
L’indexation fait une recherche des objets via les couches logiques pour en extraire les contenus indexables, donc ça passe par les hooks des objets.
Il faut inhiber vos règles de gestion dans ce cas, tout comme vous le feriez dans le cas d’un import de données ou un traitement de masse. C’est la même instance qui bosse pour l’indexation :