intra-mart Accel Kaiden! プログラミングガイド 第12版 2020-04-01

5.4.1. プロジェクトマスタインポート

プロジェクトマスタインポートのサンプルソースです。
本サンプルソースは「intra-mart Accel Kaiden! ワークフローモジュール 2.0.2」から抜粋したソースです。

5.4.1.1. 一覧

src
└─main
    ├─generated
    │  └─jp
    │      └─co
    │          └─slcs
    │              └─kaiden2
    │                  └─product_workflow
    │                      └─foundation
    │                          └─model
    │                              ├─entity
    │                              │      K30mProject.java
    │                              │      K30mProjectNames.java
    │                              └─service
    │                                      K30mProjectCondition.java
    │                                      K30mProjectService.java
    ├─java
    │  └─jp
    │      └─co
    │          └─slcs
    │              └─kaiden2
    │                  └─product_workflow
    │                      ├─feature
    │                      │  └─job
    │                      │      └─kaiden
    │                      │          └─project
    │                      │              │  ProjectJobConstants.java
    │                      │              │  ProjectProp.java
    │                      │              └─imp
    │                      │                      ProjectImportJob.java
    │                      └─foundation
    │                          ├─manager
    │                          │  └─project
    │                          │      │  ProjectCriteriaDto.java
    │                          │      │  ProjectManager.java
    │                          │      │  ProjectManagerDto.java
    │                          │      │  ProjectManagerDtoFieldName.java
    │                          │      └─impl
    │                          │              ProjectManagerImpl.java
    │                          └─model
    │                              └─xml_schema
    │                                  └─project_import_settings
    │                                          ProjectImportSettings.java
    ├─resources
    │  └─META-INF
    │      └─sql
    │          └─jp
    │              └─co
    │                  └─slcs
    │                      └─kaiden2
    │                          └─product_workflow
    │                              └─foundation
    │                                  └─model
    │                                      └─service
    │                                          └─K30mProjectService
    │                                                  selectView.sql
    └─webapp
        └─WEB-INF
            └─classes
                └─jp
                    └─co
                        └─slcs
                            └─kaiden2
                                └─product_workflow
                                    └─foundation
                                        └─model
                                            └─xml_schema
                                                └─project_import_settings
                                                        ProjectImportSettings.xml

5.4.1.2. Java

5.4.1.2.1. Job

  • Path
    src/main/java/jp/co/slcs/kaiden2/product_workflow/feature/job/kaiden/project/imp/ProjectImportJob.java
package jp.co.slcs.kaiden2.product_workflow.feature.job.kaiden.project.imp;

import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_COMPANY_EXISTS;
import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_KAIDEN_ID;
import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_MAX_LENGTH;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PARENT_COMPANY_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PARENT_PROJECT_CD;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import jp.co.slcs.kaiden2.base.foundation.job.AbstractTermMasterImportJob;
import jp.co.slcs.kaiden2.base.foundation.job.KaidenJobProcessType;
import jp.co.slcs.kaiden2.base.foundation.master.TermMasterManagerForJob;
import jp.co.slcs.kaiden2.base.foundation.model.dto.KaidenDto;
import jp.co.slcs.kaiden2.base.foundation.model.xml_schema.generic_jop_process_result.GenericJobProcessResult;
import jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ErrorMode;
import jp.co.slcs.kaiden2.base.foundation.util.validate.model.dto.ValidateDefsDto;
import jp.co.slcs.kaiden2.product_workflow.feature.job.kaiden.project.ProjectJobConstants;
import jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManager;
import jp.co.slcs.kaiden2.product_workflow.foundation.model.xml_schema.project_import_settings.ProjectImportSettings;
import jp.co.slcs.kaiden2.product_workflow.foundation.util.validate.conf.ConstValidationIdKaidenProductWorkflow;
import org.seasar.framework.container.SingletonS2Container;

