OSDN Git Service

93a84cd9b2a8c3f625a21f510e171d96b4eae0b8
[jindolf/JinArchiver.git] / src / main / java / jp / sourceforge / jindolf / archiver / TalkData.java
1 /*
2  * talk dialog
3  *
4  * License : The MIT License
5  * Copyright(c) 2008 olyutorskii
6  */
7
8 package jp.sourceforge.jindolf.archiver;
9
10 import java.io.IOException;
11 import java.io.Writer;
12 import jp.sourceforge.jindolf.corelib.TalkType;
13
14 /**
15  * 発言モデル。
16  */
17 public class TalkData extends TopicData{
18
19     private TalkType talkType = null;
20     private AvatarData avatarData = null;
21     private String xName;
22     private String faceIconUri = null;
23     private int hour;
24     private int minute;
25
26     /**
27      * コンストラクタ。
28      */
29     public TalkData(){
30         super();
31         return;
32     }
33
34     /**
35      * 発言種別を取得する。
36      * @return 発言種別
37      */
38     public TalkType getTalkType(){
39         return this.talkType;
40     }
41
42     /**
43      * 発言種別を設定する。
44      * @param talkType 発言種別
45      */
46     public void setTalkType(TalkType talkType){
47         this.talkType = talkType;
48         return;
49     }
50
51     /**
52      * 発言したAvatarを取得する。
53      * @return 発言Avatar
54      */
55     public AvatarData getAvatarData(){
56         return this.avatarData;
57     }
58
59     /**
60      * 発言したAvatarを設定する。
61      * @param avatarData 発言Avatar
62      */
63     public void setAvatarData(AvatarData avatarData){
64         this.avatarData = avatarData;
65         return;
66     }
67
68     /**
69      * 元発言のname属性値を取得する。
70      * @return name属性値
71      */
72     public String getXName(){
73         return this.xName;
74     }
75
76     /**
77      * 元発言のname属性値を設定する。
78      * @param xName name属性値
79      */
80     public void setXName(String xName){
81         this.xName = xName;
82         return;
83     }
84
85     /**
86      * 顔アイコン画像URI文字列を取得する。
87      * @return 顔アイコン画像URI文字列
88      */
89     public String getFaceIconUri(){
90         return this.faceIconUri;
91     }
92
93     /**
94      * 顔アイコン画像URI文字列を設定する。
95      * @param faceIconUri 顔アイコン画像URI文字列
96      */
97     public void setFaceIconUri(String faceIconUri){
98         this.faceIconUri = faceIconUri;
99         return;
100     }
101
102     /**
103      * 発言時を取得する。
104      * @return 発言時
105      */
106     public int getHour(){
107         return this.hour;
108     }
109
110     /**
111      * 発言時を設定する。
112      * @param hour 発言時
113      */
114     public void setHour(int hour){
115         this.hour = hour;
116         return;
117     }
118
119     /**
120      * 発言分を取得する。
121      * @return 発言分
122      */
123     public int getMinute(){
124         return this.minute;
125     }
126
127     /**
128      * 発言分を設定する。
129      * @param minute 発言分
130      */
131     public void setMinute(int minute){
132         this.minute = minute;
133         return;
134     }
135
136     /**
137      * talk要素をXML出力する。
138      * @param writer 出力先
139      * @throws IOException 出力エラー
140      */
141     @Override
142     public void dumpXml(Writer writer) throws IOException{
143         writer.append("<talk\n");
144
145         String typeStr;
146         switch(this.talkType){
147         case PUBLIC:
148             typeStr = "public";
149             break;
150         case WOLFONLY:
151             typeStr = "wolf";
152             break;
153         case PRIVATE:
154             typeStr = "private";
155             break;
156         case GRAVE:
157             typeStr = "grave";
158             break;
159         default:
160             throw new IllegalArgumentException();
161         }
162
163         XmlUtils.indent(writer, 1);
164         XmlUtils.attrOut(writer, "type", typeStr);
165
166         writer.append(' ');
167         XmlUtils.attrOut(writer, "avatarId", this.avatarData.getAvatarId());
168         writer.append('\n');
169
170         XmlUtils.indent(writer, 1);
171         XmlUtils.attrOut(writer, "xname", this.xName);
172
173         writer.append(' ');
174         XmlUtils.timeAttrOut(writer, "time", this.hour, this.minute);
175         writer.append('\n');
176
177         if(   this.talkType != TalkType.GRAVE
178            && ! this.faceIconUri.equals(this.avatarData.getFaceIconUri()) ){
179             XmlUtils.indent(writer, 1);
180             XmlUtils.attrOut(writer, "faceIconURI", this.faceIconUri);
181             writer.append('\n');
182         }
183
184         writer.append(">\n");
185
186         dumpLines(writer);
187
188         writer.append("</talk>\n");
189         return;
190     }
191
192 }