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}