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.hayabusa.html;
017 package org.opengion.fukurou.util;
018
019
020 /**
021 * DBCell で共通的に使用され?フォーマッタークラスです?
022 * フォーマット??1,$2,$3,$4???$9と???を含んだ入力テキストです?
023 * これに、AAA:BBB:CCC:DDD と?値(value)を?コロン(:)で?し?
024 * お?お?の?1,$2,$3,$4 に割り当てなおして、文字?を合成します?
025 * また?$1 は、本来の値として使用します?で、getValut()メソ?で?
026 * 取り出せるようになって?す?
027 * さらに、?の??"AAA:BBB:CCC:DDD"は?0 に割り当てられます?割り当て?
028 * な?数は?"(ゼロ??)として、扱われます?
029 *
030 * @og.rev 3.4.0.2 (2003/09/05) 新規作?
031 * @og.rev 5.2.2.0 (2010/11/01) パッケージ移?hayabusa.html ?fukurou.util)
032 * @og.group ??タ表示
033 * @og.group ??タ編?
034 *
035 * @version 4.0
036 * @author Kazuhiko Hasegawa
037 * @since JDK5.0,
038 */
039 public class StringFormat {
040 private static final String[] FROM = new String[] { "$1","$2","$3","$4","$5","$6","$7","$8","$9" } ;
041 /** 初期セパレータ {@value} */
042 public static final char SEPARATOR = ':' ;
043 private final String inText ;
044 private final String inValue ;
045 private final String inName; // 4.3.4.0 (2008/12/01) $Cの置換え追?
046 private String outText = null;
047 private String outValue = null;
048
049 // /**
050 // * コンストラクター
051 // * ?ストとコロン(:)で区?れた引数を指定してオブジェクトを構築します?
052 // * ?ストには?1,$2,$3,$4???$9と???を含んだ入力テキストです?
053 // * 値は、コロン(:)で区?れて?1,$2等に?に割り当てられます?
054 // *
055 // * @param text $1,$2,$3,$4???$9と???を含んだ入力テキス?
056 // * @param value コロン(:)で区?れた引数(AAA:BBB:CCC:DDD)
057 // */
058 // public StringFormat( final String text, final String value ) {
059 // inText = text;
060 // inValue = value;
061 // }
062
063 /**
064 * コンストラクター
065 * ?ストとコロン(:)で区?れた引数を指定してオブジェクトを構築します?
066 * ?ストには?1,$2,$3,$4???$9と???を含んだ入力テキストです?
067 * 値は、コロン(:)で区?れて?1,$2等に?に割り当てられます?
068 * nameは$Cで置き換える??です?
069 *
070 * @og.rev 4.3.4.0 (2008/12/01) $C対応追?
071 *
072 * @param text $1,$2,$3,$4???$9と???を含んだ入力テキス?
073 * @param value コロン(:)で区?れた引数(AAA:BBB:CCC:DDD)
074 * @param name $Cと置き換える??
075 */
076 public StringFormat( final String text, final String value, final String name ) {
077 inText = text;
078 inValue = value;
079 inName = name;
080 }
081
082 /**
083 * フォーマット変換を行い結果を返します?
084 * 変換時に?1,$2???等に割り当てられな?数には、ゼロ??("")が割り当てられます?
085 *
086 * @og.rev 3.8.8.2 (2007/01/26) 自??身を?$0 に割り当てる?
087 * @og.rev 4.3.4.0 (2008/12/01) $Cの置換え追?
088 *
089 * @return フォーマット変換結果
090 */
091 public String format() {
092
093 final String[] to;
094 if( inValue != null && inValue.indexOf( SEPARATOR ) >= 0 ) {
095 to = StringUtil.csv2Array( inValue, SEPARATOR );
096 }
097 else {
098 to = new String[] { inValue };
099 }
100
101 String newText = inText;
102 int i = 0;
103 for( ; i < to.length; i++ ) {
104 newText = StringUtil.replace( newText, FROM[i], to[i] );
105 }
106 for( ; i < FROM.length; i++ ) {
107 newText = StringUtil.replace( newText, FROM[i], "" );
108 }
109
110 // 3.8.8.2 (2007/01/26) 自??身を?$0 に割り当てる?
111 newText = StringUtil.replace( newText, "$0", inValue );
112
113 // 4.3.4.0 (2008/12/01) $Cの置換え
114 newText = StringUtil.replace( newText, "$C", inName );
115
116 outValue = to[0];
117 outText = newText;
118 return outText;
119 }
120
121 /**
122 * 第?数($1に相?を返します?
123 * 引数はコロン(:)で区?れて渡されて?す??で使用する本当?引数は
124 * 第?数です?これは、フォーマット時の$1に割り当てられます?
125 * フォーマット変換前に取得すると、null が返ります?
126 *
127 * @return 第?数($1に相?
128 */
129 public String getValue() {
130 return outValue;
131 }
132
133 /**
134 * フォーマット変換結果を返します?
135 * これは?format() 処?実行した結果を?部でキャ?ュして?す?
136 * 何度も結果?を取得したい場合に使用します?(変換処??実行しません)
137 * フォーマット変換前に取得すると、null が返ります?
138 *
139 * @return フォーマット変換結果
140 */
141 public String getText() {
142 return outText;
143 }
144 }