package edu.ualberta.med.biobank.common.action.eventattr; import java.util.HashMap; 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.MapResult; import edu.ualberta.med.biobank.common.action.exception.ActionException; import edu.ualberta.med.biobank.common.peer.EventAttrTypePeer; import edu.ualberta.med.biobank.common.peer.GlobalEventAttrPeer; import edu.ualberta.med.biobank.common.wrappers.EventAttrTypeEnum; import edu.ualberta.med.biobank.model.GlobalEventAttr; public class GlobalEventAttrInfoGetAction implements Action<MapResult<Integer, GlobalEventAttrInfo>> { private static final long serialVersionUID = 1L; // @formatter:off @SuppressWarnings("nls") private static final String GLOBAL_EVENT_ATTR_QRY = "select attr," + " type." + EventAttrTypePeer.NAME.getName() + " from " + GlobalEventAttr.class.getName() + " as attr" + " left join fetch attr." + GlobalEventAttrPeer.EVENT_ATTR_TYPE.getName() + " as type"; // @formatter:on @Override public boolean isAllowed(ActionContext context) throws ActionException { return true; } @Override public MapResult<Integer, GlobalEventAttrInfo> run(ActionContext context) throws ActionException { HashMap<Integer, GlobalEventAttrInfo> attrInfos = new HashMap<Integer, GlobalEventAttrInfo>(); Query query = context.getSession().createQuery(GLOBAL_EVENT_ATTR_QRY); @SuppressWarnings("unchecked") List<Object[]> rows = query.list(); for (Object[] row : rows) { GlobalEventAttrInfo attrInfo = new GlobalEventAttrInfo(); attrInfo.attr = (GlobalEventAttr) row[0]; attrInfo.type = EventAttrTypeEnum.getEventAttrType((String) row[1]); attrInfos.put(attrInfo.attr.getId(), attrInfo); } return new MapResult<Integer, GlobalEventAttrInfo>(attrInfos); } }