/**
 * プロジェクトマスタImporter.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
public class ProjectImportJob extends AbstractTermMasterImportJob<ProjectImportSettings, GenericJobProcessResult> {
    
    /** ProjectManager. */
    private final ProjectManager projectManager;
    
    /**
     * コンストラクタ.
     */
    public ProjectImportJob() {
        super(KaidenJobProcessType.IMPORT, ProjectJobConstants.KAIDEN_JOB_ID, ErrorMode.ERROR_CONTINUE);
        projectManager = SingletonS2Container.getComponent("projectManager");
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    protected ProjectImportSettings readSettingsForImport() {
        return super.read(ProjectImportSettings.class);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    protected GenericJobProcessResult getGenericJobProcessResult() {
        return new GenericJobProcessResult();
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    protected LinkedHashMap<String, Map<String, String>> getSurfacesMap() {
        LinkedHashMap<String, Map<String, String>> surfacesMap = new LinkedHashMap<String, Map<String, String>>();
        surfacesMap.put(createUniqueKey(TARGET_MASTER_KEY), ProjectJobConstants.PROJECT_MST_SURFACES);
        return surfacesMap;
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    protected List<ValidateDefsDto> addValidateRuleSub() {
        
        // 新規登録用の検証定義リスト取得
        List<ValidateDefsDto> vDefs = projectManager.getValidateDefsDtoList4Entry();
        
        int trgIdx = -1;
        
        for (int i = 0; i < vDefs.size(); i++) {
            if (ConstValidationIdKaidenProductWorkflow.VALID_PROJECT_EXISTS.equals(vDefs.get(i).singleValidationId)) {
                trgIdx = i;
                break;
            }
        }
        
        // プロジェクトマスタ存在チェックを削除(これから登録するので存在チェックは行わない)
        if (trgIdx >= 0) {
            vDefs.remove(trgIdx);
        }
        
        // インポートバッチ独自実装分追加
        // 会社コード(上位)
        vDefs.add(new ValidateDefsDto(PARENT_COMPANY_CD, VALID_COMPANY_EXISTS, PARENT_COMPANY_CD, "", "true"));
        // プロジェクトコード(上位)
        vDefs.add(new ValidateDefsDto(PARENT_PROJECT_CD, VALID_MAX_LENGTH, String
                .valueOf(ProjectManager.PROJECT_CD_LEN)));
        vDefs.add(new ValidateDefsDto(PARENT_PROJECT_CD, VALID_KAIDEN_ID));
        
        return vDefs;
    }
    
    /** {@inheritDoc} */
    @SuppressWarnings("unchecked")
    @Override
    protected TermMasterManagerForJob<? extends KaidenDto> getDefaultManager() {
        return (TermMasterManagerForJob<? extends KaidenDto>) projectManager;
    }
    
}
  • Path
    src/main/java/jp/co/slcs/kaiden2/product_workflow/feature/job/kaiden/project/ProjectJobConstants.java
package jp.co.slcs.kaiden2.product_workflow.feature.job.kaiden.project;

import java.util.LinkedHashMap;
import jp.co.slcs.kaiden2.base.foundation.job.KaidenJobIdIF;

/**
 * プロジェクトマスタImporter/expoter定数.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
public final class ProjectJobConstants {
    
    /**
     * コンストラクタ.
     */
    private ProjectJobConstants() {
    }
    
    /** 処理対象機能皆伝ジョブID:プロジェクトマスタ. */
    public static final KaidenJobIdIF KAIDEN_JOB_ID = ProjectProp.KaidenJobID.KAIDEN_JOB_ID_IMPORT;
    /** プロジェクトマスタラベル定義. */
    public static final LinkedHashMap<String, String> PROJECT_MST_SURFACES = ProjectProp.Surfaces.getSurfaces();
    /** プロジェクトマスタファイルIndex. */
    public static final int DATA_FILE_INDEX = 0;
}
  • Path
    src/main/java/jp/co/slcs/kaiden2/product_workflow/feature/job/kaiden/project/ProjectProp.java
package jp.co.slcs.kaiden2.product_workflow.feature.job.kaiden.project;

import java.util.LinkedHashMap;
import jp.co.slcs.kaiden2.base.foundation.conf.BaseProp;
import jp.co.slcs.kaiden2.base.foundation.exception.KaidenIllegalParametersException;
import jp.co.slcs.kaiden2.base.foundation.helper.PropertyHelper;
import jp.co.slcs.kaiden2.base.foundation.job.KaidenJobIdIF;
import jp.co.slcs.kaiden2.base.foundation.job.SurfacesIF;
import jp.co.slcs.kaiden2.product_workflow.foundation.conf.ExtensionsProp;
import jp.co.slcs.kaiden2.product_workflow.foundation.conf.ProductWorkflowProp;
import jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName;
import org.seasar.framework.container.SingletonS2Container;

/**
 * プロジェクトマスタDBカラムプロパティ.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
public final class ProjectProp {
    
    /**
     * プロジェクトマスタDBカラム.
     * 
     * @author Sumitomo Life Information Systems Co.,Ltd.
     */
    public static final class C {
        
        /** 皆伝ジョブID. */
        public static final String KAIDEN_JOB_ID_IMPORT = "kaiden-job-master-import-project";
        /** 会社コード. */
        public static final String COMPANY_CD = ProjectManagerDtoFieldName.COMPANY_CD;
        /** プロジェクトコード. */
        public static final String PROJECT_CD = ProjectManagerDtoFieldName.PROJECT_CD;
        /** 期間コード. */
        public static final String TERM_CD = ProjectManagerDtoFieldName.TERM_CD;
        /** ロケールid. */
        public static final String LOCALE_ID = ProjectManagerDtoFieldName.LOCALE_ID;
        /** プロジェクト名称. */
        public static final String PROJECT_NAME = ProjectManagerDtoFieldName.PROJECT_NAME;
        /** 開始日. */
        public static final String START_DATE = ProjectManagerDtoFieldName.START_DATE;
        /** 終了日. */
        public static final String END_DATE = ProjectManagerDtoFieldName.END_DATE;
        /** 削除フラグ. */
        public static final String DELETE_FLAG = ProjectManagerDtoFieldName.DELETE_FLAG;
        /** 会社コード(上位プロジェクト). */
        public static final String PARENT_COMPANY_CD = ProjectManagerDtoFieldName.PARENT_COMPANY_CD;
        /** プロジェクトコード(上位プロジェクト). */
        public static final String PARENT_PROJECT_CD = ProjectManagerDtoFieldName.PARENT_PROJECT_CD;
    }
    
    /**
     * プロジェクトマスタDBカラム名称.
     * 
     * @author Sumitomo Life Information Systems Co.,Ltd.
     */
    public static final class S {
        
        /** ジョブ名称. */
        public static final String JOB_NAME_IMPORT = ProductWorkflowProp.S.ProjectJob.JOB_NAME_IMPORT;
        /** 会社コード. */
        public static final String COMPANY_CD = BaseProp.S.COMPANY_CD;
        /** プロジェクトコード. */
        public static final String PROJECT_CD = ProductWorkflowProp.S.PROJECT_CD;
        /** 期間コード. */
        public static final String TERM_CD = BaseProp.S.TERM_CD;
        /** ロケールid. */
        public static final String LOCALE_ID = BaseProp.S.LOCALE_ID;
        /** プロジェクト名称. */
        public static final String PROJECT_NAME = ProductWorkflowProp.S.PROJECT_NAME;
        /** 開始日. */
        public static final String START_DATE = BaseProp.S.START_DATE;
        /** 終了日. */
        public static final String END_DATE = BaseProp.S.END_DATE;
        /** 削除フラグ. */
        public static final String DELETE_FLAG = BaseProp.S.DELETE_FLAG;
        /** 会社コード(上位プロジェクト). */
        public static final String PARENT_COMPANY_CD = ProductWorkflowProp.S.Project.PARENT_COMPANY_CD;
        /** プロジェクトコード(上位プロジェクト). */
        public static final String PARENT_PROJECT_CD = ProductWorkflowProp.S.Project.PARENT_PROJECT_CD;
    }
    
    /**
     * プロジェクトマスタJob IDの列挙.
     * 
     * @author Sumitomo Life Information Systems Co.,Ltd.
     */
    public static enum KaidenJobID implements KaidenJobIdIF {
        
        /** 皆伝ジョブID(インポート). */
        KAIDEN_JOB_ID_IMPORT(ProjectProp.C.KAIDEN_JOB_ID_IMPORT, ProjectProp.S.JOB_NAME_IMPORT);
        
        /** 皆伝ジョブID. */
        private final String kaidenJobId;
        /** ジョブ名称用サーフェスキー. */
        private final String surfaceKey;
        
        /**
         * コンストラクタ.
         * 
         * @param kaidenJobId ジョブID
         * @param surfaceKey サーフィスキー
         */
        private KaidenJobID(String kaidenJobId, String surfaceKey) {
            this.kaidenJobId = kaidenJobId;
            this.surfaceKey = surfaceKey;
        }
        
        /**
         * {@inheritDoc}
         */
        @Override
        public String getKaidenJobId() {
            return kaidenJobId;
        }
        
        /**
         * {@inheritDoc}
         */
        @Override
        public String getKaidenJobName() {
            return SingletonS2Container.getComponent(PropertyHelper.class).getSurface(surfaceKey);
        }
    }
    
    /**
     * プロジェクトマスタラベル定義の列挙.
     * 
     * @author Sumitomo Life Information Systems Co.,Ltd.
     */
    public enum Surfaces implements SurfacesIF {
        
        /** 会社コード. */
        COMPANY_CD(ProjectProp.C.COMPANY_CD, ProjectProp.S.COMPANY_CD),
        /** プロジェクトコード. */
        PROJECT_CD(ProjectProp.C.PROJECT_CD, ProjectProp.S.PROJECT_CD),
        /** 期間コード. */
        TERM_CD(ProjectProp.C.TERM_CD, ProjectProp.S.TERM_CD),
        /** ロケールid. */
        LOCALE_ID(ProjectProp.C.LOCALE_ID, ProjectProp.S.LOCALE_ID),
        /** プロジェクト名称. */
        PROJECT_NAME(ProjectProp.C.PROJECT_NAME, ProjectProp.S.PROJECT_NAME),
        /** 開始日. */
        START_DATE(ProjectProp.C.START_DATE, ProjectProp.S.START_DATE),
        /** 終了日. */
        END_DATE(ProjectProp.C.END_DATE, ProjectProp.S.END_DATE),
        /** 削除フラグ. */
        DELETE_FLAG(ProjectProp.C.DELETE_FLAG, ProjectProp.S.DELETE_FLAG),
        /** 会社コード(上位プロジェクト). */
        PARENT_COMPANY_CD(ProjectProp.C.PARENT_COMPANY_CD, ProjectProp.S.PARENT_COMPANY_CD),
        /** プロジェクトコード(上位プロジェクト). */
        PARENT_PROJECT_CD(ProjectProp.C.PARENT_PROJECT_CD, ProjectProp.S.PARENT_PROJECT_CD);
        
        /** ラベルキー. */
        private final String key;
        /** ラベル名称. */
        private final String name;
        
        /**
         * コンストラクタ.
         * 
         * @param columnName ラベルキー
         * @param surfaceKey サーフィスキー
         */
        private Surfaces(String columnName, String surfaceKey) {
            key = columnName;
            name = SingletonS2Container.getComponent(PropertyHelper.class).getSurface(surfaceKey);
        }
        
        /**
         * {@inheritDoc}
         */
        @Override
        public String getKey() {
            return key;
        }
        
        /**
         * {@inheritDoc}
         */
        @Override
        public String getValue() {
            return name;
        }
        
        /**
         * ラベルキーから自身を返却.
         * 
         * @param key ラベルキー値
         * @return 自身
         */
        public static Surfaces codeOf(String key) {
            for (Surfaces that : Surfaces.values()) {
                if (that.getKey().equals(key)) {
                    return that;
                }
            }
            throw KaidenIllegalParametersException.makeInstance();
        }
        
        /**
         * ラベル名称から自身を返却.
         * 
         * @param name ラベル名称
         * @return 自身
         */
        public static Surfaces nameOf(String name) {
            for (Surfaces that : Surfaces.values()) {
                if (that.getValue().equals(name)) {
                    return that;
                }
            }
            throw KaidenIllegalParametersException.makeInstance();
        }
        
        /**
         * ラベル定義を取得します.
         * 
         * @return ラベル定義
         */
        public static LinkedHashMap<String, String> getSurfaces() {
            
            LinkedHashMap<String, String> surfaces = new LinkedHashMap<String, String>();
            
            for (Surfaces projectSurfaces : Surfaces.values()) {
                surfaces.put(projectSurfaces.getKey(), projectSurfaces.getValue());
            }
            
            surfaces.putAll(ExtensionsProp.Surfaces.getSurfaces());
            
            return surfaces;
        }
    }
}

5.4.1.2.2. Manager

  • Path
    src/main/java/jp/co/slcs/kaiden2/product_workflow/foundation/manager/project/ProjectManager.java
package jp.co.slcs.kaiden2.product_workflow.foundation.manager.project;

import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.COMPANY_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PARENT_COMPANY_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PARENT_PROJECT_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PROJECT_CD;
import java.util.List;
import java.util.Map;
import jp.co.slcs.kaiden2.base.foundation.exception.KaidenIllegalParametersException;
import jp.co.slcs.kaiden2.base.foundation.helper.PropertyHelper;
import jp.co.slcs.kaiden2.base.foundation.helper.ValidateMapHelper;
import jp.co.slcs.kaiden2.base.foundation.master.TermMasterManager;
import jp.co.slcs.kaiden2.base.foundation.master.TermMasterManagerForJob;
import jp.co.slcs.kaiden2.base.foundation.util.StringUtil;
import jp.co.slcs.kaiden2.base.foundation.util.validate.KaidenAbstractValidator;
import jp.co.slcs.kaiden2.base.foundation.util.validate.KaidenValidateResult;
import jp.co.slcs.kaiden2.base.foundation.util.validate.KaidenValidatorIF;
import jp.co.slcs.kaiden2.base.foundation.util.validate.model.dto.ValidateDefsDto;
import jp.co.slcs.kaiden2.product_workflow.foundation.conf.ProductWorkflowProp;
import org.seasar.framework.container.SingletonS2Container;

/**
 * プロジェクトマネージャのinterface.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
public interface ProjectManager extends TermMasterManager<ProjectManagerDto>,
        TermMasterManagerForJob<ProjectManagerDto> {
    
    /**
     * プロジェクトコードの最大長.
     */
    public static final int PROJECT_CD_LEN = 100;
    /**
     * プロジェクト名の最大長.
     */
    public static final int PROJECT_NAME_LEN = 250;
    
    /**
     * 新規登録用の検証定義リストを返却します.
     * 
     * @return バリデート実行クラス用パラメタDTOリスト
     */
    public List<ValidateDefsDto> getValidateDefsDtoList4Entry();
    
    /**
     * 更新登録用の検証定義リストを返却します.
     * 
     * @return バリデート実行クラス用パラメタDTOリスト
     */
    public List<ValidateDefsDto> getValidateDefsDtoList4Renew();
    
    /**
     * カスタムバリデート_自プロジェクト・上位プロジェクト同一チェック.
     * <p>
     * 自プロジェクトと上位プロジェクトが同一コードの場合はエラーとする。
     * </p>
     */
    class CustomValidateNotEqualParent extends KaidenAbstractValidator implements KaidenValidatorIF {
        
        /** コンストラクタ. */
        public CustomValidateNotEqualParent() {
            super();
        }
        
        /**
         * {@inheritDoc}
         * <p>
         * チェックエラーとなる条件<br>
         * <ul>
         * <li>自プロジェクト・上位プロジェクト同一チェック。</li>
         * <li>自プロジェクトと上位プロジェクトが同一コードの場合はエラーとする。</li>
         * </ul>
         * 以下の場合、チェックを行いません。
         * <ul>
         * <li>自プロジェクトコード・自会社コードのいずれかが設定されていない場合</li>
         * <li>上位プロジェクトコード・上位会社コードの両方が未設定の場合</li>
         * </ul>
         * 以下の場合、パラメーターエラーとします。
         * <ul>
         * <li>上位プロジェクトコード・上位会社コードの片方が未設定の場合</li>
         * </ul>
         * </p>
         */
        @Override
        public KaidenValidateResult executeValidate(Map<String, Object> valueMap, String fieldKey, String[] args,
                Map<String, String> surfaces) {
            
            KaidenValidateResult result = super.makeNewValidateResult(fieldKey, surfaces);
            
            ValidateMapHelper validateMapHelper = SingletonS2Container.getComponent(ValidateMapHelper.class);
            
            String thisCompanyCd = validateMapHelper.getValueForString(valueMap, COMPANY_CD);
            String thisProjectCd = validateMapHelper.getValueForString(valueMap, PROJECT_CD);
            
            // 自プロジェクトコードまたは自会社コードが設定されていない場合は、エラーとしない
            if (StringUtil.isEmptyAnyOne(thisCompanyCd, thisProjectCd)) {
                return result;
            }
            
            String parentCompanyCd = validateMapHelper.getValueForString(valueMap, PARENT_COMPANY_CD);
            String parentProjectCd = validateMapHelper.getValueForString(valueMap, PARENT_PROJECT_CD);
            
            // 上位プロジェクトコードと上位会社コードの両方が未設定の場合、エラーとしない
            if (StringUtil.isEmpty(parentCompanyCd, parentProjectCd)) {
                return result;
            }
            
            // 上位プロジェクトコード・上位会社コードの片方が未設定の場合、パラメーターエラー
            if (StringUtil.isEmptyAnyOne(thisCompanyCd, thisProjectCd)) {
                throw KaidenIllegalParametersException.makeInstance();
            }
            
            // 自プロジェクトコードと上位プロジェクトコードが同一かつ、自会社コードと上位会社コードが同一の場合、チェックエラー
            if (thisCompanyCd.equals(parentCompanyCd) && thisProjectCd.equals(parentProjectCd)) {
                PropertyHelper propertyHelper = SingletonS2Container.getComponent(PropertyHelper.class);
                String fieldName = validateMapHelper.getSurfaces(valueMap, surfaces, PARENT_PROJECT_CD);
                result.setErrorStatus(true);
                result.setValidateClass(this.getClass());
                result.setFieldKey(PARENT_PROJECT_CD);
                result.setFieldNm(fieldName);
                result.setMainMessageKey(ProductWorkflowProp.M.Project.W001);
                result.setMainMessage(propertyHelper.getMessage(ProductWorkflowProp.M.Project.W001, fieldName));
            }
            
            return result;
        }
        
    }
    
}

5.4.1.2.3. Manager(実装)

  • Path
    src/main/java/jp/co/slcs/kaiden2/product_workflow/foundation/manager/project/impl/ProjectManagerImpl.java
package jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.impl;

