Package org.butor.dbauth.model

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

package org.butor.dbauth.model;

import java.util.List;

import org.butor.auth.common.AuthData;
import org.butor.auth.common.AuthModel;
import org.butor.auth.common.AuthServices;
import org.butor.auth.common.ListAuthDataCriteria;
import org.butor.auth.common.auth.Auth;
import org.butor.auth.common.auth.AuthKey;
import org.butor.auth.common.auth.ListAuthCriteria;
import org.butor.auth.common.auth.ListUserAuthFuncCriteria;
import org.butor.auth.common.auth.SecData;
import org.butor.auth.common.func.Func;
import org.butor.auth.dao.AuthDao;
import org.butor.auth.dao.DataDao;
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;

public class DefaultAuthModel implements AuthServices, AuthModel {
  private AuthDao authDao;
  private DataDao dataDao;

  @Override
  public void hasAccess(Context ctx, String system, String func, AccessMode am) {
    CommonRequestArgs cra = ctx.getRequest();
    ResponseHandler<Object> handler = ctx.getResponseHandler();
    boolean has = hasAccess(system, func, am, cra);
    handler.addRow(has);
  }
  @Override
  public void listAuthFunc(Context ctx) {
    CommonRequestArgs cra = ctx.getRequest();
    ResponseHandlerHelper.addList(authDao.listAuthFunc(cra),
      ctx.getResponseHandler());
  }

  @Override
  public void listAuthData(Context ctx, ListAuthDataCriteria criteria) {
    CommonRequestArgs cra = ctx.getRequest();
    ResponseHandlerHelper.addList(listAuthData(criteria, cra),
      ctx.getResponseHandler());
  }
  @Override
  public void listAuth(Context ctx, ListAuthCriteria criteria) {
    CommonRequestArgs cra = ctx.getRequest();
    ResponseHandlerHelper.addList(listAuth(criteria, cra),
      ctx.getResponseHandler());
  }
  @Override
  public List<Auth> listAuth(ListAuthCriteria criteria, CommonRequestArgs cra) {
    return authDao.listAuth(criteria, cra);
  }
  @Override
  public void listUserAuthFunc(Context ctx, ListUserAuthFuncCriteria criteria) {
    CommonRequestArgs cra = ctx.getRequest();
    ResponseHandlerHelper.addList(authDao.listUserAuthFunc(criteria, cra),
      ctx.getResponseHandler());
  }

  public void setAuthDao(AuthDao authDao) {
    this.authDao = authDao;
  }
  @Override
  public boolean hasAccess(String system, String func, AccessMode am, CommonRequestArgs cra) {
    return authDao.hasAccess(system, func, am, cra);
  }
  @Override
  public List<Func> listAuthFunc(CommonRequestArgs cra) {
    return authDao.listAuthFunc(cra);
  }
  @Override
  public List<AuthData> listAuthData(ListAuthDataCriteria criteria, CommonRequestArgs cra) {
    return authDao.listAuthData(criteria, cra);
  }
  @Override
  public void readAuth(Context ctx, int authId) {
    CommonRequestArgs cra = ctx.getRequest();
    ResponseHandler<Object> handler = ctx.getResponseHandler();
    handler.addRow(readAuth(authId, cra));
  }
  @Override
  public Auth readAuth(int authId, CommonRequestArgs cra) {
    Auth auth = authDao.readAuth(authId, cra);
    if (auth != null && auth.getDataId() != null && auth.getDataId() > -1) {
      SecData criteria = new SecData();
      criteria.setDataId(auth.getDataId());
      auth.setData(dataDao.listData(criteria, cra));
    }
    return auth;
  }
  @Override
  @Transactional
  public void createAuth(Context ctx, Auth auth) {
    CommonRequestArgs cra = ctx.getRequest();
    AuthKey key = createAuth(auth, cra);
    ctx.getResponseHandler().addRow(key);
  }
  @Override
  public AuthKey createAuth(Auth auth, CommonRequestArgs cra) {
    // all occurrences of data must have the same dataId.
    // get the first generated one and set it to others
    long dataId = -1;
    if (auth.getData() != null) {
      for (SecData sd : auth.getData()) {
        dataDao.validateData(sd);
        if (dataId != -1 ) {
          sd.setDataId(dataId);
        }
        dataId = dataDao.insertData(sd, cra);
      }
    }
    auth.setDataId(dataId);
    AuthKey ak = authDao.insertAuth(auth, cra);
    if (ak == null) {
      ApplicationException.exception(CommonMessageID.NOT_FOUND.getMessage().setSysId("sec"));
    }
    return ak;
  }

  @Override
  @Transactional
  public void updateAuth(Context ctx, Auth auth) {
    CommonRequestArgs cra = ctx.getRequest();
    AuthKey key = updateAuth(auth, cra);
    ctx.getResponseHandler().addRow(key);
  }
  @Override
  public AuthKey updateAuth(Auth auth, CommonRequestArgs cra) {
    Auth oldAuth = readAuth(auth.getAuthId(), cra);
    if (oldAuth == null) {
      ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
    }
   
    if (auth.getStartDate() != null && auth.getEndDate() != null &&
      auth.getStartDate().after(auth.getEndDate())) {
      ApplicationException.exception(CommonMessageID.INVALID_ARG.getMessage("End date").setSysId("sec"));
    }
    long dataId = oldAuth.getDataId() != null ? oldAuth.getDataId().longValue() : -1;
    dataId = dataDao.updateData(dataId, auth.getData(), cra);

    if (auth.getData() != null && auth.getData().size() == 0) {
      dataId = -1; // no data bundle attached to authorization.
    }
    auth.setDataId(dataId);
    AuthKey ak = authDao.updateAuth(auth, cra);
    if (ak == null) {
      ApplicationException.exception(CommonMessageID.NOT_FOUND.getMessage().setSysId("sec"));
    }
    return ak;
  }
  @Override
  @Transactional
  public void deleteAuth(Context ctx, AuthKey ak) {
    CommonRequestArgs cra = ctx.getRequest();
    deleteAuth(ak, cra);
  }
  @Override
  public void deleteAuth(AuthKey ak, CommonRequestArgs cra) {
    Auth oldAuth = readAuth(ak.getAuthId(), cra);
    if (oldAuth == null) {
      ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
    }
    authDao.deleteAuth(ak, cra);
    if (oldAuth.getData() != null) {
      dataDao.deleteData(oldAuth.getDataId(), cra);
    }
  }
  @Override
  public List<SecData> listData(SecData criteria, CommonRequestArgs cra) {
    return dataDao.listData(criteria, cra);
  }
  public void updateData(long dataId, List<SecData> data, CommonRequestArgs cra) {
    dataDao.updateData(dataId, data, cra);
  }
  public void setDataDao(DataDao dataDao) {
    this.dataDao = dataDao;
  }
}
TOP

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

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.