Package org.butor.dbauth.model

Source Code of org.butor.dbauth.model.DefaultRoleModel

package org.butor.dbauth.model;

import java.util.List;

import org.butor.auth.common.AuthMessageID;
import org.butor.auth.common.desc.Desc;
import org.butor.auth.common.desc.DescKey;
import org.butor.auth.common.func.FuncKey;
import org.butor.auth.common.role.Role;
import org.butor.auth.common.role.RoleItem;
import org.butor.auth.common.role.RoleItemKey;
import org.butor.auth.common.role.RoleKey;
import org.butor.auth.common.role.RoleServices;
import org.butor.auth.dao.AuthDao;
import org.butor.auth.dao.DescDao;
import org.butor.auth.dao.RoleDao;
import org.butor.dao.DAOMessageID;
import org.butor.json.CommonRequestArgs;
import org.butor.json.service.Context;
import org.butor.json.service.ResponseHandler;
import org.butor.json.service.ResponseHandlerHelper;
import org.butor.utils.AccessMode;
import org.butor.utils.ApplicationException;
import org.butor.utils.CommonMessageID;
import org.springframework.transaction.annotation.Transactional;

import com.google.common.base.Strings;

public class DefaultRoleModel implements RoleServices {
  private RoleDao roleDao;
  private DescDao descDao;

  private String systemId;
  private String secFunc;
  private AuthDao authDao;

  @Override
  public void listRole(Context<Role> ctx, FuncKey criteria, String func) {
    CommonRequestArgs cra = ctx.getRequest();
    ResponseHandler<Role> rh = ctx.getResponseHandler();
    List<Role> list = roleDao.listRole(criteria, func, cra);
    ResponseHandlerHelper.addList(list, rh);
  }

  @Override
  public void readRole(Context<Role> ctx, String roleId) {
    CommonRequestArgs cra = ctx.getRequest();
    if (!authDao.hasAccess(systemId, secFunc, AccessMode.READ, cra)) {
      ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
    }
    ResponseHandler<Role> rh = ctx.getResponseHandler();
    RoleKey rk = new RoleKey(roleId);
    Desc desc = descDao.readDesc(rk, cra);
    if (desc == null) {
      rh.addMessage(CommonMessageID.NOT_FOUND.getMessage());
      return;
    }

    Role role = new Role();
    role.setId(roleId);
    role.setDescription(desc.getDescription());
    role.setRevNo(desc.getRevNo());
    role.setStamp(desc.getStamp());
    role.setUserId(role.getUserId());
    role.setItems(roleDao.readRole(roleId, cra));
    rh.addRow(role);
  }

  @Override
  @Transactional
  public void createRole(Context<Role> ctx, Role role) {
    CommonRequestArgs cra = ctx.getRequest();
    if (Strings.isNullOrEmpty(role.getId())) {
      ApplicationException.exception(
          CommonMessageID.MISSING_ARG.getMessage("roleId"));
    }
    if (Strings.isNullOrEmpty(role.getDescription())) {
      ApplicationException.exception(
          CommonMessageID.MISSING_ARG.getMessage("description"));
      return;
    }
    List<RoleItem> items = role.getItems();
    Desc desc = new Desc();
    desc.setDescription(role.getDescription());
    desc.setId(role.getId());
    desc.setIdType("role");
    DescKey dk = descDao.insertDesc(desc, cra);
    if (dk == null) {
      ApplicationException.exception(
          CommonMessageID.SERVICE_FAILURE.getMessage());
      return;
    }
    for (RoleItem item : items) {
      item.setRoleId(role.getId());
      RoleItemKey uk = roleDao.insertItem(item, cra);
      if (uk == null) {
        ApplicationException.exception(
            CommonMessageID.SERVICE_FAILURE.getMessage());
        return;
      }
    }
  }

  @Override
  @Transactional
  public void updateRole(Context<Role> ctx, Role role) {
    CommonRequestArgs cra = ctx.getRequest();
    if (Strings.isNullOrEmpty(role.getId())) {
      ApplicationException.exception(
          CommonMessageID.MISSING_ARG.getMessage("roleId"));
    }
    if (Strings.isNullOrEmpty(role.getDescription())) {
      ApplicationException.exception(
          CommonMessageID.MISSING_ARG.getMessage("description"));
      return;
    }
    DescKey dk = descDao.updateDesc(role, cra);
    if (dk == null) {
      ApplicationException.exception(
          CommonMessageID.SERVICE_FAILURE.getMessage());
      return;
    }
    roleDao.updateRole(role, cra);
  }

  public void setRoleDao(RoleDao roleDao) {
    this.roleDao = roleDao;
  }

  @Override
  @Transactional
  public void deleteRole(Context<Role> ctx, RoleKey roleKey) {
    CommonRequestArgs cra = ctx.getRequest();
    if (!authDao.hasAccess(systemId, secFunc, AccessMode.WRITE, cra)) {
      ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
    }
    roleKey.setIdType("role");
    if (roleDao.isRoleRefered(roleKey.getId(), cra)) {
      ResponseHandler<Role> rh = ctx.getResponseHandler();
      rh.addMessage(AuthMessageID.CANNOT_DELETE_REFERED_ROLE.getMessage());
      return;
    }
    descDao.deleteDesc(roleKey, cra);
    roleDao.deleteRole(roleKey, cra);
  }

  public void setDescDao(DescDao descDao) {
    this.descDao = descDao;
  }
  public void setSystemId(String systemId) {
    this.systemId = systemId;
  }

  public void setSecFunc(String secFunc) {
    this.secFunc = secFunc;
  }

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

Related Classes of org.butor.dbauth.model.DefaultRoleModel

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.