View Javadoc

1   /*
2    * @(#) $Id: StringValues.java,v 1.1.2.1 2005/01/18 07:20:49 otsuka Exp $
3    * $Revision: 1.1.2.1 $
4    */
5   package com.ozacc.mail.fetch.impl.sk_jp.util;
6   
7   import java.util.*;
8   
9   /***
10   * StringValues.
11   * <p>
12   * 複数の文字列をカンマやタブ区切りなどの一つの文字列として管理可能とします。
13   * <br>内部的にはListに入れますのでindexによるアクセスも可能ですが、
14   * 構築時、及びgetString()時に区切り文字で一本にされた文字列として
15   * やりとりすることもできます。
16   * エスケープ処理がされないので、デリミタを含むトークンを認識できません。
17   * </p>
18   * @version $Revision: 1.1.2.1 $ $Date: 2005/01/18 07:20:49 $
19   * @author Shin
20   */
21  public class StringValues {
22      private List                src_ = new ArrayList();
23      /***
24       * 複数文字列管理オブジェクトを生成します。
25       */
26      public StringValues() {}
27      /***
28       * 複数文字列管理オブジェクトを生成します。
29       * @param str 区切り文字で連結された文字列
30       */
31      public StringValues(String str) {
32          parse(str);
33      }
34      /***
35       * 複数文字列管理オブジェクトを生成します。
36       * @param str 区切り文字で連結された文字列
37       * @param delim デリミタ
38       */
39      public StringValues(String str, String delim) {
40          parse(str, delim);
41      }
42      /***
43       * 複数文字列管理オブジェクトを生成します。
44       * @param strings 文字列の配列
45       */
46      public StringValues(String[] strings) {
47          add(strings);
48      }
49      /***
50       * 複数文字列管理オブジェクトを生成します。
51       * @param strings 文字列の配列
52       */
53      public StringValues(Object[] o) {
54          for (int i = 0; i < o.length; i++) {
55              add(o[i].toString());
56          }
57      }
58  //////////////////////////////////////////////////////////////////////////////
59      /***
60       * デリミタで区切られた文字列を分割して追加します。
61       * <p>
62       * デリミタはStringTokenizerの標準のデリミタ
63       * <code>"&#92;t&#92;n&#92;r&#92;f"</code>が使われます。
64       * </p>
65       * @param str 区切り文字で連結された文字列
66       * @param delim デリミタ
67       */
68      public void parse(String str) {
69          StringTokenizer         st = new StringTokenizer(str);
70          parse(st);
71      }
72      /***
73       * デリミタで区切られた文字列を分割して追加します。
74       * <p>
75       * </p>
76       * @param str 区切り文字で連結された文字列
77       * @param delim デリミタ
78       */
79      public void parse(String str, String delim) {
80          StringTokenizer         st = new StringTokenizer(str, delim);
81          parse(st);
82      }
83      private void parse(StringTokenizer st) {
84          while (st.hasMoreTokens()) {
85              add(st.nextToken());
86          }
87      }
88      /***
89       * 文字列群へのイテレータを返します。
90       * @return Iteratorオブジェクト
91       */
92      public Iterator iterator() {
93          return src_.iterator();
94      }
95  
96      /***
97       * カンマ区切り文字列を得ます。
98       * <p>
99       * 区切り文字列は文字列同士の間に単純に挿入されます。
100      * </p>
101      * @return 文字列化したオブジェクト
102      */
103     public String getString() {
104         return getString(", ");
105     }
106     /***
107      * 指定した区切り文字で連結された文字列を得ます。
108      * <p>
109      * 区切り文字列は文字列同士の間に単純に挿入されます。
110      * </p>
111      * @param delim 区切り文字列
112      * @return 文字列化したオブジェクト
113      */
114     public String getString(String delim) {
115         StringBuffer            buf = new StringBuffer();
116         Iterator                iterator = iterator();
117         if (iterator.hasNext()) {
118             buf.append(iterator.next());
119         }
120         while (iterator.hasNext()) {
121             buf.append(delim).append(iterator.next());
122         }
123         return new String(buf);
124     }
125     public String toString() {
126         return getString();
127     }
128     /***
129      * 指定indexの文字列を取得します。
130      * @param index 文字列群中の位置
131      */
132     public String get(int index) {
133         return (String)src_.get(index);
134     }
135     /***
136      * 文字列を追加します。
137      * @param str 追加する文字列
138      */
139     public void add(String str) {
140         src_.add(str);
141     }
142     /***
143      * 文字列群を追加します。
144      * @param str 追加する文字列
145      */
146     public void add(String[] str) {
147         for (int i = 0; i < str.length; i++) {
148             src_.add(str[i]);
149         }
150     }
151     /***
152      * 管理している文字列を削除します。
153      */
154     public void clear() {
155         src_.clear();
156     }
157 }