L'interface DynamicIndexCallback est destinée aux applications qui veulent recevoir des notifications pour les événements d'indexation ready, error ou destroy. DynamicIndexCallback est un paramètre facultatif pour la méthode createDynamicIndex de la mappe de sauvegarde. Avec une instance enregistrée DynamicIndexCallback, les applications peuvent exécuter la logique applicative à la réception de la notification d'un événement d'indexation.
BackingMap personBackingMap = ivObjectGrid.getMap("person");
DynamicIndexCallback callback = new DynamicIndexCallbackImpl();
personBackingMap.createDynamicIndex("CODE", true, "employeeCode", callback);
class DynamicIndexCallbackImpl implements DynamicIndexCallback {
public DynamicIndexCallbackImpl() {
}
public void ready(String indexName) {
System.out.println("DynamicIndexCallbackImpl.ready() -> indexName = " + indexName);
// Simulez le comportement d'une application lors de la notification ready.
// Normalement, l'application doit patienter jusqu'à l'obtention de l'état ready, puis doit mettre en oeuvre
// la logique d'utilisation de l'index.
if("CODE".equals(indexName)) {
ObjectGridManager ogManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid og = ogManager.createObjectGrid( "grid" );
Session session = og.getSession();
ObjectMap map = session.getMap("person");
MapIndex codeIndex = (MapIndex) map.getIndex("CODE");
Iterator iter = codeIndex.findAll(codeValue);
// Fermer la session (facultatif dans les versions 7.1.1 et ultérieures) pour améliorer les performances
session.close();
}
}
public void error(String indexName, Throwable t) {
System.out.println("DynamicIndexCallbackImpl.error() -> indexName = " + indexName);
t.printStackTrace();
}
public void destroy(String indexName) {
System.out.println("DynamicIndexCallbackImpl.destroy() -> indexName = " + indexName);
}
}