removed 'catch' added check for null

This commit is contained in:
daniel oeh 2012-07-24 18:15:30 +02:00
parent b51aaf2a92
commit 6321136271
1 changed files with 38 additions and 35 deletions

View File

@ -18,7 +18,7 @@ import de.danoeh.antennapod.feed.Feed;
/** Gets the type of a specific feed by reading the root element. */
public class TypeGetter {
private static final String TAG = "TypeGetter";
enum Type {
RSS20, ATOM, INVALID
}
@ -28,39 +28,45 @@ public class TypeGetter {
public Type getType(Feed feed) throws UnsupportedFeedtypeException {
XmlPullParserFactory factory;
try {
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(createReader(feed));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
String tag = xpp.getName();
if (tag.equals(ATOM_ROOT)) {
if (AppConfig.DEBUG) Log.d(TAG, "Recognized type Atom");
return Type.ATOM;
} else if (tag.equals(RSS_ROOT)
&& (xpp.getAttributeValue(null, "version")
.equals("2.0"))) {
if (AppConfig.DEBUG) Log.d(TAG, "Recognized type RSS 2.0");
return Type.RSS20;
} else {
if (AppConfig.DEBUG) Log.d(TAG, "Type is invalid");
throw new UnsupportedFeedtypeException(Type.INVALID);
}
} else {
eventType = xpp.next();
}
}
if (feed.getFile_url() != null) {
try {
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(createReader(feed));
int eventType = xpp.getEventType();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
String tag = xpp.getName();
if (tag.equals(ATOM_ROOT)) {
if (AppConfig.DEBUG)
Log.d(TAG, "Recognized type Atom");
return Type.ATOM;
} else if (tag.equals(RSS_ROOT)
&& (xpp.getAttributeValue(null, "version")
.equals("2.0"))) {
if (AppConfig.DEBUG)
Log.d(TAG, "Recognized type RSS 2.0");
return Type.RSS20;
} else {
if (AppConfig.DEBUG)
Log.d(TAG, "Type is invalid");
throw new UnsupportedFeedtypeException(Type.INVALID);
}
} else {
eventType = xpp.next();
}
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
if (AppConfig.DEBUG) Log.d(TAG, "Type is invalid");
if (AppConfig.DEBUG)
Log.d(TAG, "Type is invalid");
throw new UnsupportedFeedtypeException(Type.INVALID);
}
@ -71,9 +77,6 @@ public class TypeGetter {
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
} catch (NullPointerException e) {
e.printStackTrace();
return null;
}
return reader;
}