package ch.elexis.core.ui.locks; import ch.elexis.admin.ACE; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.lock.types.LockResponse; import ch.elexis.core.ui.actions.RestrictedAction; import ch.elexis.data.PersistentObject; public abstract class LockRequestingRestrictedAction<T extends PersistentObject> extends RestrictedAction { private T object; public LockRequestingRestrictedAction(ACE necessaryRight, String text){ super(necessaryRight, text); } public LockRequestingRestrictedAction(ACE necessaryRight, String text, int val){ super(necessaryRight, text, val); } public void doRun(){ if (!CoreHub.acl.request(necessaryRight)) { return; } object = getTargetedObject(); if (object == null) { return; } LockResponse lr = CoreHub.getLocalLockService().acquireLock(object); if (lr.isOk()) { doRun(object); CoreHub.getLocalLockService().releaseLock(object); } else { LockResponseHelper.showInfo(lr, object, log); } }; public abstract T getTargetedObject(); public abstract void doRun(T element); }