La interfaz DynamicIndexCallback se ha diseñado para aplicaciones que desean recibir notificaciones de sucesos de indexación de tipo preparado, error o destruir. DynamicIndexCallback es un parámetro opcional para el método createDynamicIndex de BackingMap. Con una instancia registrada de DynamicIndexCallback, las aplicaciones pueden ejecutar lógica empresarial al recibir una notificación de un suceso de indexación.
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);
// Simular qué debe hacer la aplicación al recibir la notificación de que el índice está preparado.
// Normalmente, la aplicación debería esperar a que se alcance el estado preparado y después proceder
// con una lógica de uso de índices.
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);
// Cierre la sesión (opcional en la versión 7.1.1 y posterior) para un mejor rendimiento
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);
}
}