<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <!-- デフォルト例外ハンドラ -->
    <bean id="defaultExceptionHandler" 
        class="jp.terasoluna.fw.batch.exception.handler.DefaultExceptionHandler">
    </bean>

    <!-- メッセージアクセサ -->
    <bean id="msgAcc"
        class="jp.terasoluna.fw.batch.message.MessageAccessorImpl" />

    <!-- メッセージプロパティファイル設定-->  
    <bean id="messageSource" 
          class="org.springframework.context.support.ResourceBundleMessageSource">
      <property name="basenames" value="messages"/>
    </bean>

    <!-- ファイル操作ユーティリティ -->
    <bean id="fileControl"
        class="jp.terasoluna.fw.file.util.FileControlImpl">
        <!-- 生成されたファイルは常に上書きする。 -->
        <property name="checkFileExist" value="true"/>
    </bean>

    <!-- CSVファイルアクセス用（入力）DAO -->
    <bean id="csvFileQueryDAO"
        class="jp.terasoluna.fw.file.dao.standard.CSVFileQueryDAO"
        parent="fileQueryDAO" />

    <!-- 固定長ファイルアクセス用（入力）DAO -->
    <bean id="fixedFileQueryDAO"
        class="jp.terasoluna.fw.file.dao.standard.FixedFileQueryDAO"
        parent="fileQueryDAO" />

    <!-- 可変長ファイルアクセス用（入力）DAO -->
    <bean id="variableFileQueryDAO"
        class="jp.terasoluna.fw.file.dao.standard.VariableFileQueryDAO"
        parent="fileQueryDAO" />

    <!-- その他ファイルアクセス用（入力）DAO -->
    <bean id="plainFileQueryDAO"
        class="jp.terasoluna.fw.file.dao.standard.PlainFileQueryDAO"
        parent="fileQueryDAO" />

    <!-- ファイルアクセス用（入力）DAO 共通定義 -->
    <bean id="fileQueryDAO"
        class="jp.terasoluna.fw.file.dao.standard.AbstractFileQueryDAO"
        abstract="true">
        <property name="columnParserMap" ref="columnParserMap" />
    </bean>

    <!-- CSVファイルアクセス用（出力）DAO -->
    <bean id="csvFileUpdateDAO"
        class="jp.terasoluna.fw.file.dao.standard.CSVFileUpdateDAO"
        parent="fileUpdateDAO" />

    <!-- 固定長ファイルアクセス用（出力）DAO -->
    <bean id="fixedFileUpdateDAO"
        class="jp.terasoluna.fw.file.dao.standard.FixedFileUpdateDAO"
        parent="fileUpdateDAO" />

    <!-- 可変長ファイルアクセス用（出力）DAO -->
    <bean id="variableFileUpdateDAO"
        class="jp.terasoluna.fw.file.dao.standard.VariableFileUpdateDAO"
        parent="fileUpdateDAO" />

    <!-- その他ファイルアクセス用（出力）DAO -->
    <bean id="plainFileUpdateDAO"
        class="jp.terasoluna.fw.file.dao.standard.PlainFileUpdateDAO"
        parent="fileUpdateDAO" />

    <!-- ファイルアクセス用（出力）DAO 共通定義 -->
    <bean id="fileUpdateDAO"
        class="jp.terasoluna.fw.file.dao.standard.AbstractFileUpdateDAO"
        abstract="true" scope="prototype">
        <property name="columnFormatterMap" ref="columnFormatterMap" />
    </bean>

    <!-- ファイルアクセス用（入力）パーサーMap -->
    <util:map id="columnParserMap">
        <entry key="java.lang.String">
            <bean
                class="jp.terasoluna.fw.file.dao.standard.NullColumnParser" />
        </entry>
        <entry key="java.util.Date">
            <bean
                class="jp.terasoluna.fw.file.dao.standard.DateColumnParser" />
        </entry>
        <entry key="java.math.BigDecimal">
            <bean
                class="jp.terasoluna.fw.file.dao.standard.DecimalColumnParser" />
        </entry>
        <entry key="int">
            <bean
                class="jp.terasoluna.fw.file.dao.standard.IntColumnParser" />
        </entry>
    </util:map>

    <!-- ファイルアクセス用（出力）フォーマッターMap -->
    <util:map id="columnFormatterMap">
        <entry key="java.lang.String">
            <bean class="jp.terasoluna.fw.file.dao.standard.NullColumnFormatter" />
        </entry>
        <entry key="java.util.Date">
            <bean class="jp.terasoluna.fw.file.dao.standard.DateColumnFormatter" />
        </entry>
        <entry key="java.math.BigDecimal">
            <bean class="jp.terasoluna.fw.file.dao.standard.DecimalColumnFormatter" />
        </entry>
        <entry key="int">
            <bean class="jp.terasoluna.fw.file.dao.standard.IntColumnFormatter" />
        </entry>
    </util:map>


    <!-- 入力チェッククラスを生成するファクトリ -->
    <bean id="validatorFactory" 
          class="jp.terasoluna.fw.validation.springmodules.DefaultValidatorFactoryEx"> 
      <property name="validationConfigLocations"> 
        <list> 
          <value>/validation/validator-rules.xml</value>
          <value>/validation/validator-rules-ex.xml</value>
          <value>/beansDef/validation.xml</value> 
        </list> 
      </property> 
    </bean> 

    <!-- デフォルト入力チェッククラス クラス名をForm名として扱う -->
    <bean id="beanValidator" 
          class="org.springmodules.validation.commons.DefaultBeanValidator"> 
      <property name="useFullyQualifiedClassName" value="true"/>
      <property name="validatorFactory" ref="validatorFactory"/>
    </bean> 





</beans>