Commit c4e4b49c6cb89b9e84967996665dff0ec6704943
1 parent
ec4076d7
--no commit message
Showing
5 changed files
with
338 additions
and
257 deletions
gen/com/upc/pbe/upcnews/R.java
1 | -/* AUTO-GENERATED FILE. DO NOT MODIFY. | |
2 | - * | |
3 | - * This class was automatically generated by the | |
4 | - * aapt tool from the resource data it found. It | |
5 | - * should not be modified by hand. | |
6 | - */ | |
7 | - | |
8 | -package com.upc.pbe.upcnews; | |
9 | - | |
10 | -public final class R { | |
11 | - public static final class attr { | |
12 | - } | |
13 | - public static final class drawable { | |
14 | - public static final int ic_action_search=0x7f020000; | |
15 | - public static final int ic_launcher=0x7f020001; | |
16 | - public static final int ic_menu_name=0x7f020002; | |
17 | - } | |
18 | - public static final class id { | |
19 | - public static final int AbsoluteLayout1=0x7f08000a; | |
20 | - public static final int ImageView01=0x7f08000c; | |
21 | - public static final int ImageView1=0x7f08000b; | |
22 | - public static final int LinearLayout1=0x7f080001; | |
23 | - public static final int button=0x7f08000f; | |
24 | - public static final int button1=0x7f080003; | |
25 | - public static final int button2=0x7f080004; | |
26 | - public static final int button3=0x7f080005; | |
27 | - public static final int button4=0x7f080006; | |
28 | - public static final int button5=0x7f080007; | |
29 | - public static final int itemhelp=0x7f080012; | |
30 | - public static final int itemprefs=0x7f080011; | |
31 | - public static final int menu_settings=0x7f080010; | |
32 | - public static final int textView1=0x7f080008; | |
33 | - public static final int textView2=0x7f080009; | |
34 | - public static final int textViewRoute=0x7f08000d; | |
35 | - public static final int textViewTitle=0x7f080002; | |
36 | - public static final int textViewXml=0x7f08000e; | |
37 | - public static final int videoView1=0x7f080000; | |
38 | - } | |
39 | - public static final class layout { | |
40 | - public static final int activity_video=0x7f030000; | |
41 | - public static final int dirs=0x7f030001; | |
42 | - public static final int help=0x7f030002; | |
43 | - public static final int main_activity=0x7f030003; | |
44 | - } | |
45 | - public static final class menu { | |
46 | - public static final int activity_main=0x7f070000; | |
47 | - public static final int activity_video=0x7f070001; | |
48 | - public static final int menu=0x7f070002; | |
49 | - } | |
50 | - public static final class string { | |
51 | - public static final int app_name=0x7f050000; | |
52 | - public static final int button=0x7f05000c; | |
53 | - public static final int button1=0x7f05000d; | |
54 | - public static final int desc=0x7f050009; | |
55 | - public static final int descarregar=0x7f050003; | |
56 | - public static final int dir=0x7f05000a; | |
57 | - public static final int directoris=0x7f05000b; | |
58 | - public static final int hello_world=0x7f050010; | |
59 | - public static final int help=0x7f050008; | |
60 | - public static final int hint=0x7f050004; | |
61 | - public static final int logodescription=0x7f05000f; | |
62 | - public static final int menu_settings=0x7f050001; | |
63 | - public static final int prefs=0x7f050007; | |
64 | - public static final int title=0x7f05000e; | |
65 | - public static final int title_activity_main=0x7f050002; | |
66 | - public static final int title_activity_video=0x7f050011; | |
67 | - public static final int url=0x7f050005; | |
68 | - public static final int urlhint=0x7f050006; | |
69 | - } | |
70 | - public static final class style { | |
71 | - public static final int AppTheme=0x7f060000; | |
72 | - } | |
73 | - public static final class xml { | |
74 | - public static final int prefs=0x7f040000; | |
75 | - } | |
76 | -} | |
1 | +/* AUTO-GENERATED FILE. DO NOT MODIFY. | |
2 | + * | |
3 | + * This class was automatically generated by the | |
4 | + * aapt tool from the resource data it found. It | |
5 | + * should not be modified by hand. | |
6 | + */ | |
7 | + | |
8 | +package com.upc.pbe.upcnews; | |
9 | + | |
10 | +public final class R { | |
11 | + public static final class attr { | |
12 | + } | |
13 | + public static final class drawable { | |
14 | + public static final int ic_action_search=0x7f020000; | |
15 | + public static final int ic_launcher=0x7f020001; | |
16 | + public static final int ic_menu_name=0x7f020002; | |
17 | + } | |
18 | + public static final class id { | |
19 | + public static final int AbsoluteLayout1=0x7f08000a; | |
20 | + public static final int ImageView01=0x7f08000c; | |
21 | + public static final int ImageView1=0x7f08000b; | |
22 | + public static final int LinearLayout1=0x7f080001; | |
23 | + public static final int button=0x7f08000f; | |
24 | + public static final int button1=0x7f080003; | |
25 | + public static final int button2=0x7f080004; | |
26 | + public static final int button3=0x7f080005; | |
27 | + public static final int button4=0x7f080006; | |
28 | + public static final int button5=0x7f080007; | |
29 | + public static final int itemhelp=0x7f080012; | |
30 | + public static final int itemprefs=0x7f080011; | |
31 | + public static final int menu_settings=0x7f080010; | |
32 | + public static final int textView1=0x7f080008; | |
33 | + public static final int textView2=0x7f080009; | |
34 | + public static final int textViewRoute=0x7f08000d; | |
35 | + public static final int textViewTitle=0x7f080002; | |
36 | + public static final int textViewXml=0x7f08000e; | |
37 | + public static final int videoView1=0x7f080000; | |
38 | + } | |
39 | + public static final class layout { | |
40 | + public static final int activity_video=0x7f030000; | |
41 | + public static final int dirs=0x7f030001; | |
42 | + public static final int help=0x7f030002; | |
43 | + public static final int main_activity=0x7f030003; | |
44 | + } | |
45 | + public static final class menu { | |
46 | + public static final int activity_main=0x7f070000; | |
47 | + public static final int activity_video=0x7f070001; | |
48 | + public static final int menu=0x7f070002; | |
49 | + } | |
50 | + public static final class string { | |
51 | + public static final int app_name=0x7f050000; | |
52 | + public static final int button=0x7f05000c; | |
53 | + public static final int button1=0x7f05000d; | |
54 | + public static final int desc=0x7f050009; | |
55 | + public static final int descarregar=0x7f050003; | |
56 | + public static final int dir=0x7f05000a; | |
57 | + public static final int directoris=0x7f05000b; | |
58 | + public static final int hello_world=0x7f050010; | |
59 | + public static final int help=0x7f050008; | |
60 | + public static final int hint=0x7f050004; | |
61 | + public static final int logodescription=0x7f05000f; | |
62 | + public static final int menu_settings=0x7f050001; | |
63 | + public static final int prefs=0x7f050007; | |
64 | + public static final int title=0x7f05000e; | |
65 | + public static final int title_activity_main=0x7f050002; | |
66 | + public static final int title_activity_video=0x7f050011; | |
67 | + public static final int url=0x7f050005; | |
68 | + public static final int urlhint=0x7f050006; | |
69 | + } | |
70 | + public static final class style { | |
71 | + public static final int AppTheme=0x7f060000; | |
72 | + } | |
73 | + public static final class xml { | |
74 | + public static final int prefs=0x7f040000; | |
75 | + } | |
76 | +} | ... | ... |
src/com/upc/pbe/upcnews/List.java
... | ... | @@ -9,8 +9,7 @@ public class List |
9 | 9 | private int sequenceFirst; |
10 | 10 | private int maxDuration; |
11 | 11 | private ArrayList<Segment> segments; //Lista de SEGMENTOS |
12 | - private ParentList parent; | |
13 | - | |
12 | + | |
14 | 13 | public List(int q) |
15 | 14 | { |
16 | 15 | quality = q; |
... | ... | @@ -53,16 +52,6 @@ public class List |
53 | 52 | return quality; |
54 | 53 | } |
55 | 54 | |
56 | - public void setParent(ParentList p) | |
57 | - { | |
58 | - parent = p; | |
59 | - } | |
60 | - | |
61 | - public ParentList getParent() | |
62 | - { | |
63 | - return parent; | |
64 | - } | |
65 | - | |
66 | 55 | public ArrayList<Segment> getSegments() |
67 | 56 | { |
68 | 57 | return segments; | ... | ... |
src/com/upc/pbe/upcnews/ParentList.java
src/com/upc/pbe/upcnews/Parser.java
... | ... | @@ -5,216 +5,272 @@ import java.util.ArrayList; |
5 | 5 | |
6 | 6 | import android.util.Log; |
7 | 7 | |
8 | -public class Parser { | |
8 | +public class Parser | |
9 | +{ | |
9 | 10 | private static final String STARTWORD = "#EXTM3U"; |
10 | 11 | private static String TAG = "Parser"; |
11 | - private int fileType; // indicates if segment list or media list | |
12 | + private int fileType; //indicates if segment list or media list | |
12 | 13 | private int currentLine; |
13 | - private int currentSegment; // Cada segmento de cada calidad distinta | |
14 | - private int currentList; // Indice de cada recurso distinto | |
14 | + private int currentSegment; //Cada segmento de cada calidad distinta | |
15 | + private int currentList; //Indice de cada recurso distinto | |
15 | 16 | private boolean expectSegment = false; |
16 | 17 | private boolean expectList = false; |
17 | 18 | private Descarrega download; |
18 | - | |
19 | - public Parser() { | |
19 | + | |
20 | + public Parser() | |
21 | + { | |
20 | 22 | currentLine = 0; |
21 | 23 | currentSegment = 0; |
22 | 24 | currentList = 0; |
23 | 25 | fileType = -1; |
24 | 26 | /* |
25 | - * -1 indicates UNDETERMINED 0 indicates SEGMENTS 1 indicates MEDIA | |
27 | + * -1 indicates UNDETERMINED | |
28 | + * 0 indicates SEGMENTS | |
29 | + * 1 indicates MEDIA | |
26 | 30 | */ |
27 | 31 | download = new Descarrega(); |
28 | 32 | } |
29 | - | |
30 | - public ArrayList<ParentList> parseFile(String file) throws ErrorException, | |
31 | - WarningException, InfoException { | |
33 | + | |
34 | + public ArrayList<ParentList> parseFile(String file) throws ErrorException, WarningException, InfoException | |
35 | + { | |
32 | 36 | ArrayList<ParentList> lists = new ArrayList<ParentList>(); |
33 | 37 | lists.add(new ParentList("")); |
34 | 38 | lists.get(0).getLists().add(new List(-1)); |
35 | 39 | String[] lines = file.split("\n"); |
36 | - | |
37 | - for (int i = 0; i < lines.length; i++) // la primera linea = null | |
40 | + Log.d(TAG, "" + lines.length); | |
41 | + for(int i = 0; i < lines.length; i++) //la primera linea = null | |
38 | 42 | { |
39 | - if (lines[i].endsWith("\\")) { | |
40 | - lines[i] = lines[i].substring(0, lines[i].indexOf("\\")) | |
41 | - + lines[++i]; | |
43 | + if(lines[i].endsWith("\\")) | |
44 | + { | |
45 | + lines[i] = lines[i].substring(0, lines[i].indexOf("\\")) + lines[++i]; | |
42 | 46 | } |
43 | - try { | |
44 | - | |
47 | + try | |
48 | + { | |
49 | + | |
45 | 50 | Log.d(TAG, lines[i]); |
46 | - parseLine(lines[i], lists); | |
47 | - } catch (InfoException iE) { | |
48 | - // Toast.makeText(this, iE.getMessage(), | |
49 | - // Toast.LENGTH_SHORT).show(); | |
50 | - } catch (WarningException wE) { | |
51 | - | |
51 | + parseLine(lines[i],lists); | |
52 | + } | |
53 | + catch(InfoException iE) | |
54 | + { | |
55 | + //Toast.makeText(this, iE.getMessage(), Toast.LENGTH_SHORT).show(); | |
56 | + } | |
57 | + catch(WarningException wE) | |
58 | + { | |
59 | + | |
52 | 60 | } |
53 | 61 | } |
54 | - /* | |
55 | - * Esto contiene una lista de RECURSOS, que a su vez contiene una lista | |
56 | - * de CALIDADES. Si no te gusta mis VERSOS, te mando a la mierda sin | |
57 | - * SUTILIDADES. | |
62 | + /* | |
63 | + * Esto contiene una lista de RECURSOS, | |
64 | + * que a su vez contiene una lista de CALIDADES. | |
65 | + * Si no te gusta mis VERSOS, | |
66 | + * te mando a la mierda sin SUTILIDADES. | |
58 | 67 | * |
59 | 68 | * -- Imanol, hasta las cejas de cafeรญna. |
60 | 69 | * |
61 | - * PD: En el รบltimo nivel de profundidad hay una lista de segmentos | |
62 | - * (debajo de calidades). Allรญ estรก el autรฉntico tesoro de Narnia. | |
70 | + * PD: En el รบltimo nivel de profundidad hay una lista de segmentos (debajo de calidades). | |
71 | + * Allรญ estรก el autรฉntico tesoro de Narnia. | |
63 | 72 | */ |
64 | - for (int i = 0; i < lists.size(); i++) { | |
73 | + for(int i = 0; i < lists.size(); i++) | |
74 | + { | |
65 | 75 | sortQuality(lists.get(i)); |
66 | 76 | } |
67 | - return lists; | |
77 | + return lists; | |
68 | 78 | } |
69 | - | |
70 | - private int searchID(String ID, ArrayList<ParentList> lists) { | |
71 | - for (int i = 0; i < lists.size(); i++) { | |
72 | - if (lists.get(i).getID().equals(ID)) { | |
79 | + | |
80 | + private int searchID(String ID, ArrayList<ParentList> lists) | |
81 | + { | |
82 | + for(int i = 0; i < lists.size(); i++) | |
83 | + { | |
84 | + if(lists.get(i).getID().equals(ID)) | |
85 | + { | |
73 | 86 | return i; |
74 | 87 | } |
75 | 88 | } |
76 | 89 | return -1; |
77 | 90 | } |
78 | - | |
79 | - private void sortQuality(ParentList ppls) { | |
91 | + | |
92 | + private void sortQuality(ParentList ppls) | |
93 | + { | |
80 | 94 | ArrayList<List> lists = ppls.getLists(); |
81 | - if (lists.get(0).getQuality() == -1) { | |
95 | + if(lists.get(0).getQuality() == -1) | |
96 | + { | |
82 | 97 | /* |
83 | 98 | * Se trata de ext-x-media's y estos no van por calidad |
84 | 99 | */ |
85 | 100 | return; |
86 | 101 | } |
87 | - // BUBBLE-SORT!! (Me da un poco de verguenza, pero no quiero ponerme con | |
88 | - // quicksort... | |
89 | - while (true) { | |
102 | + //BUBBLE-SORT!! (Me da un poco de verguenza, pero no quiero ponerme con quicksort... | |
103 | + while(true) | |
104 | + { | |
90 | 105 | boolean sorted = true; |
91 | 106 | int i = 0; |
92 | - do { | |
93 | - if (lists.get(i).getQuality() < lists.get(i + 1).getQuality()) { | |
107 | + do | |
108 | + { | |
109 | + if(lists.get(i).getQuality() < lists.get(i+1).getQuality()) | |
110 | + { | |
94 | 111 | sorted = false; |
95 | 112 | List aux = lists.get(i); |
96 | - lists.set(i, lists.get(i + 1)); | |
97 | - lists.set(i + 1, aux); | |
113 | + lists.set(i, lists.get(i+1)); | |
114 | + lists.set(i+1, aux); | |
98 | 115 | } |
99 | - | |
100 | - } while (++i != lists.size()); | |
101 | - if (sorted) { | |
116 | + | |
117 | + }while(++i != lists.size()); | |
118 | + if(sorted) | |
119 | + { | |
102 | 120 | break; |
103 | 121 | } |
104 | 122 | } |
105 | 123 | |
106 | 124 | } |
107 | - | |
108 | - public void parseLine(String line, ArrayList<ParentList> lists) | |
109 | - throws ErrorException, WarningException, InfoException { | |
110 | - if (line.isEmpty()) { | |
125 | + | |
126 | + public void parseLine(String line, ArrayList<ParentList> lists) throws ErrorException, WarningException, InfoException | |
127 | + { | |
128 | + if(line.isEmpty()) | |
129 | + { | |
111 | 130 | currentLine++; |
112 | 131 | return; |
113 | - } else { | |
114 | - ParentList ppls = lists.get(currentList); // VIVA HONDURAS!!! | |
132 | + } | |
133 | + else | |
134 | + { | |
135 | + ParentList ppls = lists.get(currentList); //VIVA HONDURAS!!! | |
115 | 136 | List pls = ppls.getLists().get(ppls.getCurrentQuality()); |
116 | - if (!pls.getValidated()) { | |
117 | - if (line.equals(STARTWORD)) { | |
137 | + if(!pls.getValidated()) | |
138 | + { | |
139 | + if(line.equals(STARTWORD)) | |
140 | + { | |
118 | 141 | pls.setValidated(true); |
119 | - } else { | |
142 | + } | |
143 | + else | |
144 | + { | |
120 | 145 | throw new ErrorException("Playlist is not valid"); |
121 | 146 | } |
122 | - } else { | |
123 | - if (line.charAt(0) == '#') { | |
124 | - if (line.substring(0, 4).equals("#EXT")) { | |
147 | + } | |
148 | + else | |
149 | + { | |
150 | + if(line.charAt(0) == '#') | |
151 | + { | |
152 | + if(line.substring(0,4).equals("#EXT")) | |
153 | + { | |
125 | 154 | String[] extTag = line.split(":"); |
126 | - if (extTag[0].equals("#EXT-X-MEDIA-SEQUENCE")) { | |
155 | + if(extTag[0].equals("#EXT-X-MEDIA-SEQUENCE")) | |
156 | + { | |
127 | 157 | pls.setSequence(Integer.parseInt(extTag[1])); |
128 | - } else if (extTag[0].equals("#EXT-X-TARGETDURATION")) { | |
158 | + } | |
159 | + else if(extTag[0].equals("#EXT-X-TARGETDURATION")) | |
160 | + { | |
129 | 161 | pls.setMaxDuration(Integer.parseInt(extTag[1])); |
130 | - } else if (extTag[0].equals("#EXTINF")) { | |
131 | - if (fileType == -1) { | |
162 | + } | |
163 | + else if(extTag[0].equals("#EXTINF")) | |
164 | + { | |
165 | + if(fileType == -1) | |
166 | + { | |
132 | 167 | fileType = 0; |
133 | - } else if (fileType == 1) { | |
134 | - throw new ErrorException( | |
135 | - "Invalid file, should contain Lists, " | |
136 | - + "but segments were found."); | |
137 | 168 | } |
138 | - if (expectSegment) { | |
139 | - throw new ErrorException( | |
140 | - "Expected segment URI, got a different" | |
141 | - + "segment declaration"); | |
169 | + else if(fileType == 1) | |
170 | + { | |
171 | + throw new ErrorException("Invalid file, should contain Lists, " + | |
172 | + "but segments were found."); | |
173 | + } | |
174 | + if(expectSegment) | |
175 | + { | |
176 | + throw new ErrorException("Expected segment URI, got a different" + | |
177 | + "segment declaration"); | |
142 | 178 | } |
143 | 179 | String[] args = extTag[1].split(","); |
144 | - int duration = Integer.parseInt(args[0]); | |
145 | - if (duration > pls.getMaxDuration()) { | |
146 | - throw new ErrorException("Segment " | |
147 | - + currentSegment + " on line " | |
148 | - + currentLine + " exceeds max duration"); | |
180 | + float duration = Float.parseFloat(args[0]); | |
181 | + if (duration > pls.getMaxDuration()) | |
182 | + { | |
183 | + throw new ErrorException("Segment " + currentSegment + " on line " + currentLine | |
184 | + +" exceeds max duration"); | |
149 | 185 | } |
150 | 186 | Segment s = new Segment(duration); |
151 | - if (args.length == 1) { | |
187 | + if(args.length == 1) | |
188 | + { | |
152 | 189 | s.setName(""); |
153 | - } else { | |
190 | + } | |
191 | + else | |
192 | + { | |
154 | 193 | s.setName(args[1]); |
155 | 194 | } |
156 | 195 | pls.getSegments().add(s); |
157 | 196 | expectSegment = true; |
158 | 197 | } |
159 | - | |
160 | - else if (extTag[0].equals("#EXT-X-STREAM-INF")) { | |
161 | - if (fileType == -1) { | |
198 | + | |
199 | + else if(extTag[0].equals("#EXT-X-STREAM-INF")) | |
200 | + { | |
201 | + if(fileType == -1) | |
202 | + { | |
162 | 203 | fileType = 1; |
163 | - } else if (fileType == 0) { | |
164 | - throw new ErrorException( | |
165 | - "Invalid file, should contain Segments, " | |
166 | - + "but lists were found."); | |
204 | + } | |
205 | + else if(fileType == 0) | |
206 | + { | |
207 | + throw new ErrorException("Invalid file, should contain Segments, " + | |
208 | + "but lists were found."); | |
167 | 209 | } |
168 | 210 | expectList = true; |
169 | 211 | String programID = ""; |
170 | 212 | int bandwidth = -1; |
171 | 213 | String[] arguments = extTag[1].split(","); |
172 | - for (int i = 0; i < arguments.length; i++) { | |
214 | + for(int i = 0; i < arguments.length; i++) | |
215 | + { | |
173 | 216 | String[] argument = arguments[i].split("="); |
174 | - if (argument[0].equals("PROGRAM-ID")) { | |
217 | + if(argument[0].equals("PROGRAM-ID")) | |
218 | + { | |
175 | 219 | programID = argument[1]; |
176 | - } else if (argument[0].equals("BANDWIDTH")) { | |
220 | + } | |
221 | + else if(argument[0].equals("BANDWIDTH")) | |
222 | + { | |
177 | 223 | bandwidth = Integer.parseInt(argument[1]); |
178 | 224 | } |
179 | 225 | } |
180 | - if (programID.equals("") || bandwidth == -1) { | |
181 | - throw new ErrorException("Playlist on line " | |
182 | - + currentLine | |
183 | - + " has missing arguments"); | |
226 | + if(programID.equals("")|| bandwidth == -1) | |
227 | + { | |
228 | + throw new ErrorException("Playlist on line " + currentLine + | |
229 | + " has missing arguments"); | |
184 | 230 | } |
185 | - if (!programID.equals(ppls.getID())) { | |
186 | - if (ppls.getID().equals("")) { | |
231 | + if(!programID.equals(ppls.getID())) | |
232 | + { | |
233 | + if(ppls.getID().equals("")) | |
234 | + { | |
187 | 235 | /* |
188 | - * Este caso se da cuando no se ha creado | |
189 | - * ninguna lista. Hay que sustituir la por | |
190 | - * defecto por una lista real. | |
236 | + * Este caso se da cuando no se ha creado ninguna lista. | |
237 | + * Hay que sustituir la por defecto por una lista real. | |
191 | 238 | */ |
192 | - lists.add(0, new ParentList(programID)); | |
193 | - } else { | |
239 | + lists.get(0).setID(programID); | |
240 | + } | |
241 | + else | |
242 | + { | |
194 | 243 | currentList = searchID(ppls.getID(), lists); |
195 | - if (currentList == -1) { | |
244 | + if(currentList == -1) | |
245 | + { | |
196 | 246 | lists.add(new ParentList(programID)); |
197 | - currentList = lists.size() + 1; | |
247 | + currentList = lists.size()+1; | |
198 | 248 | /* |
199 | - * ppls y pls se actualizan en la | |
200 | - * siguiente linea procesada | |
249 | + * ppls y pls se actualizan en la siguiente linea procesada | |
201 | 250 | */ |
202 | - } else { | |
251 | + } | |
252 | + else | |
253 | + { | |
203 | 254 | ppls = lists.get(currentList); |
204 | - ppls.getLists() | |
205 | - .add(new List(bandwidth)); | |
255 | + ppls.getLists().add(new List(bandwidth)); | |
206 | 256 | } |
207 | 257 | } |
208 | - } else { | |
258 | + } | |
259 | + else | |
260 | + { | |
209 | 261 | ppls.getLists().add(new List(bandwidth)); |
210 | 262 | } |
211 | - } else if (extTag[0].equals("#EXT-X-MEDIA")) { | |
212 | - if (fileType == -1) { | |
263 | + } | |
264 | + else if(extTag[0].equals("#EXT-X-MEDIA")) | |
265 | + { | |
266 | + if(fileType == -1) | |
267 | + { | |
213 | 268 | fileType = 1; |
214 | - } else if (fileType == 0) { | |
215 | - throw new ErrorException( | |
216 | - "Invalid file, should contain Segments, " | |
217 | - + "but lists were found."); | |
269 | + } | |
270 | + else if(fileType == 0) | |
271 | + { | |
272 | + throw new ErrorException("Invalid file, should contain Segments, " + | |
273 | + "but lists were found."); | |
218 | 274 | } |
219 | 275 | String Type = ""; |
220 | 276 | String Name = ""; |
... | ... | @@ -222,33 +278,46 @@ public class Parser { |
222 | 278 | String URI = ""; |
223 | 279 | boolean Default = false; |
224 | 280 | String[] arguments = extTag[1].split(","); |
225 | - for (int i = 0; i < arguments.length; i++) { | |
281 | + for(int i = 0; i < arguments.length; i++) | |
282 | + { | |
226 | 283 | String[] argument = arguments[i].split("="); |
227 | - if (argument[0].equals("NAME")) { | |
284 | + if(argument[0].equals("NAME")) | |
285 | + { | |
228 | 286 | Name = argument[1]; |
229 | - } else if (argument[0].equals("TYPE")) { | |
287 | + } | |
288 | + else if(argument[0].equals("TYPE")) | |
289 | + { | |
230 | 290 | Type = argument[1]; |
231 | - } else if (argument[0].equals("GROUP-ID")) { | |
291 | + } | |
292 | + else if(argument[0].equals("GROUP-ID")) | |
293 | + { | |
232 | 294 | GroupID = argument[1]; |
233 | - } else if (argument[0].equals("DEFAULT")) { | |
234 | - if (argument[1].equals("YES")) { | |
295 | + } | |
296 | + else if(argument[0].equals("DEFAULT")) | |
297 | + { | |
298 | + if(argument[1].equals("YES")) | |
299 | + { | |
235 | 300 | Default = true; |
236 | - } else if (argument[1].equals("NO")) { | |
301 | + } | |
302 | + else if(argument[1].equals("NO")) | |
303 | + { | |
237 | 304 | Default = true; |
238 | - } else { | |
239 | - throw new ErrorException( | |
240 | - "Invalid value for argument DEFAULT on line " | |
241 | - + currentLine); | |
242 | 305 | } |
243 | - } else if (argument[0].equals("URI")) { | |
306 | + else | |
307 | + { | |
308 | + throw new ErrorException("Invalid value for argument DEFAULT on line " + | |
309 | + currentLine); | |
310 | + } | |
311 | + } | |
312 | + else if(argument[0].equals("URI")) | |
313 | + { | |
244 | 314 | URI = argument[1]; |
245 | 315 | } |
246 | 316 | } |
247 | - if (Type.equals("") || Name.equals("") | |
248 | - || URI.equals("") || GroupID.equals("")) { | |
249 | - throw new ErrorException("Playlist on line " | |
250 | - + currentLine | |
251 | - + " has missing arguments"); | |
317 | + if(Type.equals("") || Name.equals("") || URI.equals("") || GroupID.equals("")) | |
318 | + { | |
319 | + throw new ErrorException("Playlist on line " + currentLine + | |
320 | + " has missing arguments"); | |
252 | 321 | } |
253 | 322 | ParentList pl = new ParentList(GroupID); |
254 | 323 | pl.setDefault(Default); |
... | ... | @@ -257,74 +326,92 @@ public class Parser { |
257 | 326 | Parser p = new Parser(); |
258 | 327 | p.parseFile(download.doInBackground(URI)); |
259 | 328 | /* |
260 | - * Procesar URI y descargar listas recursivamente y | |
261 | - * aรฑadir a la lista actual. | |
329 | + * Procesar URI y descargar listas recursivamente y aรฑadir a la lista actual. | |
262 | 330 | * |
263 | 331 | * TO-DO: Necesito la funcion de Marc |
264 | 332 | */ |
265 | 333 | List l = new List(-1); |
266 | - if (!GroupID.equals(ppls.getID())) { | |
267 | - if (ppls.getID().equals("")) { | |
334 | + if(!GroupID.equals(ppls.getID())) | |
335 | + { | |
336 | + if(ppls.getID().equals("")) | |
337 | + { | |
268 | 338 | /* |
269 | - * Este caso se da cuando no se ha creado | |
270 | - * ninguna lista. Hay que sustituir la por | |
271 | - * defecto por una lista real. | |
339 | + * Este caso se da cuando no se ha creado ninguna lista. | |
340 | + * Hay que sustituir la por defecto por una lista real. | |
272 | 341 | */ |
273 | - lists.add(0, pl); | |
274 | - } else { | |
342 | + lists.add(0,pl); | |
343 | + } | |
344 | + else | |
345 | + { | |
275 | 346 | |
276 | 347 | currentList = searchID(ppls.getID(), lists); |
277 | - if (currentList == -1) { | |
348 | + if(currentList == -1) | |
349 | + { | |
278 | 350 | lists.add(pl); |
279 | - currentList = lists.size() + 1; | |
280 | - } else { | |
351 | + currentList = lists.size()+1; | |
352 | + } | |
353 | + else | |
354 | + { | |
281 | 355 | ppls = lists.get(currentList); |
282 | 356 | ppls.getLists().add(l); |
283 | 357 | } |
284 | 358 | } |
285 | - } else { | |
359 | + } | |
360 | + else | |
361 | + { | |
286 | 362 | ppls.getLists().add(l); |
287 | 363 | } |
288 | 364 | } |
289 | - | |
290 | - else if (extTag[0].equals("#EXT-X-ENDLIST")) { | |
291 | - if (expectSegment || expectList) { | |
292 | - throw new ErrorException( | |
293 | - "Unexpected end of list!"); | |
365 | + | |
366 | + else if(extTag[0].equals("#EXT-X-ENDLIST")) | |
367 | + { | |
368 | + if(expectSegment || expectList) | |
369 | + { | |
370 | + throw new ErrorException("Unexpected end of list!"); | |
294 | 371 | } |
295 | - // END REACHED, IGNORE AND LET THE FILE REACH EOF | |
372 | + //END REACHED, IGNORE AND LET THE FILE REACH EOF | |
296 | 373 | } |
297 | - | |
298 | - else { | |
374 | + | |
375 | + else | |
376 | + { | |
299 | 377 | currentLine++; |
300 | - throw new WarningException("Tag not implemented: " | |
301 | - + extTag[0]); | |
378 | + throw new WarningException("Tag not implemented: " + extTag[0]); | |
302 | 379 | } |
303 | - } else { | |
380 | + } | |
381 | + else | |
382 | + { | |
304 | 383 | String comment = line.substring(1); |
305 | - throw new InfoException("Comment on line " | |
306 | - + currentLine++ + " " + comment); | |
384 | + throw new InfoException("Comment on line " + currentLine++ + " " + comment); | |
307 | 385 | } |
308 | - } else { | |
309 | - if (expectSegment) { | |
386 | + } | |
387 | + else | |
388 | + { | |
389 | + if(expectSegment) | |
390 | + { | |
310 | 391 | expectSegment = false; |
311 | - try { | |
392 | + try | |
393 | + { | |
312 | 394 | pls.getSegments().get(currentSegment).setURL(line); |
313 | - } catch (MalformedURLException e) { | |
395 | + } | |
396 | + catch (MalformedURLException e) | |
397 | + { | |
314 | 398 | throw new ErrorException(e.getMessage()); |
315 | 399 | } |
316 | 400 | currentSegment++; |
317 | - } else if (expectList) { | |
401 | + } | |
402 | + else if(expectList) | |
403 | + { | |
318 | 404 | expectList = false; |
319 | 405 | Parser p = new Parser(); |
320 | 406 | p.parseFile(download.doInBackground(line)); |
321 | - } else { | |
322 | - throw new ErrorException("ERROR: Unexpected string " | |
323 | - + line); | |
407 | + } | |
408 | + else | |
409 | + { | |
410 | + throw new ErrorException("ERROR: Unexpected string " + line); | |
324 | 411 | } |
325 | 412 | } |
326 | 413 | } |
327 | 414 | currentLine++; |
328 | - } | |
415 | + } | |
329 | 416 | } |
330 | 417 | } |
331 | 418 | \ No newline at end of file | ... | ... |
src/com/upc/pbe/upcnews/Segment.java
... | ... | @@ -6,10 +6,10 @@ import java.net.URL; |
6 | 6 | public class Segment |
7 | 7 | { |
8 | 8 | private String name; |
9 | - private int duration; | |
9 | + private float duration; | |
10 | 10 | private URL url; |
11 | 11 | |
12 | - public Segment(int dur) | |
12 | + public Segment(float dur) | |
13 | 13 | { |
14 | 14 | name = ""; |
15 | 15 | duration = dur; |
... | ... | @@ -25,7 +25,7 @@ public class Segment |
25 | 25 | return name; |
26 | 26 | } |
27 | 27 | |
28 | - public int getDuration() | |
28 | + public float getDuration() | |
29 | 29 | { |
30 | 30 | return duration; |
31 | 31 | } | ... | ... |