From 24c18e568f6aa403791e13dfb64cdda063a4260b Mon Sep 17 00:00:00 2001 From: Jan-Pascal van Best Date: Mon, 26 Mar 2012 22:39:37 +0200 Subject: [PATCH] More refactoring, renaming programme to tvgidsprogramme to make space for generic xmltv programme class --- .../org/vanbest/xmltv/AbstractEPGSource.java | 20 +++++++++- .../java/org/vanbest/xmltv/EPGSource.java | 4 +- src/main/java/org/vanbest/xmltv/Main.java | 4 +- .../org/vanbest/xmltv/ProgrammeCache.java | 18 ++++----- src/main/java/org/vanbest/xmltv/RTL.java | 40 +++++-------------- src/main/java/org/vanbest/xmltv/TvGids.java | 30 ++++---------- .../{Programme.java => TvGidsProgramme.java} | 4 +- ...tails.java => TvGidsProgrammeDetails.java} | 4 +- .../java/org/vanbest/xmltv/XmlTvWriter.java | 4 +- 9 files changed, 55 insertions(+), 73 deletions(-) rename src/main/java/org/vanbest/xmltv/{Programme.java => TvGidsProgramme.java} (97%) rename src/main/java/org/vanbest/xmltv/{ProgrammeDetails.java => TvGidsProgrammeDetails.java} (97%) diff --git a/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java b/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java index 8996bec..fae8e28 100644 --- a/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java +++ b/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java @@ -1,7 +1,10 @@ package org.vanbest.xmltv; +import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; import java.util.ArrayList; import java.util.Set; @@ -18,7 +21,7 @@ public abstract class AbstractEPGSource implements EPGSource { cache = new ProgrammeCache(config.cacheFile); } - public Set getProgrammes(Channel channel, int day, boolean fetchDetails) + public Set getProgrammes(Channel channel, int day, boolean fetchDetails) throws Exception { ArrayList list = new ArrayList(2); list.add(channel); @@ -35,4 +38,19 @@ public abstract class AbstractEPGSource implements EPGSource { cache.close(); } + protected String fetchURL(URL url) throws Exception { + Thread.sleep(config.niceMilliseconds); + StringBuffer buf = new StringBuffer(); + try { + BufferedReader reader = new BufferedReader( new InputStreamReader( url.openStream())); + String s; + while ((s = reader.readLine()) != null) buf.append(s); + } catch (IOException e) { + stats.fetchErrors++; + throw new Exception("Error getting program data from url " + url, e); + } + return buf.toString(); + } + + } \ No newline at end of file diff --git a/src/main/java/org/vanbest/xmltv/EPGSource.java b/src/main/java/org/vanbest/xmltv/EPGSource.java index 1697f45..30443e1 100644 --- a/src/main/java/org/vanbest/xmltv/EPGSource.java +++ b/src/main/java/org/vanbest/xmltv/EPGSource.java @@ -18,10 +18,10 @@ public interface EPGSource { public abstract List getChannels(); // Convenience method - public abstract Set getProgrammes(Channel channel, int day, + public abstract Set getProgrammes(Channel channel, int day, boolean fetchDetails) throws Exception; - public abstract Set getProgrammes(List channels, + public abstract Set getProgrammes(List channels, int day, boolean fetchDetails) throws Exception; public abstract Stats getStats(); diff --git a/src/main/java/org/vanbest/xmltv/Main.java b/src/main/java/org/vanbest/xmltv/Main.java index e94bf4d..f4255b7 100644 --- a/src/main/java/org/vanbest/xmltv/Main.java +++ b/src/main/java/org/vanbest/xmltv/Main.java @@ -77,11 +77,11 @@ public class Main { for (int day=offset; day programmes = new HashSet(); + Set programmes = new HashSet(); for(Channel c: config.channels) { if (!c.enabled) continue; if (!config.quiet) System.out.print("."); - Set p = gids.getProgrammes(c, day, true); + Set p = gids.getProgrammes(c, day, true); writer.writePrograms(p); writer.flush(); } diff --git a/src/main/java/org/vanbest/xmltv/ProgrammeCache.java b/src/main/java/org/vanbest/xmltv/ProgrammeCache.java index 533a6b7..39bf4fa 100644 --- a/src/main/java/org/vanbest/xmltv/ProgrammeCache.java +++ b/src/main/java/org/vanbest/xmltv/ProgrammeCache.java @@ -32,41 +32,41 @@ import org.apache.commons.io.FileUtils; public class ProgrammeCache { private File cacheFile; - private Map cache; + private Map cache; public ProgrammeCache(File cacheFile) { this.cacheFile = cacheFile; if (cacheFile.canRead()) { try { - cache = (Map) new ObjectInputStream( new FileInputStream( cacheFile ) ).readObject(); + cache = (Map) new ObjectInputStream( new FileInputStream( cacheFile ) ).readObject(); } catch (InvalidClassException e) { // TODO Auto-generated catch block - cache = new HashMap(); + cache = new HashMap(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); - cache = new HashMap(); + cache = new HashMap(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); - cache = new HashMap(); + cache = new HashMap(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); - cache = new HashMap(); + cache = new HashMap(); } } else { - cache = new HashMap(); + cache = new HashMap(); } // FileUtils.forceMkdir(root); } - public ProgrammeDetails getDetails(String id) { + public TvGidsProgrammeDetails getDetails(String id) { return cache.get(id); } - public void add(String id, ProgrammeDetails d) { + public void add(String id, TvGidsProgrammeDetails d) { cache.put(id, d); } diff --git a/src/main/java/org/vanbest/xmltv/RTL.java b/src/main/java/org/vanbest/xmltv/RTL.java index e6241a3..e23e8c2 100644 --- a/src/main/java/org/vanbest/xmltv/RTL.java +++ b/src/main/java/org/vanbest/xmltv/RTL.java @@ -28,7 +28,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; -public class RTL implements EPGSource { +public class RTL extends AbstractEPGSource implements EPGSource { static final String programme_url="http://www.rtl.nl/active/epg_data/dag_data/"; static final String detail_url="http://www.rtl.nl/active/epg_data/uitzending_data/"; @@ -36,6 +36,10 @@ public class RTL implements EPGSource { Stats stats = new Stats(); + public RTL(Config config) { + super(config); + } + public List getChannels() { List result = new ArrayList(10); @@ -69,20 +73,6 @@ public class RTL implements EPGSource { return result; } - protected String fetchURL(URL url) throws Exception { - StringBuffer buf = new StringBuffer(); - try { - BufferedReader reader = new BufferedReader( new InputStreamReader( url.openStream())); - String s; - while ((s = reader.readLine()) != null) buf.append(s); - } catch (IOException e) { - stats.fetchErrors++; - throw new Exception("Error getting program data from url " + url, e); - } - return buf.toString(); - } - - protected void fetchDay(int day) throws Exception { URL url = new URL(programme_url+day); String xmltext = fetchURL(url); @@ -147,22 +137,8 @@ public class RTL implements EPGSource { Element root = xml.getDocumentElement(); } - - @Override - public void close() throws FileNotFoundException, IOException { - // TODO Auto-generated method stub - - } - - @Override - public Set getProgrammes(Channel channel, int day, - boolean fetchDetails) throws Exception { - // TODO Auto-generated method stub - return null; - } - @Override - public Set getProgrammes(List channels, int day, + public Set getProgrammes(List channels, int day, boolean fetchDetails) throws Exception { // TODO Auto-generated method stub return null; @@ -191,7 +167,9 @@ public class RTL implements EPGSource { writer.writeCharacters("\n"); writer.writeStartElement("tv"); for(Channel c: channels) {c.serialize(writer);} - System.out.flush(); + writer.writeEndElement(); + writer.writeEndDocument(); + writer.flush(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/src/main/java/org/vanbest/xmltv/TvGids.java b/src/main/java/org/vanbest/xmltv/TvGids.java index d7899df..6dba44a 100644 --- a/src/main/java/org/vanbest/xmltv/TvGids.java +++ b/src/main/java/org/vanbest/xmltv/TvGids.java @@ -163,8 +163,8 @@ public class TvGids extends AbstractEPGSource implements EPGSource { * @see org.vanbest.xmltv.EPGSource#getProgrammes(java.util.List, int, boolean) */ @Override - public Set getProgrammes(List channels, int day, boolean fetchDetails) throws Exception { - Set result = new HashSet(); + public Set getProgrammes(List channels, int day, boolean fetchDetails) throws Exception { + Set result = new HashSet(); URL url = programmeUrl(channels, day); JSONObject jsonObject = fetchJSON(url); @@ -176,7 +176,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource { JSONArray programs = (JSONArray) ps; for( int i=0; i(.*?):(.*?)"); Pattern HDPattern = Pattern.compile("HD \\d+[ip]?"); @@ -238,7 +224,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource { URL url = JSONDetailUrl(p.db_id); JSONObject json = fetchJSON(url); - p.details = (ProgrammeDetails) JSONObject.toBean(json, ProgrammeDetails.class); + p.details = (TvGidsProgrammeDetails) JSONObject.toBean(json, TvGidsProgrammeDetails.class); url = HTMLDetailUrl(p.db_id); String clob=fetchURL(url); diff --git a/src/main/java/org/vanbest/xmltv/Programme.java b/src/main/java/org/vanbest/xmltv/TvGidsProgramme.java similarity index 97% rename from src/main/java/org/vanbest/xmltv/Programme.java rename to src/main/java/org/vanbest/xmltv/TvGidsProgramme.java index 21c7e02..c78fa82 100644 --- a/src/main/java/org/vanbest/xmltv/Programme.java +++ b/src/main/java/org/vanbest/xmltv/TvGidsProgramme.java @@ -18,7 +18,7 @@ package org.vanbest.xmltv; import java.util.Date; -public class Programme { +public class TvGidsProgramme { public String getDb_id() { return db_id; } @@ -118,7 +118,7 @@ public class Programme { boolean is_highlight; String highlight_afbeelding; String highlight_content; - ProgrammeDetails details = null; + TvGidsProgrammeDetails details = null; Channel channel = null; public void fixup(Config config) { diff --git a/src/main/java/org/vanbest/xmltv/ProgrammeDetails.java b/src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java similarity index 97% rename from src/main/java/org/vanbest/xmltv/ProgrammeDetails.java rename to src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java index 976f5cb..37815a9 100644 --- a/src/main/java/org/vanbest/xmltv/ProgrammeDetails.java +++ b/src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java @@ -18,7 +18,7 @@ package org.vanbest.xmltv; import java.io.Serializable; -public class ProgrammeDetails implements Serializable { +public class TvGidsProgrammeDetails implements Serializable { String db_id; String titel; String datum; @@ -38,7 +38,7 @@ public class ProgrammeDetails implements Serializable { public String quality = null; public boolean herhaling = false; - public void fixup(Programme p, boolean quiet) { + public void fixup(TvGidsProgramme p, boolean quiet) { this.titel = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(titel); this.genre = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(genre); this.synop = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(synop); diff --git a/src/main/java/org/vanbest/xmltv/XmlTvWriter.java b/src/main/java/org/vanbest/xmltv/XmlTvWriter.java index 6375b46..7a0339f 100644 --- a/src/main/java/org/vanbest/xmltv/XmlTvWriter.java +++ b/src/main/java/org/vanbest/xmltv/XmlTvWriter.java @@ -70,9 +70,9 @@ public class XmlTvWriter { * artikel_id ??? * */ - public void writePrograms(Collection programs) throws XMLStreamException { + public void writePrograms(Collection programs) throws XMLStreamException { DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss Z"); - for(Programme p: programs) { + for(TvGidsProgramme p: programs) { writer.writeStartElement("programme"); writer.writeAttribute("start", df.format(p.datum_start)); writer.writeAttribute("stop", df.format(p.datum_end)); -- 2.39.5