From: Jan-Pascal van Best Date: Sat, 24 Mar 2012 22:35:37 +0000 (+0100) Subject: Finish refactoring Channel, compiles and seems to work ok now X-Git-Tag: 0.9.0~29 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=aaca45de9ae72410ac7950550e9e29c66d43a134;p=tv_grab_nl_java Finish refactoring Channel, compiles and seems to work ok now --- diff --git a/src/main/java/org/vanbest/xmltv/Channel.java b/src/main/java/org/vanbest/xmltv/Channel.java index 4857561..f80ab6f 100644 --- a/src/main/java/org/vanbest/xmltv/Channel.java +++ b/src/main/java/org/vanbest/xmltv/Channel.java @@ -13,9 +13,10 @@ public class Channel { List names; // at least one name is obligatory List icons; List urls; - protected boolean selected; + protected boolean selected = true; - protected Channel() { + protected Channel(String id) { + this.id = id; names = new ArrayList(); icons = new ArrayList(); urls = new ArrayList(); @@ -26,13 +27,13 @@ public class Channel { } static Channel getChannel(String id, String name) { - Channel c = new Channel(); + Channel c = new Channel(id); c.names.add(name); return c; } static Channel getChannel(String id, String name, String iconUrl) { - Channel c = new Channel(); + Channel c = new Channel(id); c.names.add(name); c.icons.add(new Icon(iconUrl)); return c; diff --git a/src/main/java/org/vanbest/xmltv/Icon.java b/src/main/java/org/vanbest/xmltv/Icon.java new file mode 100644 index 0000000..e6cd5f1 --- /dev/null +++ b/src/main/java/org/vanbest/xmltv/Icon.java @@ -0,0 +1,27 @@ +package org.vanbest.xmltv; + +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamWriter; + +public class Icon { + final static int UNKNOWN_DIMENSION=-1; + String url; + int width = UNKNOWN_DIMENSION; + int height = UNKNOWN_DIMENSION; + + public Icon(String url) { + this.url = url; + } + + public void serialize(XMLStreamWriter writer) throws XMLStreamException { + writer.writeStartElement("icon"); + writer.writeAttribute("src", url); + if(width != UNKNOWN_DIMENSION) { + writer.writeAttribute("width", Integer.toString(width)); + } + if(height!= UNKNOWN_DIMENSION) { + writer.writeAttribute("height", Integer.toString(height)); + } + writer.writeEndElement(); + } +} diff --git a/src/main/java/org/vanbest/xmltv/Main.java b/src/main/java/org/vanbest/xmltv/Main.java index 39ad63e..c31f0de 100644 --- a/src/main/java/org/vanbest/xmltv/Main.java +++ b/src/main/java/org/vanbest/xmltv/Main.java @@ -76,10 +76,9 @@ public class Main { if (!config.quiet) System.out.print("Fetching information for day " + day); Set programmes = new HashSet(); for(Channel c: config.channels) { + if (!c.selected) continue; if (!config.quiet) System.out.print("."); - ArrayList cs = new ArrayList(2); - cs.add(c); - Set p = gids.getProgrammes(cs, day, true); + Set p = gids.getProgrammes(c, day, true); writer.writePrograms(p); writer.flush(); } @@ -107,8 +106,8 @@ public class Main { public void configure() throws IOException { TvGids gids = new TvGids(config); - Set oldChannels = new HashSet(); - for (TvGidsChannel c: config.channels) { + Set oldChannels = new HashSet(); + for (Channel c: config.channels) { oldChannels.add(c.id); } List channels = gids.getChannels(); diff --git a/src/main/java/org/vanbest/xmltv/Programme.java b/src/main/java/org/vanbest/xmltv/Programme.java index de8dce3..21c7e02 100644 --- a/src/main/java/org/vanbest/xmltv/Programme.java +++ b/src/main/java/org/vanbest/xmltv/Programme.java @@ -119,7 +119,7 @@ public class Programme { String highlight_afbeelding; String highlight_content; ProgrammeDetails details = null; - TvGidsChannel channel = null; + Channel channel = null; public void fixup(Config config) { this.titel = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(titel); diff --git a/src/main/java/org/vanbest/xmltv/TvGids.java b/src/main/java/org/vanbest/xmltv/TvGids.java index 6d33c99..ee79ed8 100644 --- a/src/main/java/org/vanbest/xmltv/TvGids.java +++ b/src/main/java/org/vanbest/xmltv/TvGids.java @@ -130,14 +130,14 @@ public class TvGids { } - public static URL programmeUrl(List channels, int day) throws Exception { + public static URL programmeUrl(List channels, int day) throws Exception { StringBuilder s = new StringBuilder(programme_base_url); if (channels.size() < 1) { throw new Exception("should have at least one channel"); } s.append("?channels="); boolean first = true; - for(TvGidsChannel i: channels) { + for(Channel i: channels) { if (first) { s.append(i.id); first = false; @@ -164,16 +164,23 @@ public class TvGids { s.append("/"); return new URL(s.toString()); } + + // Convenience method + public Set getProgrammes(Channel channel, int day, boolean fetchDetails) throws Exception { + ArrayList list = new ArrayList(2); + list.add(channel); + return getProgrammes(list, day, fetchDetails); + } - public Set getProgrammes(List channels, int day, boolean fetchDetails) throws Exception { + public Set getProgrammes(List channels, int day, boolean fetchDetails) throws Exception { Set result = new HashSet(); URL url = programmeUrl(channels, day); JSONObject jsonObject = fetchJSON(url); //System.out.println( jsonObject ); - for( TvGidsChannel c: channels) { - JSON ps = (JSON) jsonObject.get(""+c.id); + for(Channel c: channels) { + JSON ps = (JSON) jsonObject.get(c.id); if ( ps.isArray() ) { JSONArray programs = (JSONArray) ps; for( int i=0; i