import omero.LockTimeout; import omero.ServerError; import omero.client; import omero.api.ServiceFactoryPrx; import omero.api.delete.DeleteCommand; import omero.api.delete.DeleteHandlePrx; import omero.api.delete.DeleteReport; import omero.grid.DeleteCallbackI; import Glacier2.CannotCreateSessionException; import Glacier2.PermissionDeniedException; /** * Subclasses {@link DeleteCallbackI} */ public class Subclass extends DeleteCallbackI { public Subclass(client client, DeleteHandlePrx handle) throws ServerError { super(client, handle); } @Override public void finished(int errors) { super.finished(errors); System.out.println("Finished. Error count=" + errors); try { DeleteReport[] reports = handle.report(); for (DeleteReport r : reports) { System.out.println(String.format( "Report:error=%s,warning=%s,deleted=%s", r.error, r.warning, r.actualDeletes)); } } catch (ServerError se) { System.out.println("Something happened to the handle?!?"); } } public static void main(String[] args) throws CannotCreateSessionException, PermissionDeniedException, ServerError { omero.client c = new omero.client(); ServiceFactoryPrx s = c.createSession(); try { IDeletePrx deleteServicePrx = s.getDeleteService(); DeleteCommand dc = new DeleteCommand("/Image", 1, null); DeleteHandlePrx deleteHandlePrx = deleteServicePrx .queueDelete(new DeleteCommand[] { dc }); Subclass cb = new Subclass(c, deleteHandlePrx); try { cb.loop(10, 500); // If we reach here, finished() was called. } catch (LockTimeout lt) { System.out.println("Not finished in 5 seconds. Cancelling..."); if (!deleteHandlePrx.cancel()) { System.out.println("ERROR: Failed to cancel"); } } finally { cb.close(); } } finally { c.closeSession(); } } }