package edu.ualberta.med.biobank.common.action.clinic; import org.hibernate.Query; import edu.ualberta.med.biobank.common.action.Action; import edu.ualberta.med.biobank.common.action.ActionContext; import edu.ualberta.med.biobank.common.action.ListResult; import edu.ualberta.med.biobank.common.action.exception.ActionException; import edu.ualberta.med.biobank.common.permission.clinic.ClinicReadPermission; import edu.ualberta.med.biobank.model.Contact; public class ContactsGetAllAction implements Action<ListResult<Contact>> { private static final long serialVersionUID = 1L; @SuppressWarnings("nls") private static final String QRY_CONTACTS = "FROM " + Contact.class.getName() + " contact" + " INNER JOIN FETCH contact.clinic clinic" + " INNER JOIN FETCH clinic.contacts"; @Override public boolean isAllowed(ActionContext context) throws ActionException { return new ClinicReadPermission().isAllowed(context); } @SuppressWarnings("unchecked") @Override public ListResult<Contact> run(ActionContext context) throws ActionException { Query query = context.getSession().createQuery(QRY_CONTACTS); return new ListResult<Contact>(query.list()); } }