Aipoでデータを削除する前にバリデートする方法

@iwasaki 360views 更新:2014年2月20日

Aipoではデータ登録・更新の際にvalidatorメソッドを通ります。

https://github.com/aipocom/aipo/blob/master/core/src/main/java/com/aimluck/eip/common/ALAbstractFormData.java#L179

  /**
   * データを新規登録します。
   * 
   * @param action
   * @param rundata
   * @param context
   * @return TRUE 成功 FALSE 失敗
   */
  public boolean doInsert(ALAction action, RunData rundata, Context context) {
    try {
      if (!doCheckSecurity(rundata, context)) {
        return false;
      }

      init(action, rundata, context);

      doCheckAclPermission(
        rundata,
        context,
        ALAccessControlConstants.VALUE_ACL_INSERT);

      action.setMode(ALEipConstants.MODE_INSERT);
      mode = action.getMode();
      rundata.getParameters().add(
        ALEipConstants.MODE,
        ALEipConstants.MODE_INSERT);
      List<String> msgList = new ArrayList<String>();
      setValidator();

      boolean res = false;
      if (isOverQuota()) {
        msgList.add(ALLocalizationUtils
          .getl10n("COMMON_FULL_DISK_DELETE_DETA_OR_CHANGE_PLAN"));
      } else {
        res =
          (setFormData(rundata, context, msgList) && validate(msgList) && insertFormData(
            rundata,
            context,
            msgList));
      }

しかし削除時にはvalidatorを通りません。

https://github.com/aipocom/aipo/blob/master/core/src/main/java/com/aimluck/eip/common/ALAbstractFormData.java#L312

  /**
   * データを削除します。
   * 
   * @param action
   * @param rundata
   * @param context
   * @return TRUE 成功 FALSE 失敗
   */
  public boolean doDelete(ALAction action, RunData rundata, Context context) {
    try {
      if (!doCheckSecurity(rundata, context)) {
        return false;
      }

      init(action, rundata, context);

      doCheckAclPermission(
        rundata,
        context,
        ALAccessControlConstants.VALUE_ACL_DELETE);

      action.setMode(ALEipConstants.MODE_DELETE);
      mode = action.getMode();
      rundata.getParameters().add(
        ALEipConstants.MODE,
        ALEipConstants.MODE_DELETE);

      List<String> msgList = new ArrayList<String>();
      boolean res = deleteFormData(rundata, context, msgList);
      action.setResultData(this);

削除時にデータをバリデートしたい場合は

https://github.com/aipocom/aipo/blob/master/portlets/todo/src/main/java/com/aimluck/eip/todo/ToDoCategoryFormData.java#L318

  /**
   * ToDoカテゴリを削除します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   */
  @Override
  protected boolean deleteFormData(RunData rundata, Context context,
      List<String> msgList) {
    try {
      // オブジェクトモデルを取得
      EipTTodoCategory category =
        ToDoUtils.getEipTTodoCategory(rundata, context);
      if (category == null) {
        return false;
      }

      if (category.getEipTTodoArray().size() > 0) {
        msgList.add("1つ以上のToDoを含むカテゴリを削除することはできません。");
        return false;
      }

のようにします。

 

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません