/*******************************************************************************
* Copyright (c) 2012 Dmitry Tikhomirov.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* Dmitry Tikhomirov - initial API and implementation
******************************************************************************/
package org.opensheet.server.dao.impl;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Hibernate;
import org.hibernate.SessionFactory;
import org.opensheet.server.dao.PermissionDAO;
import org.opensheet.shared.model.Permission;
import org.opensheet.shared.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.extjs.gxt.ui.client.data.PagingLoadConfig;
@Repository
public class PermissionDAOImpl implements PermissionDAO {
@Autowired
private SessionFactory sessionFactory;
@Override
@Transactional
public User getUserPermission(User u){
User user = (User) sessionFactory.getCurrentSession().get(User.class, new Integer(u.getId()));
// User user = (User) sessionFactory.getCurrentSession().createQuery("from Permission where user=" + u.getId()).uniqueResult();
user.getPermission();
return user;
}
@Override
@Transactional
public List<User> getUsersPermissions(PagingLoadConfig loadConfig){
@SuppressWarnings("unchecked")
List<User> users = new ArrayList<User>(sessionFactory.getCurrentSession().createQuery("select u from User u join fetch u.permission as p where u.status=1 order by u.secondName")
.setFirstResult(loadConfig.getOffset())
.setMaxResults(loadConfig.getLimit())
.list());
for(User u: users){
Hibernate.initialize(u.getPermission());
}
return users;
}
@Override
@Transactional
public void updateUserPermission(User u){
// Permission permission = (Permission) sessionFactory.getCurrentSession().get(Permission.class, new Integer(u.getId()));
Permission permission = (Permission) sessionFactory.getCurrentSession().createQuery("from Permission where user=" + u.getId()).uniqueResult();
permission.setAdmin(u.getPermission().getAdmin());
permission.setPm(u.getPermission().getPm());
permission.setDm(u.getPermission().getDm());
permission.setFd(u.getPermission().getFd());
sessionFactory.getCurrentSession().saveOrUpdate(permission);
}
}