OSDN Git Service

[自動予約一覧]検索条件、録画設定の取得とファイルへの保存まで
[tainavi/TinyBannavi.git] / TinyBannavi / src / tainavi / HDDRecorder.java
1 package tainavi;\r
2 \r
3 import java.util.ArrayList;\r
4 \r
5 /**\r
6  * レコーダプラグインに実装されるべきインタフェースです。\r
7  * @see HDDRecorderUtils\r
8  */\r
9 public interface HDDRecorder {\r
10 \r
11         /*******************************************************************************\r
12          * 定数\r
13          ******************************************************************************/\r
14         \r
15         /**\r
16          * 繰り返し予約を表す文字列定数。(毎日曜日~毎日)\r
17          */\r
18         public static final String[] RPTPTN = {"毎日曜日","毎月曜日","毎火曜日","毎水曜日","毎木曜日","毎金曜日","毎土曜日","毎月~木","毎月~金","毎月~土","毎日"};\r
19         \r
20         // enum使えよ!!\r
21         public static final int RPTPTN_ID_SAT = 6;\r
22         public static final int RPTPTN_ID_MON2THU = 7;\r
23         public static final int RPTPTN_ID_MON2FRI = 8;\r
24         public static final int RPTPTN_ID_MON2SAT = 9;\r
25         public static final int RPTPTN_ID_EVERYDAY = 10;\r
26         public static final int RPTPTN_ID_BYDATE = 11;\r
27         \r
28         /**\r
29          * レコーダの種別を表す定数\r
30          */\r
31         public static enum RecType { RECORDER, EPG, MAIL, CALENDAR, TUNER, NULL };\r
32         \r
33         /**\r
34          * 録画結果と予約一覧の引き当てを行う範囲の最大\r
35          */\r
36         public static final int SCOPEMAX = 366;\r
37 \r
38         // 特殊なレコーダID\r
39         public static final String SELECTED_ALL = "すべて";\r
40         public static final String SELECTED_PICKUP = "ピックアップのみ";\r
41 \r
42         \r
43         /*******************************************************************************\r
44          * 種族の特性\r
45          ******************************************************************************/\r
46 \r
47         public String getRecorderId();\r
48         \r
49         public RecType getType();\r
50         \r
51         public ArrayList<TextValueSet> getVideoRateList();\r
52         public ArrayList<TextValueSet> getAudioRateList();\r
53         public ArrayList<TextValueSet> getFolderList();\r
54         public ArrayList<TextValueSet> getEncoderList();\r
55         public ArrayList<TextValueSet> getDVDCompatList();\r
56         public ArrayList<TextValueSet> getDeviceList();\r
57         public ArrayList<TextValueSet> getXChapter();\r
58         public ArrayList<TextValueSet> getMsChapter();\r
59         public ArrayList<TextValueSet> getMvChapter();\r
60         public ArrayList<TextValueSet> getChValue();\r
61         public ArrayList<TextValueSet> getChType();\r
62         public ArrayList<TextValueSet> getAspect();\r
63         public ArrayList<TextValueSet> getBVperf();\r
64         public ArrayList<TextValueSet> getLVoice();\r
65         public ArrayList<TextValueSet> getAutodel();\r
66         \r
67         public String getLabel_Videorate();\r
68         public String getLabel_Audiorate();\r
69         public String getLabel_Folder();\r
70         public String getLabel_Device();\r
71         public String getLabel_DVDCompat();\r
72         public String getLabel_XChapter();\r
73         public String getLabel_MsChapter();\r
74         public String getLabel_MvChapter();\r
75         public String getLabel_Aspect();\r
76         public String getLabel_BVperf();\r
77         public String getLabel_LVoice();\r
78         public String getLabel_Autodel();\r
79         \r
80         public String text2value(ArrayList<TextValueSet> tvs, String text);\r
81         public String value2text(ArrayList<TextValueSet> tvs, String value);\r
82 \r
83         \r
84         // 個体の特性 \r
85         public String getIPAddr();\r
86         public void setIPAddr(String s);\r
87         public String getPortNo();\r
88         public void setPortNo(String s);\r
89         public String getUser();\r
90         public void setUser(String s);\r
91         public String getPasswd();\r
92         public void setPasswd(String s);\r
93         public String getColor(String tuner);\r
94         public void setColor(String s);\r
95         public String getMacAddr();\r
96         public void setMacAddr(String s);\r
97         public String getBroadcast();\r
98         public void setBroadcast(String s);\r
99         \r
100         /**\r
101          * デバッグ用\r
102          */\r
103         public ArrayList<String> getColors();\r
104         \r
105         /**\r
106          * 仮想エンコーダ数(チューナ数)を返します。DIGAなどレコーダからエンコーダ数を取得できない場合に使用します。\r
107          */\r
108         public int getTunerNum();\r
109         \r
110         /**\r
111          * 仮想エンコーダ数(チューナ数)を設定します。DIGAなどレコーダからエンコーダ数を取得できない場合に使用します。\r
112          */\r
113         public void setTunerNum(int n);\r
114 \r
115         \r
116         \r
117         /*\r
118          * 予約一覧系\r
119          */\r
120         \r
121         /**\r
122          * 特定の予約を返します。\r
123          */\r
124         public ReserveList getReserveList(String rsvId);\r
125         \r
126         /**\r
127          * 予約一覧を返します。\r
128          */\r
129         public ArrayList<ReserveList> getReserves();\r
130         \r
131         /**\r
132          * 自動予約一覧を返します。\r
133          */\r
134         public AutoReserveInfoList getAutoReserves();\r
135         \r
136         /**\r
137          * 録画結果一覧を返します。\r
138          */\r
139         public ArrayList<RecordedInfo> getRecorded();\r
140         \r
141         /**\r
142          * 過去日の情報を削除したり、繰り返し予約の次回実行予定日を設定したりします。\r
143          * @see HDDRecorderUtils#refreshReserves()\r
144          */\r
145         public void refreshReserves();\r
146         \r
147         \r
148         \r
149         /*\r
150          * オプション系\r
151          */\r
152         \r
153         /**\r
154          * <P>予約一覧へのアクセスだけでは予約の詳細がわからないレコーダなので詳細情報の個別取得が必要か?どうかを返します。\r
155          * <P>ただし、これをtrueにするのは個別取得に時間がかかる(旧RD系など)だけで、高速なもの(TvRockやEDCBなど)ではfalseでかまいません。\r
156          * @see #GetRdReserveDetails()\r
157          */\r
158         public boolean isThereAdditionalDetails();\r
159 \r
160         /**\r
161          * 自動予約の編集をサポートしているかどうかを返します。\r
162          */\r
163         public boolean isEditAutoReserveSupported();\r
164         \r
165         /**\r
166          * 自動エンコーダ選択を使用するかどうかを返します。\r
167          */\r
168         public boolean isAutoEncSelectEnabled();\r
169         \r
170         /**\r
171          * 繰り返し予約をサポートしているかどうかを返します。\r
172          */\r
173         public boolean isRepeatReserveSupported();\r
174         \r
175         /**\r
176          * 番組追従の変更をサポートしているかどうかを返します。\r
177          */\r
178         public boolean isPursuesEditable();\r
179         \r
180         /**\r
181          * タイトル自動補完をサポートしているかどうかを返します。\r
182          */\r
183         public boolean isAutocompleteSupported();\r
184         \r
185         /**\r
186          * チャンネル操作をサポートしているかどうかを返します。\r
187          */\r
188         public boolean isChangeChannelSupported();\r
189         \r
190         /**\r
191          * Googleカレンダープラグインなど、通常操作用には選択できないプラグインです。\r
192          */\r
193         public boolean isBackgroundOnly();\r
194 \r
195         /**\r
196          * 「レコーダの放送局名」にchvalueの値を利用できる\r
197          */\r
198         public boolean isChValueAvailable();\r
199 \r
200         /**\r
201          * 「レコーダの放送局名」と「放送局コード」に異なる値を設定する必要がある(isChValueAvailable()==trueなら通常使われない)\r
202          */\r
203         public boolean isChCodeNeeded();\r
204 \r
205         /**\r
206          * レコーダの放送局名すら必要ない(NULL)\r
207          */\r
208         public boolean isRecChNameNeeded();\r
209         \r
210         /**\r
211          * 放送波の種別設定を必要とする(TvRock)\r
212          */\r
213         public boolean isBroadcastTypeNeeded();\r
214         \r
215         /**\r
216          *  フリーワードオプションの処理(設定)\r
217          */\r
218         public boolean setOptString(String s);\r
219         \r
220         /**\r
221          *  フリーワードオプションの処理(記録)\r
222          */\r
223         public String getOptString();\r
224         \r
225         \r
226         /*\r
227          * 識別系\r
228          */\r
229         \r
230         /**\r
231          * 実際のレコーダを示すユニークID返却します。\r
232          * @return IP:PORT:RECORDER_ID (基本形。違う形式もあるかもしれない。)\r
233          */\r
234         public String Myself();\r
235         \r
236         /**\r
237          * このプラグインが実際のレコーダとマッチするかどうか判定します。\r
238          * @param id : MySelf()で得られる値\r
239          */\r
240         public boolean isMyself(String id);\r
241         \r
242         \r
243         /**\r
244          * \r
245          */\r
246         public String getChDatHelp();\r
247         \r
248         \r
249         /*\r
250          * 動作設定系\r
251          */\r
252         \r
253         /**\r
254          * デバッグログ出力(主にレコーダとのHTTPのやりとり)をON/OFFします。\r
255          */\r
256         public void setDebug(boolean b);\r
257         \r
258         /**\r
259          * 終了時刻と開始時刻が重なる番組を重複として処理するかどうかを指定します。\r
260          * @param b : trueの場合、重複とみましません。\r
261          */\r
262         public void setAdjNotRep(boolean b);\r
263         \r
264         /**\r
265          * カレンダー連携を個別にON/OFFします。\r
266          */\r
267         public void setUseCalendar(boolean b);\r
268         public boolean getUseCalendar();\r
269 \r
270         /**\r
271          * カレンダー連携を個別にON/OFFします。\r
272          */\r
273         public void setUseChChange(boolean b);\r
274         public boolean getUseChChange();\r
275 \r
276         /**\r
277          * 成功した記録をチェックする範囲\r
278          */\r
279         public void setRecordedCheckScope(int n);\r
280         //public int getRecordedCheckScope();\r
281 \r
282         /**\r
283          * 録画結果を残す範囲\r
284          */\r
285         public void setRecordedSaveScope(int n);\r
286         \r
287         /**\r
288          * <P>HTTPアクセス時のUser-Agentの値を設定します。\r
289          * <P>基本的に設定する意味はないでしょう。\r
290          */\r
291         public void setUserAgent(String s);\r
292 \r
293         /**\r
294          * 動作状況を出力するステータスウィンドウを設定します。\r
295          */\r
296         public void setProgressArea(StatusWindow o);\r
297         \r
298         \r
299         /*\r
300          *  主要な操作系メソッド\r
301          */\r
302         \r
303         public ChannelCode getChCode();\r
304         \r
305         /**\r
306          * <P>レコーダを起動させます。MACアドレスとブロードキャストアドレスの設定が必要です。\r
307          * <P>基本的にはWOLを実行しますが、DIGAは電源が落ちていてもHTTPサーバが生きているのでHTTPリクエストによる起動が実行されます。\r
308          */\r
309         public void wakeup();\r
310         \r
311         /**\r
312          * レコーダを停止させます。MACアドレスとブロードキャストアドレスの設定が必要です。\r
313          */\r
314         public void shutdown();\r
315 \r
316         /**\r
317          * チャンネルを切り替えます。\r
318          * @param Channel : Web番組表の放送局名を指定します。\r
319          */\r
320         public boolean ChangeChannel(String Channel);\r
321 \r
322         /**\r
323          * <P>レコーダから各種設定の取得を行います。(全部のレコーダには実装していない)\r
324          * @param force : trueの場合レコーダへのアクセスを強制します。falseの場合キャッシュファイルがあればそちらを利用します。\r
325          * @see #GetRdReserve(boolean)\r
326          * @see #GetRdReserveDetails()\r
327          * @see #GetRdRecorded(boolean)\r
328          */\r
329         public boolean GetRdSettings(boolean force);\r
330         \r
331         /**\r
332          * <P>レコーダから予約一覧(と各種設定)の取得を行います。\r
333          * <P>将来的には、各種設定の取得は別メソッドにわけたいところ。\r
334          * @param force : trueの場合レコーダへのアクセスを強制します。falseの場合キャッシュファイルがあればそちらを利用します。\r
335          * @see #GetRdSettings(boolean)\r
336          */\r
337         public boolean GetRdReserve(boolean force);\r
338         \r
339         /**\r
340          * <P>レコーダから自動予約一覧の取得を行います。\r
341          * @param force : trueの場合レコーダへのアクセスを強制します。falseの場合キャッシュファイルがあればそちらを利用します。\r
342          * @see #isEditAutoReserveSupported()\r
343          */\r
344         public boolean GetRdAutoReserve(boolean force);\r
345 \r
346         /**\r
347          * <P>レコーダから録画結果一覧の取得を行います。\r
348          * @see #GetRdSettings(boolean)\r
349          */\r
350         public boolean GetRdRecorded(boolean force);\r
351         \r
352         /**\r
353          * 詳細情報の個別取得を行います。\r
354          * @see #GetRdReserve(boolean)\r
355          * @see #isThereAdditionalDetails()\r
356          */\r
357         public boolean GetRdReserveDetails();\r
358         \r
359         /**\r
360          * 予約の新規登録を行います。\r
361          */\r
362         public boolean PostRdEntry(ReserveList r);\r
363         \r
364         /**\r
365          * 予約の更新を行います。\r
366          * @param o : 旧情報\r
367          * @param r : 新情報\r
368          */\r
369         public boolean UpdateRdEntry(ReserveList o, ReserveList r);\r
370         \r
371         /**\r
372          * 予約の削除を行います。\r
373          * @param delno : 削除する予約の予約IDを指定します。\r
374          * @see ReserveList#id\r
375          */\r
376         public ReserveList RemoveRdEntry(String delno);\r
377         \r
378         /**\r
379          * 処理の結果に応じて追加のメッセージが取得できます。\r
380          * @return "" : まったくの正常に終わった場合。\r
381          */\r
382         public String getErrmsg();\r
383         \r
384         \r
385         /**\r
386          * クローンとコンピュータの融合体は新たな生命と呼べるのか\r
387          */\r
388         public HDDRecorder clone();\r
389 }\r