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     */
016    package org.opengion.fukurou.process;
017    
018    import org.opengion.fukurou.util.Argument;
019    
020    import 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     */
030    abstract 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    }