package com.taobao.zeus.store.mysql;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.taobao.zeus.model.Profile;
import com.taobao.zeus.store.ProfileManager;
import com.taobao.zeus.store.mysql.persistence.ProfilePersistence;
import com.taobao.zeus.store.mysql.tool.PersistenceAndBeanConvert;
public class MysqlProfileManager extends HibernateDaoSupport implements ProfileManager {
@Override
public Profile findByUid(final String uid) {
return (Profile) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException,
SQLException {
Query query=session.createQuery("from com.taobao.zeus.store.mysql.persistence.ProfilePersistence where uid=?");
query.setParameter(0, uid);
List<ProfilePersistence> list=query.list();
if(!list.isEmpty()){
return PersistenceAndBeanConvert.convert(list.get(0));
}
return null;
}
});
}
@Override
public void update(String uid,Profile p) throws Exception{
Profile old=findByUid(uid);
if(old==null){
old=new Profile();
old.setUid(uid);
getHibernateTemplate().save(PersistenceAndBeanConvert.convert(old));
old=findByUid(uid);
}
p.setUid(old.getUid());
p.setGmtModified(new Date());
getHibernateTemplate().update(PersistenceAndBeanConvert.convert(p));
}
}