package edu.ualberta.med.biobank.handlers;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import edu.ualberta.med.biobank.SessionManager;
import edu.ualberta.med.biobank.common.permission.specimen.SpecimenAssignPermission;
import edu.ualberta.med.biobank.common.wrappers.UserWrapper;
import edu.ualberta.med.biobank.forms.linkassign.SpecimenAssignEntryForm;
import edu.ualberta.med.biobank.gui.common.BgcPlugin;
import edu.ualberta.med.biobank.treeview.processing.SpecimenAssignAdapter;
public class SpecimenAssignHandler extends LinkAssignCommonHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
if (!SpecimenLinkHandler.checkActivityLogSavePathValid()) {
BgcPlugin.openAsyncError(Messages.SpecimenAssignHandler_log_location,
Messages.SpecimenAssignHandler_error_message);
return null;
}
openLinkAssignPerspective(SpecimenAssignEntryForm.ID,
new SpecimenAssignAdapter(null, 0,
Messages.SpecimenAssignHandler_specimenAssign_label,
false));
return null;
}
@Override
protected boolean canUserPerformAction(UserWrapper user) {
if (allowed == null)
try {
if (!SessionManager.getInstance().isConnected()
|| user.getCurrentWorkingSite() == null)
return false;
allowed =
SessionManager.getAppService().isAllowed(
new SpecimenAssignPermission(user
.getCurrentWorkingSite().getId()));
} catch (Exception e) {
throw new RuntimeException(e);
}
return allowed;
}
}