View Javadoc

1   package rydeen;
2   
3   import java.io.Serializable;
4   
5   /**
6    * 1つの引数を表すクラスです.
7    * {@link Argument <code>Argument</code>}のデフォルト実装クラスです.
8    * 
9    * @see Argument
10   * @author Haruaki Tamada
11   */
12  public class ArgumentImpl implements Serializable, Argument{
13      private static final long serialVersionUID = 5126931208339916608L;
14  
15      private String name;
16      private String value;
17      private String description;
18  
19      /**
20       * セルフコンストラクタ.
21       * 引数の Argument が持つ,名前,値,説明と同じ内容を持つ引数オブジェクトを作成します.
22       */
23      public ArgumentImpl(Argument arg){
24          this(arg.getName(), arg.getValue(), arg.getDescription());
25      }
26  
27      /**
28       * 指定された名前で,値と説明がnullの引数オブジェクトを作成します.
29       * 名前がnullの場合はNullPointerExceptionが投げられます.
30       * @param name 引数の名前
31       * @throws NullPointerException nameがnullの場合.
32       */
33      public ArgumentImpl(String name){
34          this(name, null, null);
35      }
36  
37      /**
38       * 指定された名前と値を持ち,説明がnullの引数オブジェクトを作成します.
39       * 名前がnullの場合はNullPointerExceptionが投げられます.
40       * @param name 引数の名前
41       * @param value  引数の値
42       * @throws NullPointerException nameがnullの場合.
43       */
44      public ArgumentImpl(String name, String value){
45          this(name, value, null);
46      }
47  
48      /**
49       * 指定された名前と値,説明を持つ引数オブジェクトを作成します.
50       * 名前がnullの場合はNullPointerExceptionが投げられます.
51       * @param name 引数の名前
52       * @param value  引数の値
53       * @param description 引数の説明
54       * @throws NullPointerException nameがnullの場合.
55       */
56      public ArgumentImpl(String name, String value, String description){
57          if(name == null){
58              throw new NullPointerException();
59          }
60          this.name = name;
61          setValue(value);
62          setDescription(description);
63      }
64  
65      /**
66       * 引数の名前を返します.
67       * 返り値は必ずnull以外の値となります.
68       */
69      @Override
70      public String getName(){
71          return name;
72      }
73  
74      /**
75       * 引数の値を返します.
76       * nullが返される場合もあります.
77       */
78      @Override
79      public String getValue(){
80          return value;
81      }
82  
83      /**
84       * 引数の値を設定します.
85       * @param value 引数の値
86       */
87      public void setValue(String value){
88          this.value = value;
89      }
90  
91      /**
92       * 引数の説明を返します.
93       * nullが返される場合もあります.
94       */
95      @Override
96      public String getDescription(){
97          return description;
98      }
99  
100     /**
101      * 引数の説明を設定します.
102      */
103     public void setDescription(String description){
104         this.description = description;
105     }
106 
107     /**
108      * この引数の文字列表現を返します.
109      */
110     @Override
111     public String toString(){
112         StringBuilder sb = new StringBuilder();
113         sb.append(getName()).append("=");
114         if(getValue() == null){
115             sb.append("<null>");
116         }
117         else{
118             sb.append(getValue());
119         }
120         if(getDescription() != null){
121             sb.append("(").append(description).append(")");
122         }
123         return new String(sb);
124     }
125 }