package edu.ualberta.med.biobank.common.action.clinic;
import java.util.ArrayList;
import java.util.List;
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.model.Contact;
public class ClinicGetContactsAction implements Action<ListResult<Contact>> {
private static final long serialVersionUID = 1L;
@SuppressWarnings("nls")
private static final String HQL =
"SELECT contact "
+ " FROM " + Contact.class.getName() + " contact"
+ " INNER JOIN contact.clinic clinic"
+ " WHERE clinic.id=?";
private final Integer clinicId;
public ClinicGetContactsAction(Integer clinicId) {
this.clinicId = clinicId;
}
@Override
public boolean isAllowed(ActionContext context) {
return true;
}
@Override
public ListResult<Contact> run(ActionContext context)
throws ActionException {
ArrayList<Contact> result = new ArrayList<Contact>();
Query query = context.getSession().createQuery(HQL);
query.setParameter(0, clinicId);
@SuppressWarnings("unchecked")
List<Contact> rs = query.list();
if (rs != null) {
result.addAll(rs);
}
return new ListResult<Contact>(result);
}
}