#
# == epcb/csv/common
#
# Revision:: $Id$
#
require 'epcb/common'
require 'epcb/data'

module EPCB
  module CSV
    #
    # ファイルを生成する役割を担うGenerator基底クラス。
    # 
    class Generator
      attr_reader :src_path, :dest_path

      # コンストラクタ
      def initialize
        @src_path = nil
        @dest_path = nil
        @eutil = ExcelUtil.new
        @parser = nil
        @serialzier = nil
      end

      # 生成処理に必要な前処理を行う。
      # === ARGS
      # src_file:: 解析するファイル
      # dest_file:: 生成するファイル
      def setup(src_file = nil, dest_file = nil)
        if src_file != nil
          ::CLI::ensure_file_exist(src_file)
          @src_path = File.file_system.getAbsolutePathName(src_file)
          Log::voutln("src_path = #{@src_path}")
        end

        if dest_file != nil
          @dest_path = File.file_system.getAbsolutePathName(dest_file)
          Log::voutln("dest_path = #{@dest_path}")
        end
      end

      # 何らかのファイルを生成する。サブクラスでオーバライドする。
      def execute ; end
      
      # 後処理を行うメソッド。
      def destroy
        @eutil.destroy_excel if @eutil != nil
      end

    end #Generator#
  end #CSV#
end
