3 import java.io.BufferedWriter;
\r
5 import java.io.FileNotFoundException;
\r
6 import java.io.FileOutputStream;
\r
7 import java.io.IOException;
\r
8 import java.io.OutputStreamWriter;
\r
9 import java.io.UnsupportedEncodingException;
\r
10 import java.util.regex.Matcher;
\r
11 import java.util.regex.Pattern;
\r
18 public class PlugIn_RecRD_iEPG extends HDDRecorderUtils implements HDDRecorder,Cloneable {
\r
20 public PlugIn_RecRD_iEPG clone() {
\r
21 return (PlugIn_RecRD_iEPG) super.clone();
\r
27 public String getRecorderId() { return "iEPG"; }
\r
28 public RecType getType() { return RecType.EPG; }
\r
31 private ChannelCode cc = new ChannelCode(getRecorderId());
\r
32 private String rsvedFile = "";
\r
34 private String errmsg = "";
\r
41 public ChannelCode getChCode() {
\r
47 public boolean isRepeatReserveSupported() { return false; }
\r
52 public boolean ChangeChannel(String Channel) {
\r
59 public boolean GetRdReserve(boolean force)
\r
61 System.out.println("Run: GetRdReserve("+force+")");
\r
63 setRsvedFile("env/reserved."+getIPAddr()+"_"+getPortNo()+"_"+getRecorderId()+".xml");
\r
68 if ( getTunerNum() >= 2 ) {
\r
69 for ( int i=1; i<=getTunerNum(); i++ ) {
\r
70 TextValueSet t = new TextValueSet();
\r
78 File f = new File(getRsvedFile());
\r
80 // キャッシュから読み出し(予約一覧)
\r
81 setReserves(ReservesFromFile(getRsvedFile()));
\r
90 public boolean PostRdEntry(ReserveList r)
\r
93 if (getCC().getCH_WEB2CODE(r.getCh_name()) == null) {
\r
94 errmsg = "【警告】Web番組表の放送局名「"+r.getCh_name()+"」をCHコードに変換できません。CHコード設定を修正してください。" ;
\r
95 System.out.println(getErrmsg());
\r
99 System.out.println("Run: PostRdEntry("+r.getTitle()+")");
\r
103 String iepgFile = "env/hogehoge.tvpi";
\r
106 BufferedWriter bw = null;
\r
107 OutputStreamWriter sw = null;
\r
108 FileOutputStream os = null;
\r
110 Matcher ma = Pattern.compile("^(\\d\\d\\d\\d)/(\\d\\d)/(\\d\\d)").matcher(r.getRec_pattern());
\r
111 if ( ! ma.find()) {
\r
112 setErrmsg("日付指定しか利用出来ません。");
\r
116 os = new FileOutputStream(iepgFile);
\r
117 sw = new OutputStreamWriter(os,"MS932");
\r
118 bw = new BufferedWriter(sw);
\r
119 bw.write("Content-type: application/x-tv-program-info; charset=Shift_JIS\r\n");
\r
120 bw.write("version: 1\r\n");
\r
121 bw.write("station: "+getCC().getCH_WEB2CODE(r.getCh_name())+"\r\n");
\r
122 bw.write(String.format("year: %04d\r\n", Integer.valueOf(ma.group(1))));
\r
123 bw.write(String.format("month: %02d\r\n", Integer.valueOf(ma.group(2))));
\r
124 bw.write(String.format("date: %02d\r\n", Integer.valueOf(ma.group(3))));
\r
125 bw.write("start: "+r.getAhh()+":"+r.getAmm()+"\r\n");
\r
126 bw.write("end: "+r.getZhh()+":"+r.getZmm()+"\r\n");
\r
127 bw.write("program-title: "+r.getTitle()+"\r\n");
\r
129 } catch (UnsupportedEncodingException e) {
\r
130 // TODO Auto-generated catch block
\r
131 e.printStackTrace();
\r
132 } catch (FileNotFoundException e) {
\r
133 // TODO Auto-generated catch block
\r
134 e.printStackTrace();
\r
135 } catch (IOException e) {
\r
136 // TODO Auto-generated catch block
\r
137 e.printStackTrace();
\r
140 if (bw != null) try { bw.close(); } catch (IOException e) {};
\r
141 if (sw != null) try { sw.close(); } catch (IOException e) {};
\r
142 if (os != null) try { os.close(); } catch (IOException e) {};
\r
146 String emsg = CommonUtils.openFile(iepgFile);
\r
147 if (emsg != null) {
\r
154 for (ReserveList x : getReserves()) {
\r
155 if (Long.valueOf(x.getId()) > no) {
\r
156 no = Long.valueOf(x.getId());
\r
159 r.setId(String.valueOf(++no));
\r
162 r.setRec_pattern_id(getRec_pattern_Id(r.getRec_pattern()));
\r
165 r.setRec_nextdate(CommonUtils.getNextDate(r));
\r
166 //r.setRec_nextdate(getNextDate(r.getRec_pattern(), r.getZhh()+":"+r.getZmm()));
\r
169 r.setRec_min(CommonUtils.getRecMin(r.getAhh(),r.getAmm(),r.getZhh(),r.getZmm()));
\r
172 getStartEndDateTime(r);
\r
175 getReserves().add(r);
\r
178 ReservesToFile(getReserves(), getRsvedFile());
\r
186 public boolean UpdateRdEntry(ReserveList o, ReserveList r) {
\r
187 System.out.println("Through: UpdateRdEntry()");
\r
189 setErrmsg("更新処理は無効です。");
\r
197 public ReserveList RemoveRdEntry(String delid) {
\r
199 System.out.println("Run: RemoveRdEntry()");
\r
204 ReserveList rx = null;
\r
205 for ( ReserveList reserve : getReserves() ) {
\r
206 if (reserve.getId().equals(delid)) {
\r
216 getReserves().remove(rx);
\r
219 ReservesToFile(getReserves(), getRsvedFile());
\r
221 System.out.printf("\n<<< Message from RD >>> \"%s\"\n\n", "正常に削除できました。");
\r
229 public String getErrmsg() {
\r
230 return(errmsg.replaceAll("[\r\n]", ""));
\r
232 protected void setErrmsg(String s) {
\r
239 protected String getRsvedFile() {
\r
242 protected void setRsvedFile(String s) {
\r
249 protected ChannelCode getCC() {
\r
253 public PlugIn_RecRD_iEPG() {
\r
255 this.setTunerNum(4);
\r