/** * */ package org.inbio.m3s.dao.core.impl; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; import org.inbio.m3s.dao.core.UserPrivilegeDAO; import org.inbio.m3s.model.core.UserProjectPrivilegeId; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * @author jgutierrez * @deprecated * */ public class UserPrivilegeDAOImpl extends HibernateDaoSupport implements UserPrivilegeDAO { private static Logger logger = Logger.getLogger(UserPrivilegeDAOImpl.class); // project privileges private static final String READ = "Lectura"; private static final String WRITE = "Escritura"; //private static final String ADMIN = "Administración"; /* (non-Javadoc) * @see org.inbio.m3s.dao.interfaces.UserPrivilegeDAO#couldRead(java.lang.String, java.lang.Integer) */ public boolean couldRead(String username, Integer projectId) throws IllegalArgumentException { return hasPrivilege(username, projectId, READ); } /* (non-Javadoc) * @see org.inbio.m3s.dao.interfaces.UserPrivilegeDAO#couldWrite(java.lang.String, java.lang.Integer) */ public boolean couldWrite(String username, Integer projectId) throws IllegalArgumentException { return hasPrivilege(username, projectId, WRITE); } /** * * @param username * @param projectId * @param privilegeName * is a constant of the Properties class * @return * @throws IllegalArgumentException * if the query using the method params generate an exception */ private Boolean hasPrivilege(final String username, final Integer projectId, final String privilegeName) throws IllegalArgumentException { logger.debug("hasPrivilege... start "); HibernateTemplate template = getHibernateTemplate(); return (Boolean) template.execute(new HibernateCallback() { @SuppressWarnings("unchecked") public Object doInHibernate(Session session) { Query query = session.createQuery( "select upv.UserProjectPrivilegeId " + "from UserProjectPrivilege as upv " + "where upv.project.projectId = " + projectId + " " + "and upv.securityUsers.name = " + username + " " + "and upv.privilege.name = " + privilegeName + " "); //query.setParameter(0, nomenclaturalGroupId); query.setCacheable(true); List<UserProjectPrivilegeId> result = query.list(); if (result.size() != 1) { logger.error("hasPrivilege... the user has no privileges to [" + privilegeName + "] on this " + "project or has more than one privilege"); return new Boolean(false); } logger.debug("hasPrivilege... done"); return new Boolean (true); } }); } }