Package com.iisigroup.cap.base.handler

Source Code of com.iisigroup.cap.base.handler.CodeTypeHandler

/*
*
* Copyright (c) 2009-2012 International Integrated System, Inc.
* All Rights Reserved.
*
* Licensed Materials - Property of International Integrated System, Inc.
*
* This software is confidential and proprietary information of
* International Integrated System, Inc. ("Confidential Information").
*/
package com.iisigroup.cap.base.handler;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.util.ReflectionUtils;

import com.iisigroup.cap.annotation.HandlerType;
import com.iisigroup.cap.annotation.HandlerType.HandlerTypeEnum;
import com.iisigroup.cap.base.CapFunctionCode;
import com.iisigroup.cap.base.model.CodeType;
import com.iisigroup.cap.base.service.CodeTypeService;
import com.iisigroup.cap.component.IRequest;
import com.iisigroup.cap.dao.utils.ISearch;
import com.iisigroup.cap.dao.utils.SearchMode;
import com.iisigroup.cap.exception.CapMessageException;
import com.iisigroup.cap.formatter.ADDateFormatter;
import com.iisigroup.cap.formatter.IFormatter;
import com.iisigroup.cap.handler.MFormHandler;
import com.iisigroup.cap.model.Page;
import com.iisigroup.cap.response.AjaxFormResult;
import com.iisigroup.cap.response.GridResult;
import com.iisigroup.cap.response.IResult;
import com.iisigroup.cap.security.CapSecurityContext;
import com.iisigroup.cap.service.ICommonService;
import com.iisigroup.cap.utils.CapAppContext;
import com.iisigroup.cap.utils.CapBeanUtil;
import com.iisigroup.cap.utils.CapDate;
import com.iisigroup.cap.utils.CapString;
import com.isigroup.cap.base.annotation.CapAuditLogAction;
import com.isigroup.cap.base.annotation.CapAuditLogAction.CapActionTypeEnum;

/**
* <pre>
* base Handler
* </pre>
*
* @since 2011/11/28
* @author rodeschen
* @version <ul>
*          <li>2011/11/28,rodeschen,new
*          <li>2011/12/23,gabriella,add method
*          <li>2012/3/1,rodeschen,增加判斷重覆及更改程式名稱
*          </ul>
*/
@Scope("request")
@Controller("codetypehandler")
public class CodeTypeHandler extends MFormHandler {

  @Resource
  private CodeTypeService codeTypeService;

  @Resource
  private ICommonService commonService;


  @CapAuditLogAction(functionCode=CapFunctionCode.F101, actionType = CapActionTypeEnum.Query)
  @HandlerType(HandlerTypeEnum.GRID)
  public GridResult query(ISearch search, IRequest params) {
    if (!CapString.isEmpty(params.get("locale"))) {
      search.addSearchModeParameters(SearchMode.EQUALS, "locale",
          params.get("locale"));
    }
    if (!CapString.isEmpty(params.get("codeType"))) {
      search.addSearchModeParameters(SearchMode.EQUALS, "codeType",
          params.get("codeType"));
    }
    if (!search.hasOrderBy()) {
      search.addOrderBy("codeType");
      search.addOrderBy("codeOrder");
    } else {
      Map<String, Boolean> m = search.getOrderBy();
      if (!m.containsKey("codeType")) {
        search.addOrderBy("codeType");
      }
      if (!m.containsKey("codeOrder")) {
        search.addOrderBy("codeOrder");
      }
    }
    Page<CodeType> page = commonService.findPage(CodeType.class, search);
    Map<String, IFormatter> fmt = new HashMap<String, IFormatter>();
    fmt.put("updateTime", new ADDateFormatter());
    return new GridResult(page.getContent(), page.getTotalRow(), fmt);
  }// ;

  /**
   * modify codetype
   *
   * @param request
   *            request
   * @return IResult
   */
  @CapAuditLogAction(functionCode=CapFunctionCode.F101, actionType = CapActionTypeEnum.Update)
  public IResult modify(IRequest request) {
    AjaxFormResult result = new AjaxFormResult();
    String type = request.get("type");
    String locale = CapSecurityContext.getLocale().toString();
    CodeType code = codeTypeService.getByCodeTypeAndValue(
        request.get("codeType"), request.get("codeValue"), locale);

    if ("A".equals(type)) {
      if (code != null) {
        // codetype.0001 代碼重覆!
        throw new CapMessageException(
            CapAppContext.getMessage("codetype.0001"), getClass());
      }
      code = new CodeType();
    } else {
      if (code != null && !code.getOid().equals(request.get("oid"))) {
        // codetype.0001 代碼重覆!
        throw new CapMessageException(
            CapAppContext.getMessage("codetype.0001"), getClass());
      } else if (code == null) {
        code = codeTypeService.getById(request.get("oid"));
      }
    }
    CapBeanUtil.map2Bean(request, code, CodeType.class);
    if ("A".equals(type)) {
      code.setOid(null);
    }
    code.setUpdater(CapSecurityContext.getUserId());
    code.setUpdateTime(CapDate.getCurrentTimestamp());
    codeTypeService.saveCodeType(code);
    return result;
  }

  /**
   * delete codetype
   *
   * @param request
   *            request
   * @return IResult
   */
  @CapAuditLogAction(functionCode=CapFunctionCode.F101, actionType = CapActionTypeEnum.Delete)
  public IResult delete(IRequest request) {
    AjaxFormResult result = new AjaxFormResult();
    codeTypeService.deleteById(request.get("oid"));
    return result;
  }

  /**
   * get combo list By Keys
   *
   * @param request
   *            request
   * @return IResult
   */
  @CapAuditLogAction(functionCode=CapFunctionCode.F101, actionType = CapActionTypeEnum.Query)
  @SuppressWarnings("rawtypes")
  public IResult queryByKeys(IRequest request) {
    String locale = CapSecurityContext.getLocale().toString();
    String[] keys = request.getParamsAsStringArray("keys");
    String[] aKeys = request.getParamsAsStringArray("akeys");
    AjaxFormResult mresult = new AjaxFormResult();
    if (keys.length > 0 && !CapString.isEmpty(keys[0])) {
      Set<String> k = new HashSet<String>(Arrays.asList(keys));// 排除重覆的key
      Map<String, AjaxFormResult> m = codeTypeService.getCodeTypeByTypes(
          k.toArray(new String[k.size()]), locale);
      mresult.setResultMap(m);
    }
    if (aKeys.length > 0 && !CapString.isEmpty(aKeys[0])) {
      Class[] paramTypes = { IRequest.class };
      IResult rtn = null;
      for (String key : aKeys) {
        if (mresult.containsKey(key)) {
          continue;
        }
        Method method = ReflectionUtils.findMethod(this.getClass(),
            key, paramTypes);
        if (method != null) {
          try {
            rtn = (IResult) method.invoke(this, request);
          } catch (Exception e) {
            logger.error("load ComboBox error : key = " + key, e);
          }
          mresult.set(key, (AjaxFormResult) rtn);
        }
      }
    }
    return mresult;
  }// ;

}// ~
TOP

Related Classes of com.iisigroup.cap.base.handler.CodeTypeHandler

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.