Package com.opengamma.security.user

Source Code of com.opengamma.security.user.HibernateUserManager

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.security.user;

import java.sql.SQLException;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.transaction.annotation.Transactional;

import com.opengamma.security.user.Authority;
import com.opengamma.security.user.User;
import com.opengamma.security.user.UserGroup;
import com.opengamma.security.user.UserManager;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.db.DbConnector;

/**
* A manager providing access to the security subsystem.
*/
@Transactional
public class HibernateUserManager implements UserManager, UserDetailsService {

  /**
   * The Hibernate template.
   */
  private HibernateTemplate _hibernateTemplate;

  /**
   * Creates an instance providing access to the database.
   * @param dbConnector  the database connector, not null
   */
  public HibernateUserManager(DbConnector dbConnector) {
    _hibernateTemplate = dbConnector.getHibernateTemplate();
  }

  //-------------------------------------------------------------------------
  @Override
  public UserDetails loadUserByUsername(String username)
    throws UsernameNotFoundException {
    User user = getUser(username);
    if (user == null) {
      throw new UsernameNotFoundException(username);
    }
    return user;
  }

  @Override
  public User getUser(final String username) {
    ArgumentChecker.notNull(username, "User name");
   
    return _hibernateTemplate.execute(new HibernateCallback<User>() {
      @Override
      public User doInHibernate(Session session) throws HibernateException,
          SQLException {
        Query query = session.getNamedQuery("User.one.byUsername");
        query.setString("username", username);
        return (User) query.uniqueResult();
      }
    });
  }

  @Override
  public UserGroup getUserGroup(final String name) {
    ArgumentChecker.notNull(name, "Group name");
   
    return _hibernateTemplate.execute(new HibernateCallback<UserGroup>() {
      @Override
      public UserGroup doInHibernate(Session session) throws HibernateException,
          SQLException {
        Query query = session.getNamedQuery("UserGroup.one.byName");
        query.setString("name", name);
        return (UserGroup) query.uniqueResult();
      }
    });
  }

  @Override
  public Authority getAuthority(final String regex) {
    ArgumentChecker.notNull(regex, "Authority");
   
    return _hibernateTemplate.execute(new HibernateCallback<Authority>() {
      @Override
      public Authority doInHibernate(Session session) throws HibernateException,
          SQLException {
        Query query = session.getNamedQuery("Authority.one.byAuthorityRegex");
        query.setString("regex", regex);
        return (Authority) query.uniqueResult();
      }
    });
  }

  @Override
  public void addUser(User user) {
    ArgumentChecker.notNull(user, "User");
    _hibernateTemplate.save(user);
  }

  @Override
  public void deleteUser(User user) {
    ArgumentChecker.notNull(user, "User");
    _hibernateTemplate.delete(user);
  }

  @Override
  public void updateUser(User user) {
    ArgumentChecker.notNull(user, "User");
    _hibernateTemplate.update(user);
  }

  @Override
  public void addUserGroup(UserGroup group) {
    ArgumentChecker.notNull(group, "User group");
    _hibernateTemplate.save(group);
  }

  @Override
  public void deleteUserGroup(UserGroup group) {
    ArgumentChecker.notNull(group, "User group");
    _hibernateTemplate.delete(group);
  }

  @Override
  public void updateUserGroup(UserGroup group) {
    ArgumentChecker.notNull(group, "User group");
    _hibernateTemplate.update(group);
  }

  @Override
  public void addAuthority(Authority authority) {
    ArgumentChecker.notNull(authority, "Authority");
    _hibernateTemplate.save(authority);
  }

  @Override
  public void deleteAuthority(Authority authority) {
    ArgumentChecker.notNull(authority, "Authority");
    _hibernateTemplate.delete(authority);
  }

  @Override
  public void updateAuthority(Authority authority) {
    ArgumentChecker.notNull(authority, "Authority");
    _hibernateTemplate.update(authority);
  }

}
TOP

Related Classes of com.opengamma.security.user.HibernateUserManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.