import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldLength.TERM_CD_LEN;
import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames.EXTENSION_A;
import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames.EXTENSION_B;
import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames.EXTENSION_C;
import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames.EXTENSION_D;
import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames.EXTENSION_E;
import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames.EXTENSION_F;
import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames.EXTENSION_G;
import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames.EXTENSION_H;
import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames.EXTENSION_I;
import static jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames.EXTENSION_J;
import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_COMPANY_EXISTS;
import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_DATE;
import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_DATE_MIN;
import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_FLAG;
import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_KAIDEN_ID;
import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_LOCALE;
import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_MAX_LENGTH;
import static jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ConstValidationIdKaidenBase.VALID_REQUIRED;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.COMPANY_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.COMPANY_NAME;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.DELETE_FLAG;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.END_DATE;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.LOCALE_ID;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PARENT_COMPANY_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PARENT_PROJECT_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PARENT_PROJECT_NAME;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PROJECT_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PROJECT_NAME;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.START_DATE;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.TERM_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.util.validate.conf.ConstValidationIdKaidenProductWorkflow.VALID_PROJECT_EXISTS;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import jp.co.slcs.kaiden2.base.foundation.conf.GenericFlag;
import jp.co.slcs.kaiden2.base.foundation.exception.KaidenApplicationException;
import jp.co.slcs.kaiden2.base.foundation.exception.KaidenDuplicationEntryException;
import jp.co.slcs.kaiden2.base.foundation.exception.KaidenHaventAuthorityToCompanyException;
import jp.co.slcs.kaiden2.base.foundation.exception.KaidenIllegalParametersException;
import jp.co.slcs.kaiden2.base.foundation.exception.KaidenOptimisticLockException;
import jp.co.slcs.kaiden2.base.foundation.exception.KaidenSystemException;
import jp.co.slcs.kaiden2.base.foundation.exception.KaidenValidateException;
import jp.co.slcs.kaiden2.base.foundation.manager.AbstractTermMasterManager;
import jp.co.slcs.kaiden2.base.foundation.manager.AuthorityCriteriaDto;
import jp.co.slcs.kaiden2.base.foundation.manager.KeywordsCriteriaDto;
import jp.co.slcs.kaiden2.base.foundation.manager.common.IterateBusinessLogicIF;
import jp.co.slcs.kaiden2.base.foundation.model.dto.KaidenDto;
import jp.co.slcs.kaiden2.base.foundation.model.dto.OrderDto;
import jp.co.slcs.kaiden2.base.foundation.util.CollectionUtil;
import jp.co.slcs.kaiden2.base.foundation.util.StringUtil;
import jp.co.slcs.kaiden2.base.foundation.util.validate.KaidenValidateResult;
import jp.co.slcs.kaiden2.base.foundation.util.validate.conf.ErrorMode;
import jp.co.slcs.kaiden2.base.foundation.util.validate.model.dto.ValidateDefsDto;
import jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManager;
import jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDto;
import jp.co.slcs.kaiden2.product_workflow.foundation.model.service.K30mProjectService;
import org.seasar.framework.beans.util.Beans;

