import java.util.Map; import java.util.HashMap; import omero.LockTimeout; import omero.ServerError; import omero.api.ServiceFactoryPrx; import Glacier2.CannotCreateSessionException; import Glacier2.PermissionDeniedException; /** * Passes a non-empty options map to specify * that all Annotations should be kept. */ public class Options { 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(); // The path here can either be relative or absolute, e.g. // /Image/ImageAnnotationLink/Annotation. "KEEP" specifies // that no delete should take place. "SOFT" specifies that // if a delete is not possible no error should be signaled. Map<String, String> options = new HashMap<String, String>(); options.put("/Annotation", "KEEP"); DeleteCommand dc = new DeleteCommand("/Image", 1, options); DeleteHandlePrx deleteHandlePrx = deleteServicePrx .queueDelete(new DeleteCommand[] { dc }); DeleteCallbackI cb = new DeleteCallbackI(c, deleteHandlePrx); try { cb.loop(10, 500); DeleteReport[] reports = deleteHandlePrx.report(); DeleteReport r = reports[0]; // We only sent one command System.out.println(String.format( "Report:error=%s,warning=%s,deleted=%s", r.error, r.warning, r.actualDeletes)); } 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(); } } }