    001/*
    002 * Copyright (c) 2009 The openGion Project.
    003 *
    004 * Licensed under the Apache License, Version 2.0 (the "License");
    005 * you may not use this file except in compliance with the License.
    006 * You may obtain a copy of the License at
    007 *
    008 *     http://www.apache.org/licenses/LICENSE-2.0
    009 *
    010 * Unless required by applicable law or agreed to in writing, software
    011 * distributed under the License is distributed on an "AS IS" BASIS,
    012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    013 * either express or implied. See the License for the specific language
    014 * governing permissions and limitations under the License.
    015 */
    016package org.opengion.fukurou.process;
    017
    018import org.opengion.fukurou.util.Argument;
    019
    020import java.util.Map;
    021
    022/**
    023 * AbstractProcess は、ChainProcess インターフェースを実装した、Abstract クラスです。
    024 * ChainProcess を用いて、順次、バッチプロセスを実行することができます。
    025 *
    026 * @version  4.0
    027 * @author   Kazuhiko Hasegawa
    028 * @since    JDK5.0,
    029 */
    030abstract public class AbstractProcess implements HybsProcess {
    031        /** リターンコード  System.getProperty("line.separator")  */
    032        public static final String CR = System.getProperty("line.separator");
    033
    034        /** タブセパレータ  */
    035        public static final String TAB = "\t";   // タブ区切り文字
    036
    037        private final Argument argments ;
    038        private LoggerProcess logger    = null;
    039
    040        /**
    041         * コンストラクター
    042         *
    043         * @param       name                    このクラス(サブクラス)のクラス名称
    044         * @param   mustProparty        必須チェックMap
    045         * @param   usableProparty      整合性チェックMap
    046         */
    047        public AbstractProcess( final String name , final Map<String,String> mustProparty ,final Map<String,String> usableProparty ) {
    048                argments = new Argument( name ) ;
    049                argments.setMustProparty( mustProparty );
    050                argments.setUsableProparty( usableProparty );
    051        }
    052
    053        /**
    054         * 引数形式を解析する 引数オブジェクトに、引数を設定します。
    055         * Argument の文字列から、引数かプロパティをセットします。
    056         * ［プロパティ］のキー部の大文字･小文字は、厳格に判定しています。
    057         * Argument の文字列には、タイプがあります。
    058         *
    059         * ［コメント］  ： # で始まる引数で、使用されません。(登録もされません。)
    060         * ［引数］      ： #,-,= 以外で始まる通常の文字列。登録の順番が指定されます。
    061         * ［プロパティ］： - で始まり、キーと値を=で区切っているパラメータです。順序は無関係。
    062         *
    063         * @param   arg 引数
    064         */
    065        public void putArgument( final String arg ) {
    066                argments.putArgument( arg ) ;
    067        }
    068
    069        /**
    070         * Argument の文字列から、プロパティをセットします。
    071         * ［プロパティ］のキー部の大文字･小文字は、厳格に判定しています。
    072         * このメソッドは、引数 や コメントの判断を行いません。プロパティ のみ
    073         * 設定されるものとして、処理します。
    074         * プロパティの key=val が初めから分割されている場合の簡易メソッドです。
    075         *
    076         * @param   key キー
    077         * @param   val 値
    078         */
    079        public void putArgument( final String key,final String val ) {
    080                argments.putArgument( key,val ) ;
    081        }
    082
    083        /**
    084         * 引数形式を解析する 引数オブジェクトを返します。
    085         *
    086         * @return      引数オブジェクト
    087         */
    088        public Argument getArgument() {
    089                return argments ;
    090        }
    091
    092        /**
    093         * ディスプレイにメッセージを表示します。
    094         *
    095         * @param       msg     表示するメッセージ
    096         */
    097        public void println( final String msg ) {
    098                if( logger != null ) {
    099                        logger.println( msg ) ;
    100                }
    101        }
    102
    103        /**
    104         * ディスプレイにメッセージを表示します。
    105         *
    106         * @param       msg     表示するメッセージ
    107         */
    108        public void logging( final String msg ) {
    109                if( logger != null ) {
    110                        logger.logging( msg ) ;
    111                }
    112        }
    113
    114        /**
    115         * ディスプレイ出力する LoggerProcess オブジェクトをセットします。
    116         *
    117         * @param logger LoggerProcessオブジェクト
    118         */
    119        public final void setLoggerProcess( final LoggerProcess logger ) {
    120                this.logger = logger ;
    121        }
    122
    123        /**
    124         * プロセスの内容表示を行います。
    125         * Argument#toString() を呼び出しています。
    126         *
    127         * @return 内容表示
    128         */
    129        @Override
    130        public String toString() {
    131                return argments.toString();
    132        }
    133}