OSDN Git Service

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