Package org.butor.auth.dao

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

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.firm.Firm;
import org.butor.auth.common.firm.FirmKey;
import org.butor.auth.common.firm.FirmWithAccessMode;
import org.butor.auth.common.firm.ListFirmCriteria;
import org.butor.dao.AbstractDao;
import org.butor.dao.DAOMessageID;
import org.butor.dao.DaoWithHistory;
import org.butor.json.CommonRequestArgs;
import org.butor.json.JsonHelper;
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 FirmDaoImpl extends AbstractDao implements FirmDao, DaoWithHistory {

  private String listSql;
  private String readSql;
  private String deleteSql;
  private String updateSql;
  private String insertSql;

  private AuthDao authDao;

  private final String PROC_LIST_FIRM = getClass().getName() +".listFirm";
  private final String PROC_READ_FIRM = getClass().getName() +".readFirm";
  private final String PROC_INSERT_FIRM = getClass().getName() +".insertFirm";
  private final String PROC_UPDATE_FIRM = getClass().getName() +".updateFirm";
  private final String PROC_DELETE_FIRM = getClass().getName() +".deleteFirm";

  @Override
  public List<FirmWithAccessMode> listFirm(ListFirmCriteria crit, CommonRequestArgs cra) {
    if (StringUtils.hasLength(crit.getFirmName())) {
      crit.setFirmName("%" + crit.getFirmName() + "%");
    }
    AuthDataFilter authDataCrit = new AuthDataFilter();
    authDataCrit.setSys(crit.getSys() != null ? crit.getSys() : SecurityConstants.SYSTEM_ID);
    authDataCrit.setFunc(crit.getFunc() != null ? crit.getFunc() : SecurityConstants.SEC_FUNC_FIRMS);
    authDataCrit.setDataTypes(SecurityConstants.SEC_DATA_TYPE_FIRM);
    authDataCrit.setMode((crit.getMode() != null ? crit.getMode() : AccessMode.READ).value());
    authDataCrit.setMember(cra.getUserId());

    List<FirmWithAccessMode> fl = queryList(PROC_LIST_FIRM, listSql, FirmWithAccessMode.class, crit, cra, authDataCrit);
    JsonHelper jsh = new JsonHelper();
    for (FirmWithAccessMode f : fl) {
      if (f.getAttributesMap() != null) {
        f.setAttributes(jsh.serialize(f.getAttributesMap()));
      }
    }
    return fl;
  }

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

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

  @Override
  public Firm readFirm(long firmId, String sys, String func, AccessMode mode, CommonRequestArgs cra) {
    Map<String, Object> args = new HashMap<String, Object>();
    args.put("firmId", firmId);

    AuthDataFilter authDataCrit = new AuthDataFilter();
    authDataCrit.setSys(Strings.isNullOrEmpty(sys) ? SecurityConstants.SYSTEM_ID : sys).
    setFunc(Strings.isNullOrEmpty(func) ? SecurityConstants.SEC_FUNC_FIRMS : func).
    setDataTypes("firm").
    setMode(mode == null ? AccessMode.READ.value() : mode.value()).
    setMember(cra.getUserId());

    Firm firm = queryFirst(PROC_READ_FIRM, readSql, Firm.class, args, cra, authDataCrit);
    if (firm != null && !Strings.isNullOrEmpty(firm.getAttributes())) {
      JsonHelper jsh = new JsonHelper();
      firm.setAttributesMap(jsh.deserialize(firm.getAttributes(), Map.class));
    }
    return firm;
  }
  private Firm readFirm(long firmId, CommonRequestArgs cra) {
    return readFirm(firmId, null, null, null, cra);
  }
  @Override
  public FirmKey insertFirm(Firm firm, CommonRequestArgs cra) {
    if (!authDao.hasAccess(SecurityConstants.SYSTEM_ID, SecurityConstants.SEC_FUNC_FIRMS, AccessMode.WRITE, cra)) {
      ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
    }
    firm.setStamp(new Date());
    firm.setCreationDate(firm.getStamp());
    firm.setRevNo(0);

    if (firm.getAttributesMap() != null) {
      JsonHelper jsh = new JsonHelper();
      firm.setAttributes(jsh.serialize(firm.getAttributesMap()));
    }

    UpdateResult ur = insert(PROC_INSERT_FIRM, insertSql, firm, cra);
    if (ur.numberOfRowAffected == 0) {
      ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
    }
    return new FirmKey(ur.key, 0);
  }

  @Override
  public FirmKey updateFirm(Firm firm, CommonRequestArgs cra) {
    if (!authDao.hasAccess(SecurityConstants.SYSTEM_ID, SecurityConstants.SEC_FUNC_FIRMS, AccessMode.WRITE, cra)) {
      ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
    }
    if (firm.getAttributesMap() != null) {
      JsonHelper jsh = new JsonHelper();
      firm.setAttributes(jsh.serialize(firm.getAttributesMap()));
    }
    UpdateResult ur = update(PROC_UPDATE_FIRM, updateSql, firm, cra);
    if (ur.numberOfRowAffected == 0) {
      Firm ef = readFirm(firm.getFirmId(), cra);
      if (ef == null || ef.getRevNo() != firm.getRevNo()) {
        ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
      } else {
        ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
      }
    }
    return new FirmKey(firm.getFirmId(), firm.getRevNo() +1);
  }

  @Override
  public void deleteFirm(FirmKey firmKey, CommonRequestArgs cra) {
    if (!authDao.hasAccess(SecurityConstants.SYSTEM_ID, SecurityConstants.SEC_FUNC_FIRMS, AccessMode.WRITE, cra)) {
      ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
    }

    UpdateResult ur = delete(PROC_DELETE_FIRM, deleteSql, firmKey, cra);
    if (ur.numberOfRowAffected == 0) {
      Firm ef = readFirm(firmKey.getFirmId(), cra);
      if (ef == null || ef.getRevNo() != firmKey.getRevNo()) {
        ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
      } else {
        ApplicationException.exception(DAOMessageID.UNAUTHORIZED.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"));
    long firmId = (Long)params.getValue("firmId");

    return readFirm(firmId, null, null, 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 setAuthDao(AuthDao authDao) {
    this.authDao = authDao;
  }
}
TOP

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

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.