package com.robonobo.midas.dao; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.stereotype.Repository; import com.robonobo.midas.model.MidasUserConfig; @Repository("userConfigDao") public class UserConfigDaoImpl extends MidasDao implements UserConfigDao { @Override public MidasUserConfig getUserConfig(long userId) { return (MidasUserConfig) getSession().get(MidasUserConfig.class, userId); } @Override public MidasUserConfig getUserConfig(String key, String value) { String hql = "from MidasUserConfig uc where uc.items[:pKey] = :pVal"; Session s = getSession(); Query q = s.createQuery(hql); q.setString("pKey", key); q.setString("pVal", value); List list = q.list(); if(list.size() == 0) return null; if(list.size() > 1) log.error("Error: Duplicate result for user config key = "+key+", val = "+value); return (MidasUserConfig) list.get(0); } @Override @SuppressWarnings("unchecked") public List<MidasUserConfig> getUserConfigsWithKey(String key) { String hql = "from MidasUserConfig uc where uc.items[:pKey] != null"; Session s = getSession(); Query q = s.createQuery(hql); q.setString("pKey", key); return q.list(); } @Override public void saveUserConfig(MidasUserConfig config) { getSession().saveOrUpdate(config); } @Override public void deleteUserConfig(long userId) { MidasUserConfig muc = getUserConfig(userId); if(muc != null) getSession().delete(muc); } }