Package org.butor.auth.dao

Source Code of org.butor.auth.dao.UserDaoImpl

package org.butor.auth.dao;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.butor.auth.common.AuthDataFilter;
import org.butor.auth.common.SecurityConstants;
import org.butor.auth.common.user.ListUserCriteria;
import org.butor.auth.common.user.User;
import org.butor.auth.common.user.UserKey;
import org.butor.auth.common.user.UserQuestions;
import org.butor.dao.AbstractDao;
import org.butor.dao.DAOMessageID;
import org.butor.dao.DaoWithHistory;
import org.butor.json.CommonRequestArgs;
import org.butor.utils.AccessMode;
import org.butor.utils.ApplicationException;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.util.StringUtils;

import com.google.common.base.Strings;

public class UserDaoImpl extends AbstractDao implements UserDao, DaoWithHistory {

  private String listSql;
  private String readSql;
  private String readQuestionsSql;
  private String deleteSql;
  private String updateSql;
  private String updateQuestionsSql;
  private String updateStateSql;
  private String insertSql;

  private AuthDao authDao;

  private final String PROC_LIST_USER = getClass().getName() +".listUser";
  private final String PROC_READ_USER = getClass().getName() +".readUser";
  private final String PROC_READ_QUESTIONS = getClass().getName() +".readQuestions";
  private final String PROC_INSERT_USER = getClass().getName() +".insertUser";
  private final String PROC_UPDATE_USER = getClass().getName() +".updateUser";
  private final String PROC_UPDATE_STATE = getClass().getName() +".updateState";
  private final String PROC_UPDATE_QUESTIONS = getClass().getName() +".updateQuestions";
  private final String PROC_DELETE_USER = getClass().getName() +".deleteUser";

  @Override
  public List<User> listUser(ListUserCriteria crit, String func, CommonRequestArgs cra) {

    if (StringUtils.hasLength(crit.getDisplayName())) {
      crit.setDisplayName("%" + crit.getDisplayName() + "%");
    }

    AuthDataFilter authDataCrit = new AuthDataFilter();
    authDataCrit.setSys(SecurityConstants.SYSTEM_ID);
    authDataCrit.setFunc(Strings.isNullOrEmpty(func) ? SecurityConstants.SEC_FUNC_USERS : func);
    authDataCrit.setDataTypes(SecurityConstants.SEC_DATA_TYPE_USER, SecurityConstants.SEC_DATA_TYPE_FIRM);
    authDataCrit.setMode((AccessMode.READ).value());
    authDataCrit.setMember(cra.getUserId());
   
    return queryList(PROC_LIST_USER, listSql, User.class, crit, cra, authDataCrit);
  }

  public void setListSql(String listSql_) {
    this.listSql = listSql_;
  }

  public void setReadSql(String readSql) {
    this.readSql = readSql;
  }

  @Override
  public User readUser(String id, String func, CommonRequestArgs cra) {
    Map<String, Object> args = new HashMap<String, Object>();
    args.put("id", id);
   
    AuthDataFilter authDataCrit = new AuthDataFilter();
    authDataCrit.setSys(SecurityConstants.SYSTEM_ID);
    authDataCrit.setFunc(Strings.isNullOrEmpty(func) ? SecurityConstants.SEC_FUNC_USERS : func);
    authDataCrit.setDataTypes(SecurityConstants.SEC_DATA_TYPE_USER, SecurityConstants.SEC_DATA_TYPE_FIRM);
    authDataCrit.setMode((AccessMode.READ).value());
    authDataCrit.setMember(cra.getUserId());
   
   
    return queryFirst(PROC_READ_USER, readSql, User.class, args, cra, authDataCrit);
  }

  @Override
  public UserQuestions readQuestions(String id, CommonRequestArgs cra) {
    Map<String, Object> args = new HashMap<String, Object>();
    args.put("id", id);
    return queryFirst(PROC_READ_QUESTIONS, readQuestionsSql, UserQuestions.class, args, cra);
  }

  @Override
  public UserKey insertUser(User user, CommonRequestArgs cra) {
    if (!authDao.hasAccess("sec", "users", AccessMode.WRITE, cra)) {
      ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
    }
    user.setStamp(new Date());
    user.setCreationDate(user.getStamp());
    user.setRevNo(0);
    UpdateResult ur = insert(PROC_INSERT_USER, insertSql, user, cra);
    if (ur.numberOfRowAffected == 0) {
      ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
    }
    return new UserKey(user.getId(), user.getRevNo() + 1);
  }

  @Override
  public UserKey updateState(User user, CommonRequestArgs cra) {
    UpdateResult ur = update(PROC_UPDATE_STATE, updateStateSql, user, cra);
    if (ur.numberOfRowAffected == 0) {
      ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
    }
    return new UserKey(user.getId(), user.getRevNo() +1);
  }

  @Override
  public UserKey updateUser(User user, CommonRequestArgs cra) {
    if (!authDao.hasAccess("sec", "users", AccessMode.WRITE, cra)) {
      ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
    }
    UpdateResult ur = update(PROC_UPDATE_USER, updateSql, user, cra);
    if (ur.numberOfRowAffected == 0) {
      ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
    }
    return new UserKey(user.getId(), user.getRevNo() +1);
  }

  @Override
  public UserKey updateQuestions(UserQuestions user, CommonRequestArgs cra) {
    UpdateResult ur = update(PROC_UPDATE_QUESTIONS, updateQuestionsSql, user, cra);
    if (ur.numberOfRowAffected == 0) {
      ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
    }
    return new UserKey(user.getId(), user.getRevNo() +1);
  }

  @Override
  public void deleteUser(UserKey userKey, CommonRequestArgs cra) {
    if (!authDao.hasAccess("sec", "users", AccessMode.WRITE, cra)) {
      ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
    }
    UpdateResult ur = delete(PROC_DELETE_USER, deleteSql, userKey, cra);
    if (ur.numberOfRowAffected == 0) {
      ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
    }
  }
  @Override
  public Object getRowForHistory(MapSqlParameterSource params) {
    CommonRequestArgs cra = new CommonRequestArgs();
    cra.setUserId((String)params.getValue("userId"));
    cra.setLang((String)params.getValue("lang"));
    cra.setReqId((String)params.getValue("reqId"));
    cra.setSessionId((String)params.getValue("sessionId"));
    String id = (String)params.getValue("id");

    return readUser(id, null, cra);
  }
  @Override
  public String getInsertSql() {
    return insertSql;
  }

  public void setUpdateSql(String updateSql) {
    this.updateSql = updateSql;
  }

  public void setInsertSql(String insertSql) {
    this.insertSql = insertSql;
  }

  public void setDeleteSql(String deleteSql) {
    this.deleteSql = deleteSql;
  }

  public void setReadQuestionsSql(String readQuestionsSql) {
    this.readQuestionsSql = readQuestionsSql;
  }

  public void setUpdateQuestionsSql(String updateQuestionsSql) {
    this.updateQuestionsSql = updateQuestionsSql;
  }

  public void setUpdateStateSql(String updateStateSql) {
    this.updateStateSql = updateStateSql;
  }

  public void setAuthDao(AuthDao authDao) {
    this.authDao = authDao;
  }
}
TOP

Related Classes of org.butor.auth.dao.UserDaoImpl

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.