Revision 1 -
(download)
(annotate)
Wed Jul 28 10:05:51 2010 UTC
(13 years, 9 months ago)
by dgarcia File size: 3281 byte(s)
First code commit
package eu.smartlm.abs.portal.security.login.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.exception.ConstraintViolationException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import eu.smartlm.abs.portal.security.login.model.User;
/**
* Hibernate access to the User database implementation from the rest of the project
* @author David García Pérez - CESGA
**/
@Repository("userDao")
//@Service(value="myUserDao")
public class HibernateUserDao implements UserDao {
@Autowired
private SessionFactory sessionFactory;
public HibernateUserDao() {}
public void setSessionFaction(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
/**
* Gives back a list with all the users stored in teh database
* @return a list of all users
*/
@SuppressWarnings("unchecked")
public List<User> getUsers() {
Session session = sessionFactory.openSession();
session.beginTransaction();
List <User> users = session.createQuery("from User as user").list();
session.getTransaction().commit();
session.close();
return users;
}
/**
* Adds an user to the database
* @param user to be added
*/
public int addUser(final User user) {
try {
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.save(user);
transaction.commit();
session.close();
return UserDao.USER_ADDED;
} catch(ConstraintViolationException e) {
return UserDao.ALREADY_USED_USERNAME;
}
}
/**
* Removes an specific user from the database
* @param username of the user to be removed
*/
public void removeUser(String username) {
User user = getUser(username);
Session session = sessionFactory.openSession();
session.beginTransaction();
session.delete(user);
session.getTransaction().commit();
session.close();
}
/**
* Edits the information of an user stored in the database
* @param user with the same id but with the updated information
*/
public void editUser(User user) {
User userInDatabase = getUser(user.getUsername());
userInDatabase.setPassword(user.getPassword());
userInDatabase.setAccountingUsername(user.getAccountingUsername());
userInDatabase.setAccountingGroup(user.getAccountingGroup());
userInDatabase.setSeeAccountingGroupData(user.isSeeAccountingGroupData());
userInDatabase.setSeeAll(user.isSeeAll());
Session session = sessionFactory.openSession();
session.beginTransaction();
session.update(userInDatabase);
session.getTransaction().commit();
session.close();
}
/**
* Retrieves an user form the database by username field
* @param username of the user to be retrieved
* @return the User or <code>null</code> if the users does not exists in the database
*/
public User getUser(String username) {
Session session = sessionFactory.openSession();
session.beginTransaction();
String hql = "from User as user where user.username='" + username + "'";
User user = (User) session.createQuery(hql).uniqueResult();
session.getTransaction().commit();
session.close();
return user;
}
}