/**
 * プロジェクトマスタへの各種操作を提供するAPI.<br>
 * <br>
 * <p>
 * 本APIは、主にデータベース操作を行いますが、より業務的な機能を付加した操作を提供します。<br>
 * 使用する際には、{@link ProjectManagerDto}クラスまたはそのリストをパラメータとして渡すと、<br>
 * {@link ProjectManagerDto}クラスまたはそのリストが戻り値として返却されます。<br>
 * (一部例外あり。各APIを参照。)<br>
 * <br>
 * <b>機能一覧(共通)</b>
 * <table border="1">
 * <tr>
 * <td>機能概要</td>
 * <td>メソッド</td>
 * <td>カテゴリ</td>
 * <td>備考</td>
 * </tr>
 * <tr>
 * <td>主キー検索</td>
 * <td>select</td>
 * <td>主キー検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>主キー検索(認可設定無視)</td>
 * <td>selectIgnoreAuthCompany</td>
 * <td>主キー検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>汎用検索</td>
 * <td>selectList</td>
 * <td>汎用検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>汎用検索(認可設定無視)</td>
 * <td>selectListIgnoreAuthCompany</td>
 * <td>汎用検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>ロケール検索</td>
 * <td>selectLocales</td>
 * <td>ロケール検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>ロケール検索(認可設定無視)</td>
 * <td>selectLocalesIgnoreAuthCompany</td>
 * <td>ロケール検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>参照検索</td>
 * <td>selectListWithReference</td>
 * <td>参照検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>参照検索(認可設定無視)</td>
 * <td>selectListWithReferenceIgnoreAuthCompany</td>
 * <td>参照検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>キーワード検索</td>
 * <td>selectListKeywordFilter</td>
 * <td>キーワード検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>キーワード検索(認可設定無視)</td>
 * <td>selectListKeywordFilterIgnoreAuthCompany</td>
 * <td>キーワード検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>有効化</td>
 * <td>toEnabled</td>
 * <td>削除フラグ更新</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>有効化(認可設定無視)</td>
 * <td>toEnabledIgnoreAuthCompany</td>
 * <td>削除フラグ更新</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>無効化</td>
 * <td>toDisabled</td>
 * <td>削除フラグ更新</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>無効化(認可設定無視)</td>
 * <td>toDisabledIgnoreAuthCompany</td>
 * <td>削除フラグ更新</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>登録</td>
 * <td>entry</td>
 * <td>登録</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>登録(認可設定無視)</td>
 * <td>entryIgnoreAuthCompany</td>
 * <td>登録</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>削除</td>
 * <td>remove</td>
 * <td>削除</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>削除(認可設定無視)</td>
 * <td>removeIgnoreAuthCompany</td>
 * <td>削除</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>更新</td>
 * <td>renew</td>
 * <td>更新</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>更新(認可設定無視)</td>
 * <td>renewIgnoreAuthCompany</td>
 * <td>更新</td>
 * <td>&nbsp;</td>
 * </tr>
 * </table>
 * <br>
 * <br>
 * <b>機能一覧(期間化)</b>
 * <table border="1">
 * <tr>
 * <td>機能概要</td>
 * <td>メソッド</td>
 * <td>カテゴリ</td>
 * <td>備考</td>
 * </tr>
 * <tr>
 * <td>期間検索</td>
 * <td>selectTerms</td>
 * <td>期間検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>期間検索(認可設定無視)</td>
 * <td>selectTermsIgnoreAuthCompany</td>
 * <td>期間検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>基準日指定検索</td>
 * <td>selectListIncluedsSearchDate</td>
 * <td>基準日指定検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>基準日指定検索(認可設定無視)</td>
 * <td>selectListIncluedsSearchDateIgnoreAuthCompany</td>
 * <td>基準日指定検索</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>期間分割</td>
 * <td>divideTerm</td>
 * <td>期間分割</td>
 * <td><b>&nbsp;</b></td>
 * </tr>
 * <tr>
 * <td>期間分割(認可設定無視)</td>
 * <td>divideTermIgnoreAuthCompany</td>
 * <td>期間分割</td>
 * <td><b>&nbsp;</b></td>
 * </tr>
 * <tr>
 * <td>期間変更</td>
 * <td>moveTerm</td>
 * <td>期間変更</td>
 * <td>&nbsp;</td>
 * </tr>
 * <tr>
 * <td>期間変更(認可設定無視)</td>
 * <td>moveTermIgnoreAuthCompany</td>
 * <td>期間変更</td>
 * <td>&nbsp;</td>
 * </tr>
 * </table>
 * <br>
 * <br>
 * 機能に対するI/Oを以下に示します。(上記一覧のカテゴリ単位)<br>
 * <br>
 * 【IN】
 * <table border="1">
 * <tr>
 * <td align="right">●</td>
 * <td>:必須</td>
 * </tr>
 * <tr>
 * <td align="right">△</td>
 * <td>:任意、検索時完全一致条件</td>
 * </tr>
 * <tr>
 * <td align="right">▲</td>
 * <td>:任意、検索時部分一致条件</td>
 * </tr>
 * <tr>
 * <td align="right">×</td>
 * <td>:不要(設定されていても無視します。)</td>
 * </tr>
 * <tr>
 * <td align="right">☆</td>
 * <td>:各APIの説明を参照</td>
 * </tr>
 * <tr>
 * <td align="right">-</td>
 * <td>:対象外</td>
 * </tr>
 * </table>
 * <br>
 * 【OUT】
 * <table border="1">
 * <tr>
 * <td align="right">○</td>
 * <td>:あり</td>
 * </tr>
 * <tr>
 * <td align="right">×</td>
 * <td>:なし</td>
 * </tr>
 * <tr>
 * <td align="right">-</td>
 * <td>:対象外</td>
 * </tr>
 * </table>
 * <br>
 * <b>DTOクラスとメソッドのI/Oマトリクス(共通)</b>
 * <table border="1">
 * <tr>
 * <td rowspan="2" align="center"><b>DTOフィールド論理名</b></td>
 * <td rowspan="2" align="center"><b>DTOフィールド名</b></td>
 * <td colspan="2" align="center"><b>主キー<br>
 * 検索</b></td>
 * <td colspan="2" align="center"><b>汎用<br>
 * 検索</b></td>
 * <td colspan="2" align="center"><b>ロケール<br>
 * 検索</b></td>
 * <td colspan="2" align="center"><b>参照<br>
 * 検索</b></td>
 * <td colspan="2" align="center"><b>キーワード<br>
 * 検索</b></td>
 * <td colspan="2" align="center"><b>削除フラグ<br>
 * 更新</b></td>
 * <td colspan="2" align="center"><b>登録</b></td>
 * <td colspan="2" align="center"><b>削除</b></td>
 * <td colspan="2" align="center"><b>更新</b></td>
 * </tr>
 * <tr>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * </tr>
 * <tr>
 * <td><b>会社コード(*)</b></td>
 * <td><b>companyCd</b></td>
 * <td align="center">●</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">●</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td><b>プロジェクトコード(*)</b></td>
 * <td><b>projectCd</b></td>
 * <td align="center">●</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">●</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td><b>期間コード(*)</b></td>
 * <td><b>termCd</b></td>
 * <td align="center">●</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">●</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td><b>ロケールID(*)</b></td>
 * <td><b>localeId</b></td>
 * <td align="center">●</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>開始日</td>
 * <td>startDate</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>終了日</td>
 * <td>endDate</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>プロジェクト名称</td>
 * <td>projectName</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>削除フラグ</td>
 * <td>deleteFlag</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>会社コード(上位)</td>
 * <td>parentCompanyCd</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>プロジェクトコード(上位)</td>
 * <td>parentProjectCd</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>予備項目A~J</td>
 * <td>extensionA~J</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>登録日時</td>
 * <td>entryTs</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>登録者コード</td>
 * <td>entryUserCd</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>更新カウンタ</td>
 * <td>renewCnt</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">☆</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>更新日時</td>
 * <td>renewTs</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>更新者コード</td>
 * <td>renewUserCd</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">△</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>組織名称</td>
 * <td>companyName</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>プロジェクト名称(上位)</td>
 * <td>parentProjectName</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">▲</td>
 * <td align="center">○</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>検索基準日</td>
 * <td>searchCriteriaDate</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">☆</td>
 * <td align="center">-</td>
 * <td align="center">☆</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * <td align="center">-</td>
 * </tr>
 * </table>
 * <br>
 * <b>DTOクラスとメソッドのI/Oマトリクス(期間化)</b>
 * <table border="1">
 * <tr>
 * <td rowspan="2" align="center"><b>DTOフィールド論理名</b></td>
 * <td rowspan="2" align="center"><b>DTOフィールド名</b></td>
 * <td colspan="2" align="center"><b>期間検索</b></td>
 * <td colspan="2" align="center"><b>基準日指定検索</b></td>
 * <td colspan="2" align="center"><b>期間分割</b></td>
 * <td colspan="2" align="center"><b>期間変更</b></td>
 * </tr>
 * <tr>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * <td align="center"><b>I</b></td>
 * <td align="center"><b>O</b></td>
 * </tr>
 * <tr>
 * <td><b>会社コード(*)</b></td>
 * <td><b>companyCd</b></td>
 * <td align="center">●</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td><b>プロジェクトコード(*)</b></td>
 * <td><b>projectCd</b></td>
 * <td align="center">●</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td><b>期間コード(*)</b></td>
 * <td><b>termCd</b></td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td><b>ロケールID(*)</b></td>
 * <td><b>localeId</b></td>
 * <td align="center">●</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>開始日</td>
 * <td>startDate</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>終了日</td>
 * <td>endDate</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>プロジェクト名称</td>
 * <td>projectName</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>削除フラグ</td>
 * <td>deleteFlag</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>会社コード(上位)</td>
 * <td>parentCompanyCd</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>プロジェクトコード(上位)</td>
 * <td>parentProjectCd</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>予備項目A~J</td>
 * <td>extensionA~J</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>登録日時</td>
 * <td>entryTs</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>登録者コード</td>
 * <td>entryUserCd</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>更新カウンタ</td>
 * <td>renewCnt</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">☆</td>
 * <td align="center">-</td>
 * <td align="center">☆</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>更新日時</td>
 * <td>renewTs</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>更新者コード</td>
 * <td>renewUserCd</td>
 * <td align="center">×</td>
 * <td align="center">○</td>
 * <td align="center">△</td>
 * <td align="center">○</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>組織名称</td>
 * <td>companyName</td>
 * <td align="center">×</td>
 * <td align="center">×</td>
 * <td align="center">×</td>
 * <td align="center">×</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>プロジェクト名称(上位)</td>
 * <td>parentProjectName</td>
 * <td align="center">×</td>
 * <td align="center">×</td>
 * <td align="center">×</td>
 * <td align="center">×</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * <tr>
 * <td>検索基準日</td>
 * <td>searchCriteriaDate</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">●</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * <td align="center">×</td>
 * <td align="center">-</td>
 * </tr>
 * </table>
 * <br>
 * <br>
 * テーブルのPK項目にはフィールド名に(*)を付与しています。<br>
 * </p>
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
public class ProjectManagerImpl extends AbstractTermMasterManager<ProjectManagerDto> implements ProjectManager {
    
    /** K30mProjectService. */
    @Resource
    protected K30mProjectService k30mProjectService;
    
    /**
     * {@inheritDoc}
     */
    @Override
    public ProjectManagerDto select(ProjectManagerDto criteria, AuthorityCriteriaDto authCriteria) {
        return super.select(k30mProjectService, criteria, authCriteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public ProjectManagerDto selectIgnoreAuthCompany(ProjectManagerDto criteria) {
        return super.selectIgnoreAuthCompany(k30mProjectService, criteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectManagerDto> selectList(ProjectManagerDto criteria, AuthorityCriteriaDto authCriteria,
            List<OrderDto> order) {
        return super.selectList(k30mProjectService, criteria, authCriteria, order);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectManagerDto> selectListIgnoreAuthCompany(ProjectManagerDto criteria, List<OrderDto> order) {
        return super.selectListIgnoreAuthority(k30mProjectService, criteria, order);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectManagerDto> selectListWithReference(KaidenDto criteria, List<OrderDto> order,
            AuthorityCriteriaDto authCriteria) {
        String[] likeTarget = {PROJECT_NAME, EXTENSION_A, EXTENSION_B, EXTENSION_C, EXTENSION_D, EXTENSION_E,
                EXTENSION_F, EXTENSION_G, EXTENSION_H, EXTENSION_I, EXTENSION_J, COMPANY_NAME, PARENT_PROJECT_NAME};
        return super.selectBySql(k30mProjectService, "selectView.sql", criteria, order, authCriteria, likeTarget);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectManagerDto> selectListWithReferenceIgnoreAuthCompany(KaidenDto criteria, List<OrderDto> order) {
        String[] likeTarget = {PROJECT_NAME, EXTENSION_A, EXTENSION_B, EXTENSION_C, EXTENSION_D, EXTENSION_E,
                EXTENSION_F, EXTENSION_G, EXTENSION_H, EXTENSION_I, EXTENSION_J, COMPANY_NAME, PARENT_PROJECT_NAME};
        return super.selectBySqlIgnoreAuthority(k30mProjectService, "selectView.sql", criteria, order, likeTarget);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public Map<String, Object> selectListKeywordFilter(KaidenDto criteria, List<OrderDto> order,
            KeywordsCriteriaDto keywordsCriteria, AuthorityCriteriaDto authCriteria) {
        String[] likeTarget = {PROJECT_NAME, EXTENSION_A, EXTENSION_B, EXTENSION_C, EXTENSION_D, EXTENSION_E,
                EXTENSION_F, EXTENSION_G, EXTENSION_H, EXTENSION_I, EXTENSION_J, COMPANY_NAME, PARENT_PROJECT_NAME};
        return super.selectListByKeywords(k30mProjectService, "selectView.sql", criteria, order, keywordsCriteria,
                authCriteria, likeTarget);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public Map<String, Object> selectListKeywordFilterIgnoreAuthCompany(KaidenDto criteria, List<OrderDto> order,
            KeywordsCriteriaDto keywordsCriteria) {
        String[] likeTarget = {PROJECT_NAME, EXTENSION_A, EXTENSION_B, EXTENSION_C, EXTENSION_D, EXTENSION_E,
                EXTENSION_F, EXTENSION_G, EXTENSION_H, EXTENSION_I, EXTENSION_J, COMPANY_NAME, PARENT_PROJECT_NAME};
        return super.selectListByKeywordsIgnoreAuthority(k30mProjectService, "selectView.sql", criteria, order,
                keywordsCriteria, likeTarget);
    }
    
    /**
     * {@inheritDoc}
     * 
     * @throws KaidenOptimisticLockException
     */
    @Override
    public void toEnabled(ProjectManagerDto criteria, AuthorityCriteriaDto authCriteria)
            throws KaidenHaventAuthorityToCompanyException, KaidenOptimisticLockException {
        super.toEnabled(k30mProjectService, criteria, authCriteria);
    }
    
    /**
     * {@inheritDoc}
     * 
     * @throws KaidenOptimisticLockException
     */
    @Override
    public void toEnabledIgnoreAuthCompany(ProjectManagerDto criteria) throws KaidenOptimisticLockException {
        super.toEnabledIgnoreAuthCompany(k30mProjectService, criteria);
        
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public void toDisabled(ProjectManagerDto criteria, AuthorityCriteriaDto authCriteria)
            throws KaidenHaventAuthorityToCompanyException, KaidenOptimisticLockException {
        super.toDisabled(k30mProjectService, criteria, authCriteria);
        
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public void toDisabledIgnoreAuthCompany(ProjectManagerDto criteria) throws KaidenOptimisticLockException {
        super.toDisabledIgnoreAuthCompany(k30mProjectService, criteria);
        
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectManagerDto> selectLocales(ProjectManagerDto criteria, AuthorityCriteriaDto authCriteria) {
        return super.selectLocales(k30mProjectService, criteria, authCriteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectManagerDto> selectLocalesIgnoreAuthCompany(ProjectManagerDto criteria) {
        return super.selectLocalesIgnoreAuthCompany(k30mProjectService, criteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectManagerDto> selectTerms(ProjectManagerDto criteria, AuthorityCriteriaDto authCriteria) {
        return super.selectTerms(k30mProjectService, criteria, authCriteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectManagerDto> selectTermsIgnoreAuthCompany(ProjectManagerDto criteria) {
        return super.selectTermsIgnoreAuthCompany(k30mProjectService, criteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public int entry(List<ProjectManagerDto> dataList, AuthorityCriteriaDto authCriteria)
            throws KaidenHaventAuthorityToCompanyException, KaidenDuplicationEntryException {
        return super.entry(k30mProjectService, dataList, authCriteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public int entryIgnoreAuthCompany(List<ProjectManagerDto> dataList) throws KaidenDuplicationEntryException {
        return super.entryIgnoreAuthCompany(k30mProjectService, dataList);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public int remove(ProjectManagerDto criteria, AuthorityCriteriaDto authCriteria)
            throws KaidenHaventAuthorityToCompanyException {
        return super.remove(k30mProjectService, criteria, authCriteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public int removeIgnoreAuthCompany(ProjectManagerDto criteria) {
        return super.removeIgnoreAuthCompany(k30mProjectService, criteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public int renew(List<ProjectManagerDto> dataList, AuthorityCriteriaDto authCriteria)
            throws KaidenHaventAuthorityToCompanyException, KaidenOptimisticLockException {
        return super.renew(k30mProjectService, dataList, authCriteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public int renewIgnoreAuthCompany(List<ProjectManagerDto> dataList) throws KaidenOptimisticLockException {
        return super.renewIgnoreAuthCompany(k30mProjectService, dataList);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public void divideTerm(ProjectManagerDto criteria, Date divideDate, AuthorityCriteriaDto authCriteria)
            throws KaidenHaventAuthorityToCompanyException, KaidenOptimisticLockException, KaidenValidateException {
        super.divideTerm(k30mProjectService, criteria, divideDate, authCriteria);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public void divideTerm(ProjectManagerDto criteria, Date divideDate, AuthorityCriteriaDto authCriteria,
            String deleteFlag2nd) throws KaidenHaventAuthorityToCompanyException, KaidenOptimisticLockException,
            KaidenValidateException {
        String termCd2nd = super.divideTerm(k30mProjectService, criteria, divideDate, authCriteria);
        if (StringUtil.isNotEmpty(deleteFlag2nd)) {
            ProjectManagerDto criteria2nd = Beans.createAndCopy(ProjectManagerDto.class, criteria).execute();
            criteria2nd.termCd = termCd2nd;
            if (GenericFlag.isOn(deleteFlag2nd)) {
                toDisabled(criteria2nd, authCriteria);
            } else if (GenericFlag.isOff(deleteFlag2nd)) {
                toEnabled(criteria2nd, authCriteria);
            } else {
                throw KaidenIllegalParametersException.makeInstance();
            }
        }
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public void divideTermIgnoreAuthCompany(ProjectManagerDto criteria, Date divideDate)
            throws KaidenOptimisticLockException, KaidenValidateException {
        super.divideTermIgnoreAuthCompany(k30mProjectService, criteria, divideDate);
        
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public void divideTermIgnoreAuthCompany(ProjectManagerDto criteria, Date divideDate, String deleteFlag2nd)
            throws KaidenOptimisticLockException, KaidenValidateException {
        String termCd2nd = super.divideTermIgnoreAuthCompany(k30mProjectService, criteria, divideDate);
        if (StringUtil.isNotEmpty(deleteFlag2nd)) {
            ProjectManagerDto criteria2nd = Beans.createAndCopy(ProjectManagerDto.class, criteria).execute();
            criteria2nd.termCd = termCd2nd;
            if (GenericFlag.isOn(deleteFlag2nd)) {
                toDisabledIgnoreAuthCompany(criteria2nd);
            } else if (GenericFlag.isOff(deleteFlag2nd)) {
                toEnabledIgnoreAuthCompany(criteria2nd);
            } else {
                throw KaidenIllegalParametersException.makeInstance();
            }
        }
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public void moveTerm(ProjectManagerDto criteria, Date newStartDate, Date newEndDate,
            AuthorityCriteriaDto authCriteria) throws KaidenHaventAuthorityToCompanyException,
            KaidenOptimisticLockException, KaidenValidateException {
        super.moveTerm(k30mProjectService, criteria, newStartDate, newEndDate, authCriteria);
        
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public void moveTermIgnoreAuthCompany(ProjectManagerDto criteria, Date newStartDate, Date newEndDate)
            throws KaidenOptimisticLockException, KaidenValidateException {
        super.moveTermIgnoreAuthCompany(k30mProjectService, criteria, newStartDate, newEndDate);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public Class<? extends KaidenDto> getDtoClass() {
        return super.dtoClass;
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    protected List<String> getDuplicationCheckField() {
        return Arrays.asList(new String[] {COMPANY_CD, PROJECT_CD});
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectManagerDto> selectListIncluedsSearchDate(ProjectManagerDto criteria,
            AuthorityCriteriaDto authCriteria, List<OrderDto> order) {
        return super.selectListIncluedsSearchDate(k30mProjectService, criteria, authCriteria, order);
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public List<ProjectManagerDto> selectListIncluedsSearchDateIgnoreAuthCompany(ProjectManagerDto criteria,
            List<OrderDto> order) {
        return super.selectListIncluedsSearchDateIgnoreAuthCompany(k30mProjectService, criteria, order);
    }
    
    /**
     * {@inheritDoc}
     * <p>
     * {@link #getValidateDefsDtoList4Entry()}で取得した定義を基にバリデートを実行します。
     * </p>
     */
    @Override
    public List<KaidenValidateResult> validate4Entry(List<?> dtoList, Map<String, String> surfaces) {
        
        if (dtoList == null) {
            throw KaidenIllegalParametersException.makeInstance();
        }
        
        return makeValidateExecuter(dtoList, surfaces, getValidateDefsDtoList4Entry()).executeAll(
                ErrorMode.ERROR_CONTINUE);
    }
    
    /**
     * {@inheritDoc}
     * <p>
     * {@link #getValidateDefsDtoList4Renew()}で取得した定義を基にバリデートを実行します。
     * </p>
     */
    @Override
    public List<KaidenValidateResult> validate4Renew(List<?> dtoList, Map<String, String> surfaces) {
        
        if (dtoList == null) {
            throw KaidenIllegalParametersException.makeInstance();
        }
        return makeValidateExecuter(dtoList, surfaces, getValidateDefsDtoList4Renew()).executeAll(
                ErrorMode.ERROR_CONTINUE);
    }
    
    /**
     * {@inheritDoc}
     * <p>
     * 以下のバリデート定義のリストを返却します。
     * </p>
     * <table border="1">
     * <tr>
     * <th>項目名</th>
     * <th>検証内容</th>
     * </tr>
     * <tr>
     * <td>会社コード</td>
     * <td>必須、マスタ存在確認</td>
     * </tr>
     * <tr>
     * <td>プロジェクトコード</td>
     * <td>必須、皆伝コード、100桁</td>
     * </tr>
     * <tr>
     * <td>ロケールID</td>
     * <td>必須、ロケール妥当性</td>
     * </tr>
     * <tr>
     * <td>開始日</td>
     * <td>必須、日付(システム期間内)</td>
     * </tr>
     * <tr>
     * <td>終了日</td>
     * <td>必須、日付(システム期間内)、開始日・終了日大小チェック</td>
     * </tr>
     * <tr>
     * <td>プロジェクト名</td>
     * <td>必須、250文字</td>
     * </tr>
     * <tr>
     * <td>プロジェクトコード(上位プロジェクト)</td>
     * <td>半角英数、マスタ存在確認</td>
     * </tr>
     * <tr>
     * <td>会社コード(上位プロジェクト)</td>
     * <td>半角英数、マスタ存在確認※プロジェクトコード(上位プロジェクト)のマスタ存在確認に利用</td>
     * </tr>
     * <tr>
     * <td>削除フラグ</td>
     * <td>フラグ妥当性</td>
     * </tr>
     * <tr>
     * <td>プロジェクトコード(上位プロジェクト</td>
     * <td>自身のプロジェクトと上位プロジェクトの同一チェック</td>
     * </tr>
     * </table>
     */
    @Override
    public List<ValidateDefsDto> getValidateDefsDtoList4Entry() {
        List<ValidateDefsDto> result = new ArrayList<ValidateDefsDto>();
        // 会社コード
        result.add(new ValidateDefsDto(COMPANY_CD, VALID_REQUIRED));
        result.add(new ValidateDefsDto(COMPANY_CD, VALID_COMPANY_EXISTS, COMPANY_CD, "", "true"));
        // プロジェクトコード
        result.add(new ValidateDefsDto(PROJECT_CD, VALID_REQUIRED));
        result.add(new ValidateDefsDto(PROJECT_CD, VALID_MAX_LENGTH, String.valueOf(PROJECT_CD_LEN)));
        result.add(new ValidateDefsDto(PROJECT_CD, VALID_KAIDEN_ID));
        // ロケールid
        result.add(new ValidateDefsDto(LOCALE_ID, VALID_REQUIRED));
        result.add(new ValidateDefsDto(LOCALE_ID, VALID_LOCALE));
        // 開始日
        result.add(new ValidateDefsDto(START_DATE, VALID_REQUIRED));
        result.add(new ValidateDefsDto(START_DATE, VALID_DATE));
        // 終了日
        result.add(new ValidateDefsDto(END_DATE, VALID_REQUIRED));
        result.add(new ValidateDefsDto(END_DATE, VALID_DATE));
        result.add(new ValidateDefsDto(END_DATE, VALID_DATE_MIN, START_DATE));
        // プロジェクト名称
        result.add(new ValidateDefsDto(PROJECT_NAME, VALID_REQUIRED));
        result.add(new ValidateDefsDto(PROJECT_NAME, VALID_MAX_LENGTH, String.valueOf(PROJECT_NAME_LEN)));
        // プロジェクトコード(上位)
        result.add(new ValidateDefsDto(PARENT_PROJECT_CD, VALID_PROJECT_EXISTS, PARENT_PROJECT_CD, PARENT_COMPANY_CD,
                "", "true"));
        result.add(new ValidateDefsDto(PARENT_PROJECT_CD, new CustomValidateNotEqualParent()));
        // 削除フラグ
        result.add(new ValidateDefsDto(DELETE_FLAG, VALID_FLAG));
        
        return result;
    }
    
    /**
     * {@inheritDoc}
     * <p>
     * 以下のバリデート定義のリストを返却します。
     * </p>
     * <table border="1">
     * <tr>
     * <th>項目名</th>
     * <th>検証内容</th>
     * </tr>
     * <tr>
     * <td>会社コード</td>
     * <td>必須、マスタ存在確認</td>
     * </tr>
     * <tr>
     * <td>プロジェクトコード</td>
     * <td>必須、皆伝コード、100桁</td>
     * </tr>
     * <tr>
     * <td>期間コード</td>
     * <td>必須、皆伝コード、50桁</td>
     * </tr>
     * <tr>
     * <td>ロケールID</td>
     * <td>必須、ロケール妥当性</td>
     * </tr>
     * <tr>
     * <td>開始日</td>
     * <td>必須、日付(システム期間内)</td>
     * </tr>
     * <tr>
     * <td>終了日</td>
     * <td>必須、日付(システム期間内)、開始日・終了日大小チェック</td>
     * </tr>
     * <tr>
     * <td>プロジェクト名</td>
     * <td>必須、250文字</td>
     * </tr>
     * <tr>
     * <td>プロジェクトコード(上位プロジェクト)</td>
     * <td>半角英数、マスタ存在確認</td>
     * </tr>
     * <tr>
     * <td>会社コード(上位プロジェクト)</td>
     * <td>半角英数、マスタ存在確認※プロジェクトコード(上位プロジェクト)のマスタ存在確認に利用</td>
     * </tr>
     * <tr>
     * <td>プロジェクトコード(上位プロジェクト</td>
     * <td>自身のプロジェクトと上位プロジェクトの同一チェック</td>
     * </tr>
     * </table>
     */
    @Override
    public List<ValidateDefsDto> getValidateDefsDtoList4Renew() {
        List<ValidateDefsDto> result = new ArrayList<ValidateDefsDto>();
        // 会社コード
        result.add(new ValidateDefsDto(COMPANY_CD, VALID_REQUIRED));
        result.add(new ValidateDefsDto(COMPANY_CD, VALID_COMPANY_EXISTS, COMPANY_CD, "", "true"));
        // プロジェクトコード
        result.add(new ValidateDefsDto(PROJECT_CD, VALID_REQUIRED));
        result.add(new ValidateDefsDto(PROJECT_CD, VALID_MAX_LENGTH, String.valueOf(PROJECT_CD_LEN)));
        result.add(new ValidateDefsDto(PROJECT_CD, VALID_KAIDEN_ID));
        // 期間コード
        result.add(new ValidateDefsDto(TERM_CD, VALID_REQUIRED));
        result.add(new ValidateDefsDto(TERM_CD, VALID_MAX_LENGTH, String.valueOf(TERM_CD_LEN)));
        result.add(new ValidateDefsDto(TERM_CD, VALID_KAIDEN_ID));
        // ロケールid
        result.add(new ValidateDefsDto(LOCALE_ID, VALID_REQUIRED));
        result.add(new ValidateDefsDto(LOCALE_ID, VALID_LOCALE));
        // 開始日
        result.add(new ValidateDefsDto(START_DATE, VALID_REQUIRED));
        result.add(new ValidateDefsDto(START_DATE, VALID_DATE));
        // 終了日
        result.add(new ValidateDefsDto(END_DATE, VALID_REQUIRED));
        result.add(new ValidateDefsDto(END_DATE, VALID_DATE));
        result.add(new ValidateDefsDto(END_DATE, VALID_DATE_MIN, START_DATE));
        // プロジェクト名称
        result.add(new ValidateDefsDto(PROJECT_NAME, VALID_REQUIRED));
        result.add(new ValidateDefsDto(PROJECT_NAME, VALID_MAX_LENGTH, String.valueOf(PROJECT_NAME_LEN)));
        // プロジェクトコード(上位)
        result.add(new ValidateDefsDto(PARENT_PROJECT_CD, VALID_PROJECT_EXISTS, PARENT_PROJECT_CD, PARENT_COMPANY_CD,
                "", "true"));
        result.add(new ValidateDefsDto(PARENT_PROJECT_CD, new CustomValidateNotEqualParent()));
        
        return result;
    }
    
    /** {@inheritDoc} */
    @Override
    public Class<ProjectManagerDto> getMainManagerDtoClass() {
        return ProjectManagerDto.class;
    }
    
    /** {@inheritDoc} */
    @Override
    public List<ProjectManagerDto> selectListIgnoreAuthCompanyWithLock(ProjectManagerDto criteria, List<OrderDto> order) {
        Map<String, Object> criteriaMap = k30mProjectService.getCriteria(criteria);
        return complementEndDateForDisp(CollectionUtil.createListAndCopy(ProjectManagerDto.class,
                k30mProjectService.genericSelectList4Update(criteriaMap, order)));
    }
    
    /** {@inheritDoc} */
    @Override
    public List<String> getPkFileds() {
        return k30mProjectService.getPkFiled();
    }
    
    /**
     * {@inheritDoc}
     */
    @Override
    public void executeIterateLogic(ProjectManagerDto criteria, List<OrderDto> order,
            IterateBusinessLogicIF<ProjectManagerDto> logic) throws KaidenSystemException, KaidenApplicationException {
        super.iterateLogic(k30mProjectService, criteria, order, logic);
    }
}

5.4.1.2.4. ManagerDto

  • Path
    src/main/java/jp/co/slcs/kaiden2/product_workflow/foundation/manager/project/ProjectCriteriaDto.java
package jp.co.slcs.kaiden2.product_workflow.foundation.manager.project;

import java.sql.Timestamp;
import jp.co.slcs.kaiden2.base.foundation.master.TermMasterMaintenanceCriteriaDto;

/**
 * プロジェクトマスタ 検索条件DTO.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
public class ProjectCriteriaDto extends TermMasterMaintenanceCriteriaDto {
    
    /** 会社コード. */
    // public String companyCd; //親クラスで定義済み
    
    /** プロジェクトコード. */
    public String projectCd;
    /** 期間コード. */
    public String termCd;
    /** ロケールID. */
    // public String localeId;//親クラスで定義済み
    /** 開始日. */
    public Timestamp startDate;
    /** 終了日. */
    public Timestamp endDate;
    /** プロジェクト名称. */
    public String projectName;
    /** 削除フラグ. */
    // public String deleteFlag; //親クラスで定義済み
    /** プロジェクトコード(上位). */
    public String parentProjectCd;
    /** 予備項目A. */
    public String extensionA;
    /** 予備項目B. */
    public String extensionB;
    /** 予備項目C. */
    public String extensionC;
    /** 予備項目D. */
    public String extensionD;
    /** 予備項目E. */
    public String extensionE;
    /** 予備項目F. */
    public String extensionF;
    /** 予備項目G. */
    public String extensionG;
    /** 予備項目H. */
    public String extensionH;
    /** 予備項目I. */
    public String extensionI;
    /** 予備項目J. */
    public String extensionJ;
    /** 会社名. */
    public String companyName;
    /** プロジェクト名称(上位). */
    public String parentProjectName;
}
  • Path
    src/main/java/jp/co/slcs/kaiden2/product_workflow/foundation/manager/project/ProjectManagerDto.java
package jp.co.slcs.kaiden2.product_workflow.foundation.manager.project;

import java.sql.Timestamp;
import jp.co.slcs.kaiden2.base.foundation.model.dto.KaidenMasterManagerDto;

/**
 * プロジェクトDTO.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
public class ProjectManagerDto extends KaidenMasterManagerDto {
    
    /** 会社コード. */
    public String companyCd;
    
    /** プロジェクトコード. */
    public String projectCd;
    
    /** 期間コード. */
    public String termCd;
    
    /** ロケールID. */
    public String localeId;
    
    /** 開始日. */
    public Timestamp startDate;
    
    /** 終了日. */
    public Timestamp endDate;
    
    /** プロジェクト名称. */
    public String projectName;
    
    /** 削除フラグ. */
    public String deleteFlag;
    
    /** 会社コード(上位). */
    public String parentCompanyCd;
    
    /** プロジェクトコード(上位). */
    public String parentProjectCd;
    
    /** 予備項目A. */
    public String extensionA;
    
    /** 予備項目B. */
    public String extensionB;
    
    /** 予備項目C. */
    public String extensionC;
    
    /** 予備項目D. */
    public String extensionD;
    
    /** 予備項目E. */
    public String extensionE;
    
    /** 予備項目F. */
    public String extensionF;
    
    /** 予備項目G. */
    public String extensionG;
    
    /** 予備項目H. */
    public String extensionH;
    
    /** 予備項目I. */
    public String extensionI;
    
    /** 予備項目J. */
    public String extensionJ;
    
    /** 登録日時. */
    public Timestamp entryTs;
    
    /** 登録者コード. */
    public String entryUserCd;
    
    /** 更新カウンタ. */
    public Long renewCnt;
    
    /** 更新日時. */
    public Timestamp renewTs;
    
    /** 更新者コード. */
    public String renewUserCd;
    
    /** 組織名称. */
    public String companyName;
    
    /** プロジェクト名称(上位). */
    public String parentProjectName;
    
}
  • Path
    src/main/java/jp/co/slcs/kaiden2/product_workflow/foundation/manager/project/ProjectManagerDtoFieldName.java
package jp.co.slcs.kaiden2.product_workflow.foundation.manager.project;

import jp.co.slcs.kaiden2.base.foundation.model.conf.EntityCommonFieldNames;
import jp.co.slcs.kaiden2.base.foundation.model.conf.EntityExtensionFieldNames;

/**
 * プロジェクトマスタDTO フィールド名定義クラス.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
public final class ProjectManagerDtoFieldName implements EntityExtensionFieldNames {
    
    /**
     * コンストラクタ.
     */
    private ProjectManagerDtoFieldName() {
    }
    
    /** 会社コード. */
    public static final String COMPANY_CD = EntityCommonFieldNames.COMPANY_CD;
    /** プロジェクトコード. */
    public static final String PROJECT_CD = "projectCd";
    /** 期間コード. */
    public static final String TERM_CD = EntityCommonFieldNames.TERM_CD;
    /** ロケールid. */
    public static final String LOCALE_ID = EntityCommonFieldNames.LOCALE_ID;
    /** プロジェクト名称. */
    public static final String PROJECT_NAME = "projectName";
    /** 開始日. */
    public static final String START_DATE = EntityCommonFieldNames.START_DATE;
    /** 終了日. */
    public static final String END_DATE = EntityCommonFieldNames.END_DATE;
    /** 削除フラグ. */
    public static final String DELETE_FLAG = EntityCommonFieldNames.DELETE_FLAG;
    /** 会社コード(上位). */
    public static final String PARENT_COMPANY_CD = "parentCompanyCd";
    /** プロジェクトコード(上位). */
    public static final String PARENT_PROJECT_CD = "parentProjectCd";
    
    /** 会社名称(他マスタ名称). */
    public static final String COMPANY_NAME = "companyName";
    /** プロジェクト名称(上位). */
    public static final String PARENT_PROJECT_NAME = "parentProjectName";
}

5.4.1.2.5. Settings

  • Path
    src/main/java/jp/co/slcs/kaiden2/product_workflow/foundation/model/xml_schema/project_import_settings/ProjectImportSettings.java
package jp.co.slcs.kaiden2.product_workflow.foundation.model.xml_schema.project_import_settings;

import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.COMPANY_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.DELETE_FLAG;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.END_DATE;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.LOCALE_ID;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PARENT_COMPANY_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PARENT_PROJECT_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PROJECT_CD;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.PROJECT_NAME;
import static jp.co.slcs.kaiden2.product_workflow.foundation.manager.project.ProjectManagerDtoFieldName.START_DATE;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import jp.co.slcs.kaiden2.base.foundation.model.xml_schema.generic_import_settings.GenericImportSettings;

/**
 * プロジェクトマスタ読込設定DTO.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
@XmlRootElement
@XmlType(propOrder = {})
public class ProjectImportSettings extends GenericImportSettings {
    
    /** serialVersionUID. */
    private static final long serialVersionUID = 1L;
    
    /**
     * フィールド定義配列.
     */
    protected String[] filedNames = new String[] {COMPANY_CD, PROJECT_CD, LOCALE_ID, START_DATE, END_DATE,
            PROJECT_NAME, DELETE_FLAG, PARENT_COMPANY_CD, PARENT_PROJECT_CD};
    
    /** {@inheritDoc} */
    @Override
    protected void initOrders() {
        super.getOrders().add(new Order(COMPANY_CD, Order.SORT_ASC));
        super.getOrders().add(new Order(PROJECT_CD, Order.SORT_ASC));
        super.getOrders().add(new Order(LOCALE_ID, Order.SORT_ASC));
    }
    
    /** {@inheritDoc} */
    @Override
    protected void initPkFields() {
        super.getPkFields().add(COMPANY_CD);
        super.getPkFields().add(PROJECT_CD);
        super.getPkFields().add(LOCALE_ID);
    }
    
    /** {@inheritDoc} */
    @Override
    protected void initI18NFields() {
        super.getI18NFields().add(PROJECT_NAME);
    }
    
    /** {@inheritDoc} */
    @Override
    protected void initFieldsOrder() {
        for (String j : filedNames) {
            super.getFieldsOrder().add(j);
        }
    }
    
}

5.4.1.3. Java(S2JDBC)

5.4.1.3.1. Entity

  • Path
    src/main/generated/jp/co/slcs/kaiden2/product_workflow/foundation/model/entity/K30mProject.java
package jp.co.slcs.kaiden2.product_workflow.foundation.model.entity;

import java.io.Serializable;
import java.sql.Timestamp;
import javax.annotation.Generated;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import jp.co.slcs.kaiden2.base.foundation.model.entity.GenerateEntity;

/**
 * プロジェクト.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
@Entity
@Table(name = "k30m_project")
@Generated(value = {"S2JDBC-Gen 2.4.46", "org.seasar.extension.jdbc.gen.internal.model.EntityModelFactoryImpl" })
public final class K30mProject extends GenerateEntity implements Serializable {
    
    /** シリアルバージョンUID. */
    private static final long serialVersionUID = 1L;

    /** 会社コード. */
    @Id
    @Column(name = "company_cd", columnDefinition = "varchar2(100)", nullable = false, unique = false)
    public String companyCd;

    /** プロジェクトコード. */
    @Id
    @Column(name = "project_cd", columnDefinition = "varchar2(100)", nullable = false, unique = false)
    public String projectCd;

    /** 期間コード. */
    @Id
    @Column(name = "term_cd", columnDefinition = "varchar2(50)", nullable = false, unique = false)
    public String termCd;

    /** ロケールid. */
    @Id
    @Column(name = "locale_id", columnDefinition = "varchar2(50)", nullable = false, unique = false)
    public String localeId;

    /** 開始日. */
    @Column(name = "start_date", columnDefinition = "timestamp(6)", nullable = false, unique = false)
    public Timestamp startDate;

    /** 終了日. */
    @Column(name = "end_date", columnDefinition = "timestamp(6)", nullable = false, unique = false)
    public Timestamp endDate;

    /** プロジェクト名. */
    @Column(name = "project_name", columnDefinition = "varchar2(1000)", nullable = false, unique = false)
    public String projectName;

    /** 削除フラグ. */
    @Column(name = "delete_flag", columnDefinition = "varchar2(1)", nullable = false, unique = false)
    public String deleteFlag;

    /** 会社コード(上位プロジェクト). */
    @Column(name = "parent_company_cd", columnDefinition = "varchar2(100)", nullable = true, unique = false)
    public String parentCompanyCd;

    /** プロジェクトコード(上位プロジェクト). */
    @Column(name = "parent_project_cd", columnDefinition = "varchar2(100)", nullable = true, unique = false)
    public String parentProjectCd;

    /** 予備項目a. */
    @Column(name = "extension_a", columnDefinition = "varchar2(1000)", nullable = true, unique = false)
    public String extensionA;

    /** 予備項目b. */
    @Column(name = "extension_b", columnDefinition = "varchar2(1000)", nullable = true, unique = false)
    public String extensionB;

    /** 予備項目c. */
    @Column(name = "extension_c", columnDefinition = "varchar2(1000)", nullable = true, unique = false)
    public String extensionC;

    /** 予備項目d. */
    @Column(name = "extension_d", columnDefinition = "varchar2(1000)", nullable = true, unique = false)
    public String extensionD;

    /** 予備項目e. */
    @Column(name = "extension_e", columnDefinition = "varchar2(1000)", nullable = true, unique = false)
    public String extensionE;

    /** 予備項目f. */
    @Column(name = "extension_f", columnDefinition = "varchar2(1000)", nullable = true, unique = false)
    public String extensionF;

    /** 予備項目g. */
    @Column(name = "extension_g", columnDefinition = "varchar2(1000)", nullable = true, unique = false)
    public String extensionG;

    /** 予備項目h. */
    @Column(name = "extension_h", columnDefinition = "varchar2(1000)", nullable = true, unique = false)
    public String extensionH;

    /** 予備項目i. */
    @Column(name = "extension_i", columnDefinition = "varchar2(1000)", nullable = true, unique = false)
    public String extensionI;

    /** 予備項目j. */
    @Column(name = "extension_j", columnDefinition = "varchar2(1000)", nullable = true, unique = false)
    public String extensionJ;
}

5.4.1.3.2. Names

  • Path
    src/main/generated/jp/co/slcs/kaiden2/product_workflow/foundation/model/entity/K30mProjectNames.java
package jp.co.slcs.kaiden2.product_workflow.foundation.model.entity;

import java.sql.Timestamp;
import javax.annotation.Generated;
import org.seasar.extension.jdbc.name.PropertyName;

/**
 * {@link K30mProject}の名称クラス.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
@Generated(value = {"S2JDBC-Gen 2.4.46", "org.seasar.extension.jdbc.gen.internal.model.NamesModelFactoryImpl" })
public final class K30mProjectNames {
    
    /**
     * デフォルトコンストラクタ.
     */
     private K30mProjectNames() {
         super();
     }
    
    /**
     * companyCdのプロパティ名を返却.
     * 
     * @return companyCdのプロパティ名
     */
    public static PropertyName<String> companyCd() {
        return new PropertyName<String>("companyCd");
    }
    
    /**
     * projectCdのプロパティ名を返却.
     * 
     * @return projectCdのプロパティ名
     */
    public static PropertyName<String> projectCd() {
        return new PropertyName<String>("projectCd");
    }
    
    /**
     * termCdのプロパティ名を返却.
     * 
     * @return termCdのプロパティ名
     */
    public static PropertyName<String> termCd() {
        return new PropertyName<String>("termCd");
    }
    
    /**
     * localeIdのプロパティ名を返却.
     * 
     * @return localeIdのプロパティ名
     */
    public static PropertyName<String> localeId() {
        return new PropertyName<String>("localeId");
    }
    
    /**
     * startDateのプロパティ名を返却.
     * 
     * @return startDateのプロパティ名
     */
    public static PropertyName<Timestamp> startDate() {
        return new PropertyName<Timestamp>("startDate");
    }
    
    /**
     * endDateのプロパティ名を返却.
     * 
     * @return endDateのプロパティ名
     */
    public static PropertyName<Timestamp> endDate() {
        return new PropertyName<Timestamp>("endDate");
    }
    
    /**
     * projectNameのプロパティ名を返却.
     * 
     * @return projectNameのプロパティ名
     */
    public static PropertyName<String> projectName() {
        return new PropertyName<String>("projectName");
    }
    
    /**
     * deleteFlagのプロパティ名を返却.
     * 
     * @return deleteFlagのプロパティ名
     */
    public static PropertyName<String> deleteFlag() {
        return new PropertyName<String>("deleteFlag");
    }
    
    /**
     * parentCompanyCdのプロパティ名を返却.
     * 
     * @return parentCompanyCdのプロパティ名
     */
    public static PropertyName<String> parentCompanyCd() {
        return new PropertyName<String>("parentCompanyCd");
    }
    
    /**
     * parentProjectCdのプロパティ名を返却.
     * 
     * @return parentProjectCdのプロパティ名
     */
    public static PropertyName<String> parentProjectCd() {
        return new PropertyName<String>("parentProjectCd");
    }
    
    /**
     * extensionAのプロパティ名を返却.
     * 
     * @return extensionAのプロパティ名
     */
    public static PropertyName<String> extensionA() {
        return new PropertyName<String>("extensionA");
    }
    
    /**
     * extensionBのプロパティ名を返却.
     * 
     * @return extensionBのプロパティ名
     */
    public static PropertyName<String> extensionB() {
        return new PropertyName<String>("extensionB");
    }
    
    /**
     * extensionCのプロパティ名を返却.
     * 
     * @return extensionCのプロパティ名
     */
    public static PropertyName<String> extensionC() {
        return new PropertyName<String>("extensionC");
    }
    
    /**
     * extensionDのプロパティ名を返却.
     * 
     * @return extensionDのプロパティ名
     */
    public static PropertyName<String> extensionD() {
        return new PropertyName<String>("extensionD");
    }
    
    /**
     * extensionEのプロパティ名を返却.
     * 
     * @return extensionEのプロパティ名
     */
    public static PropertyName<String> extensionE() {
        return new PropertyName<String>("extensionE");
    }
    
    /**
     * extensionFのプロパティ名を返却.
     * 
     * @return extensionFのプロパティ名
     */
    public static PropertyName<String> extensionF() {
        return new PropertyName<String>("extensionF");
    }
    
    /**
     * extensionGのプロパティ名を返却.
     * 
     * @return extensionGのプロパティ名
     */
    public static PropertyName<String> extensionG() {
        return new PropertyName<String>("extensionG");
    }
    
    /**
     * extensionHのプロパティ名を返却.
     * 
     * @return extensionHのプロパティ名
     */
    public static PropertyName<String> extensionH() {
        return new PropertyName<String>("extensionH");
    }
    
    /**
     * extensionIのプロパティ名を返却.
     * 
     * @return extensionIのプロパティ名
     */
    public static PropertyName<String> extensionI() {
        return new PropertyName<String>("extensionI");
    }
    
    /**
     * extensionJのプロパティ名を返却.
     * 
     * @return extensionJのプロパティ名
     */
    public static PropertyName<String> extensionJ() {
        return new PropertyName<String>("extensionJ");
    }
    
    /**
     * entryTsのプロパティ名を返却.
     * 
     * @return entryTsのプロパティ名
     */
    public static PropertyName<Timestamp> entryTs() {
        return new PropertyName<Timestamp>("entryTs");
    }
    
    /**
     * entryUserCdのプロパティ名を返却.
     * 
     * @return entryUserCdのプロパティ名
     */
    public static PropertyName<String> entryUserCd() {
        return new PropertyName<String>("entryUserCd");
    }
    
    /**
     * renewCntのプロパティ名を返却.
     * 
     * @return renewCntのプロパティ名
     */
    public static PropertyName<Long> renewCnt() {
        return new PropertyName<Long>("renewCnt");
    }
    
    /**
     * renewTsのプロパティ名を返却.
     * 
     * @return renewTsのプロパティ名
     */
    public static PropertyName<Timestamp> renewTs() {
        return new PropertyName<Timestamp>("renewTs");
    }
    
    /**
     * renewUserCdのプロパティ名を返却.
     * 
     * @return renewUserCdのプロパティ名
     */
    public static PropertyName<String> renewUserCd() {
        return new PropertyName<String>("renewUserCd");
    }
    
    /**
     * @author S2JDBC-Gen
     */
    public static class _K30mProjectNames extends PropertyName<K30mProject> {
        
        /**
         * インスタンスを構築.
         */
        public _K30mProjectNames() {
        }
        
        /**
         * インスタンスを構築.
         * 
         * @param name 名前
         */
        public _K30mProjectNames(final String name) {
            super(name);
        }
        
        /**
         * インスタンスを構築.
         * 
         * @param parent 親
         * @param name 名前
         */
        public _K30mProjectNames(final PropertyName<?> parent, final String name) {
            super(parent, name);
        }
        
        /**
         * companyCdのプロパティ名を返却.
         *
         * @return companyCdのプロパティ名
         */
        public PropertyName<String> companyCd() {
            return new PropertyName<String>(this, "companyCd");
        }
        
        /**
         * projectCdのプロパティ名を返却.
         *
         * @return projectCdのプロパティ名
         */
        public PropertyName<String> projectCd() {
            return new PropertyName<String>(this, "projectCd");
        }
        
        /**
         * termCdのプロパティ名を返却.
         *
         * @return termCdのプロパティ名
         */
        public PropertyName<String> termCd() {
            return new PropertyName<String>(this, "termCd");
        }
        
        /**
         * localeIdのプロパティ名を返却.
         *
         * @return localeIdのプロパティ名
         */
        public PropertyName<String> localeId() {
            return new PropertyName<String>(this, "localeId");
        }
        
        /**
         * startDateのプロパティ名を返却.
         *
         * @return startDateのプロパティ名
         */
        public PropertyName<Timestamp> startDate() {
            return new PropertyName<Timestamp>(this, "startDate");
        }
        
        /**
         * endDateのプロパティ名を返却.
         *
         * @return endDateのプロパティ名
         */
        public PropertyName<Timestamp> endDate() {
            return new PropertyName<Timestamp>(this, "endDate");
        }
        
        /**
         * projectNameのプロパティ名を返却.
         *
         * @return projectNameのプロパティ名
         */
        public PropertyName<String> projectName() {
            return new PropertyName<String>(this, "projectName");
        }
        
        /**
         * deleteFlagのプロパティ名を返却.
         *
         * @return deleteFlagのプロパティ名
         */
        public PropertyName<String> deleteFlag() {
            return new PropertyName<String>(this, "deleteFlag");
        }
        
        /**
         * parentCompanyCdのプロパティ名を返却.
         *
         * @return parentCompanyCdのプロパティ名
         */
        public PropertyName<String> parentCompanyCd() {
            return new PropertyName<String>(this, "parentCompanyCd");
        }
        
        /**
         * parentProjectCdのプロパティ名を返却.
         *
         * @return parentProjectCdのプロパティ名
         */
        public PropertyName<String> parentProjectCd() {
            return new PropertyName<String>(this, "parentProjectCd");
        }
        
        /**
         * extensionAのプロパティ名を返却.
         *
         * @return extensionAのプロパティ名
         */
        public PropertyName<String> extensionA() {
            return new PropertyName<String>(this, "extensionA");
        }
        
        /**
         * extensionBのプロパティ名を返却.
         *
         * @return extensionBのプロパティ名
         */
        public PropertyName<String> extensionB() {
            return new PropertyName<String>(this, "extensionB");
        }
        
        /**
         * extensionCのプロパティ名を返却.
         *
         * @return extensionCのプロパティ名
         */
        public PropertyName<String> extensionC() {
            return new PropertyName<String>(this, "extensionC");
        }
        
        /**
         * extensionDのプロパティ名を返却.
         *
         * @return extensionDのプロパティ名
         */
        public PropertyName<String> extensionD() {
            return new PropertyName<String>(this, "extensionD");
        }
        
        /**
         * extensionEのプロパティ名を返却.
         *
         * @return extensionEのプロパティ名
         */
        public PropertyName<String> extensionE() {
            return new PropertyName<String>(this, "extensionE");
        }
        
        /**
         * extensionFのプロパティ名を返却.
         *
         * @return extensionFのプロパティ名
         */
        public PropertyName<String> extensionF() {
            return new PropertyName<String>(this, "extensionF");
        }
        
        /**
         * extensionGのプロパティ名を返却.
         *
         * @return extensionGのプロパティ名
         */
        public PropertyName<String> extensionG() {
            return new PropertyName<String>(this, "extensionG");
        }
        
        /**
         * extensionHのプロパティ名を返却.
         *
         * @return extensionHのプロパティ名
         */
        public PropertyName<String> extensionH() {
            return new PropertyName<String>(this, "extensionH");
        }
        
        /**
         * extensionIのプロパティ名を返却.
         *
         * @return extensionIのプロパティ名
         */
        public PropertyName<String> extensionI() {
            return new PropertyName<String>(this, "extensionI");
        }
        
        /**
         * extensionJのプロパティ名を返却.
         *
         * @return extensionJのプロパティ名
         */
        public PropertyName<String> extensionJ() {
            return new PropertyName<String>(this, "extensionJ");
        }
        
        /**
         * entryTsのプロパティ名を返却.
         *
         * @return entryTsのプロパティ名
         */
        public PropertyName<Timestamp> entryTs() {
            return new PropertyName<Timestamp>(this, "entryTs");
        }
        
        /**
         * entryUserCdのプロパティ名を返却.
         *
         * @return entryUserCdのプロパティ名
         */
        public PropertyName<String> entryUserCd() {
            return new PropertyName<String>(this, "entryUserCd");
        }
        
        /**
         * renewCntのプロパティ名を返却.
         *
         * @return renewCntのプロパティ名
         */
        public PropertyName<Long> renewCnt() {
            return new PropertyName<Long>(this, "renewCnt");
        }
        
        /**
         * renewTsのプロパティ名を返却.
         *
         * @return renewTsのプロパティ名
         */
        public PropertyName<Timestamp> renewTs() {
            return new PropertyName<Timestamp>(this, "renewTs");
        }
        
        /**
         * renewUserCdのプロパティ名を返却.
         *
         * @return renewUserCdのプロパティ名
         */
        public PropertyName<String> renewUserCd() {
            return new PropertyName<String>(this, "renewUserCd");
        }
    }
}

5.4.1.3.3. Service

  • Path
    src/main/generated/jp/co/slcs/kaiden2/product_workflow/foundation/model/service/K30mProjectService.java
package jp.co.slcs.kaiden2.product_workflow.foundation.model.service;

import javax.annotation.Generated;
import jp.co.slcs.kaiden2.base.foundation.model.service.GenerateService;
import jp.co.slcs.kaiden2.product_workflow.foundation.model.entity.K30mProject;

/**
 * {@link K30mProject}のサービスクラス.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
@Generated(value = {"S2JDBC-Gen 2.4.46", "org.seasar.extension.jdbc.gen.internal.model.ServiceModelFactoryImpl" })
public final class K30mProjectService extends GenerateService<K30mProject> {
    //
}

5.4.1.3.4. Condition

  • Path
    src/main/generated/jp/co/slcs/kaiden2/product_workflow/foundation/model/service/K30mProjectCondition.java
package jp.co.slcs.kaiden2.product_workflow.foundation.model.service;

import java.sql.Timestamp;
import javax.annotation.Generated;
import org.seasar.extension.jdbc.where.ComplexWhere;
import org.seasar.extension.jdbc.where.condition.AbstractEntityCondition;
import org.seasar.extension.jdbc.where.condition.NotNullableCondition;
import org.seasar.extension.jdbc.where.condition.NotNullableStringCondition;
import org.seasar.extension.jdbc.where.condition.NullableStringCondition;

/**
 * {@link K30mProject}の条件クラス.
 * 
 * @author Sumitomo Life Information Systems Co.,Ltd.
 */
@Generated(value = {"S2JDBC-Gen 2.4.46", "org.seasar.extension.jdbc.gen.internal.model.ConditionModelFactoryImpl" })
public final class K30mProjectCondition extends
        AbstractEntityCondition<K30mProjectCondition> {
    
    /**
     * インスタンスを構築.
     */
    public K30mProjectCondition() {
    }
    
    /**
     * インスタンスを構築.
     * 
     * @param prefix プレフィックス
     * @param where 検索条件
     */
    public K30mProjectCondition(String prefix, ComplexWhere where) {
        super(prefix, where);
    }
    
    /** companyCdの条件. */
    public NotNullableStringCondition<K30mProjectCondition> companyCd =
        new NotNullableStringCondition<K30mProjectCondition>("companyCd", this);
    
    /** projectCdの条件. */
    public NotNullableStringCondition<K30mProjectCondition> projectCd =
        new NotNullableStringCondition<K30mProjectCondition>("projectCd", this);
    
    /** termCdの条件. */
    public NotNullableStringCondition<K30mProjectCondition> termCd =
        new NotNullableStringCondition<K30mProjectCondition>("termCd", this);
    
    /** localeIdの条件. */
    public NotNullableStringCondition<K30mProjectCondition> localeId =
        new NotNullableStringCondition<K30mProjectCondition>("localeId", this);
    
    /** startDateの条件. */
    public NotNullableCondition<K30mProjectCondition, Timestamp> startDate =
        new NotNullableCondition<K30mProjectCondition, Timestamp>("startDate", this);
    
    /** endDateの条件. */
    public NotNullableCondition<K30mProjectCondition, Timestamp> endDate =
        new NotNullableCondition<K30mProjectCondition, Timestamp>("endDate", this);
    
    /** projectNameの条件. */
    public NotNullableStringCondition<K30mProjectCondition> projectName =
        new NotNullableStringCondition<K30mProjectCondition>("projectName", this);
    
    /** deleteFlagの条件. */
    public NotNullableStringCondition<K30mProjectCondition> deleteFlag =
        new NotNullableStringCondition<K30mProjectCondition>("deleteFlag", this);
    
    /** parentCompanyCdの条件. */
    public NullableStringCondition<K30mProjectCondition> parentCompanyCd =
        new NullableStringCondition<K30mProjectCondition>("parentCompanyCd", this);
    
    /** parentProjectCdの条件. */
    public NullableStringCondition<K30mProjectCondition> parentProjectCd =
        new NullableStringCondition<K30mProjectCondition>("parentProjectCd", this);
    
    /** extensionAの条件. */
    public NullableStringCondition<K30mProjectCondition> extensionA =
        new NullableStringCondition<K30mProjectCondition>("extensionA", this);
    
    /** extensionBの条件. */
    public NullableStringCondition<K30mProjectCondition> extensionB =
        new NullableStringCondition<K30mProjectCondition>("extensionB", this);
    
    /** extensionCの条件. */
    public NullableStringCondition<K30mProjectCondition> extensionC =
        new NullableStringCondition<K30mProjectCondition>("extensionC", this);
    
    /** extensionDの条件. */
    public NullableStringCondition<K30mProjectCondition> extensionD =
        new NullableStringCondition<K30mProjectCondition>("extensionD", this);
    
    /** extensionEの条件. */
    public NullableStringCondition<K30mProjectCondition> extensionE =
        new NullableStringCondition<K30mProjectCondition>("extensionE", this);
    
    /** extensionFの条件. */
    public NullableStringCondition<K30mProjectCondition> extensionF =
        new NullableStringCondition<K30mProjectCondition>("extensionF", this);
    
    /** extensionGの条件. */
    public NullableStringCondition<K30mProjectCondition> extensionG =
        new NullableStringCondition<K30mProjectCondition>("extensionG", this);
    
    /** extensionHの条件. */
    public NullableStringCondition<K30mProjectCondition> extensionH =
        new NullableStringCondition<K30mProjectCondition>("extensionH", this);
    
    /** extensionIの条件. */
    public NullableStringCondition<K30mProjectCondition> extensionI =
        new NullableStringCondition<K30mProjectCondition>("extensionI", this);
    
    /** extensionJの条件. */
    public NullableStringCondition<K30mProjectCondition> extensionJ =
        new NullableStringCondition<K30mProjectCondition>("extensionJ", this);
    
    /** entryTsの条件. */
    public NotNullableCondition<K30mProjectCondition, Timestamp> entryTs =
        new NotNullableCondition<K30mProjectCondition, Timestamp>("entryTs", this);
    
    /** entryUserCdの条件. */
    public NotNullableStringCondition<K30mProjectCondition> entryUserCd =
        new NotNullableStringCondition<K30mProjectCondition>("entryUserCd", this);
    
    /** renewCntの条件. */
    public NotNullableCondition<K30mProjectCondition, Long> renewCnt =
        new NotNullableCondition<K30mProjectCondition, Long>("renewCnt", this);
    
    /** renewTsの条件. */
    public NotNullableCondition<K30mProjectCondition, Timestamp> renewTs =
        new NotNullableCondition<K30mProjectCondition, Timestamp>("renewTs", this);
    
    /** renewUserCdの条件. */
    public NotNullableStringCondition<K30mProjectCondition> renewUserCd =
        new NotNullableStringCondition<K30mProjectCondition>("renewUserCd", this);
}

5.4.1.4. SQL

5.4.1.4.1. 検索

  • Path
    src/main/resources/META-INF/sql/jp/co/slcs/kaiden2/product_workflow/foundation/model/service/K30mProjectService/selectView.sql
select
  prj.company_cd 
, prj.project_cd
, prj.term_cd
, prj.locale_id
, prj.start_date
, prj.end_date
, prj.project_name
, prj.delete_flag
, prj.parent_company_cd
, prj.parent_project_cd
, prj.extension_a
, prj.extension_b
, prj.extension_c
, prj.extension_d
, prj.extension_e
, prj.extension_f
, prj.extension_g
, prj.extension_h
, prj.extension_i
, prj.extension_j
, prj.entry_ts
, prj.entry_user_cd
, prj.renew_cnt
, prj.renew_ts
, prj.renew_user_cd
, dept.department_name as company_name
, parent.project_name as parent_project_name
from k30m_project prj
   left join ( select imm_department.company_cd
                    , imm_department.department_set_cd
                    , imm_department.department_cd
                    , imm_department.locale_id
                    , imm_department.start_date
                    , imm_department.end_date
                    , imm_department.department_name
              from imm_department) dept
     on  prj.company_cd = dept.company_cd
     and prj.company_cd = dept.department_set_cd
     and prj.company_cd = dept.department_cd
     and prj.locale_id = dept.locale_id
     /*IF searchCriteriaDate != null*/
     and dept.start_date <= /*searchCriteriaDate*/'2000/01/01'
     and dept.end_date > /*searchCriteriaDate*/'2000/01/01'
     --ELSE and dept.start_date <= prj.start_date 
     --ELSE and dept.end_date > prj.start_date 
     /*END*/
   left join k30m_project parent 
   on  prj.parent_company_cd = parent.company_cd
   and prj.parent_project_cd = parent.project_cd
   and prj.locale_id = parent.locale_id
   /*IF searchCriteriaDate != null*/
   and parent.start_date <= /*searchCriteriaDate*/'2000/01/01' 
   and parent.end_date > /*searchCriteriaDate*/'2000/01/01'
   --ELSE and parent.start_date <= prj.start_date 
   --ELSE and parent.end_date > prj.start_date
   /*END*/
/*BEGIN*/
where
/*IF companyCd != null*/
    prj.company_cd in/*companyCd*/('comp')
/*END*/
/*IF projectCd != null*/
 and prj.project_cd = /*projectCd*/'projectCd'
/*END*/
/*IF termCd != null*/
 and prj.term_cd = /*termCd*/'termCd'
/*END*/
/*IF localeId != null*/
 and prj.locale_id = /*localeId*/'localeId'
/*END*/
/*IF searchCriteriaDate != null*/
and prj.start_date <= /*searchCriteriaDate*/'1900/01/01'
and prj.end_date    > /*searchCriteriaDate*/'2999/12/31'
/*END*/
/*IF projectName != null*/
and prj.project_name like /*projectName*/'%' ESCAPE '$'
/*END*/
/*IF deleteFlag != null*/
and prj.delete_flag = /*deleteFlag*/'0' 
/*END*/
/*IF parentCompanyCd != null*/
and prj.parent_company_cd = /*parentCompanyCd*/'parentCompanyCd'
/*END*/
/*IF parentProjectCd != null*/
and prj.parent_project_cd = /*parentProjectCd*/'parentProjectCd'
/*END*/
/*IF extensionA != null*/
and prj.extension_a like /*extensionA*/'extensionA' ESCAPE '$'
/*END*/
/*IF extensionB != null*/
and prj.extension_b like /*extensionB*/'extensionB' ESCAPE '$'
/*END*/
/*IF extensionC != null*/
and prj.extension_c like /*extensionC*/'extensionC' ESCAPE '$'
/*END*/
/*IF extensionD != null*/
and prj.extension_d like /*extensionD*/'extensionD' ESCAPE '$'
/*END*/
/*IF extensionE != null*/
and prj.extension_e like /*extensionE*/'extensionE' ESCAPE '$'
/*END*/
/*IF extensionF != null*/
and prj.extension_f like /*extensionF*/'extensionF' ESCAPE '$'
/*END*/
/*IF extensionG != null*/
and prj.extension_g like /*extensionG*/'extensionG' ESCAPE '$'
/*END*/
/*IF extensionH != null*/
and prj.extension_h like /*extensionH*/'extensionH' ESCAPE '$'
/*END*/
/*IF extensionI != null*/
and prj.extension_i like /*extensionI*/'extensionI' ESCAPE '$'
/*END*/
/*IF extensionJ != null*/
and prj.extension_j like /*extensionJ*/'extensionJ' ESCAPE '$'
/*END*/ 
/*IF companyName != null*/
and dept.department_name like /*companyName*/'companyName' ESCAPE '$'
/*END*/ 
/*IF parentProjectName != null*/
and parent.project_name like /*parentProjectName*/'parentProjectName' ESCAPE '$'
/*END*/
/*END*/
/*IF orderBy != null*/
 ORDER BY /*$orderBy*/company_cd
/*END*/

5.4.1.5. XML

  • Path
    src/main/webapp/WEB-INF/classes/jp/co/slcs/kaiden2/product_workflow/foundation/model/xml_schema/project_import_settings/ProjectImportSettings.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<genericImportSettings xmlns="http://kaiden.slcs.co.jp/xmlschema/genericImportSettings" xmlns:tns="http://kaiden.slcs.co.jp/xmlschema/genericImportSettings">

    <!-- デフォルト設定値 -->
    <defaultSettings>
        <import_mode>1</import_mode>
        <start_date></start_date>
        <end_date></end_date>
        <shift_date></shift_date>
        <company_cd></company_cd>
        <character>UTF-8</character>
        <delimiter>,</delimiter>
        <enclosing>&quot;</enclosing>
        <normal_log>true</normal_log>
        <target_files>
            <target_file>kaiden/import/project/project_import.csv</target_file>
        </target_files>
        <start_rows>0</start_rows>
        <archive_files>
            <archive_file>kaiden/archive/import/project/project_import_{YMDHMSN}.csv</archive_file>
        </archive_files>
        <delete_flag>false</delete_flag>
    </defaultSettings>

    <!-- 会社ごとの設定(サンプル) -->
    <!-- companySettings>
        <companySetting>
            <settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="settings">
                <import_mode>1</import_mode>
                <start_date></start_date>
                <end_date></end_date>
                <shift_date>1</shift_date>
                <company_cd>sample_company_01</company_cd>
                <character>UTF-8</character>
                <delimiter>,</delimiter>
                <enclosing>&quot;</enclosing>
                <normal_log>true</normal_log>
                <target_files>
                    <target_file>sample_company_01_project.csv</target_file>
                </target_files>
                <start_rows>1</start_rows>
                <archive_files>
                    <archive_file>archive/sample_company_01_project.csv</archive_file>
                </archive_files>
                <delete_flag>true</delete_flag>
            </settings>
        </companySetting>
    </companySettings-->
    <!-- Import時ソート順リスト -->
</genericImportSettings>