package com.felkertech.cumulustv.model; import android.util.Log; import org.json.JSONObject; /** * This class uses static methods to determine which type of object is being read and provides * useful methods for parsing */ public class ChannelDatabaseFactory { private static final String TAG = ChannelDatabaseFactory.class.getSimpleName(); public static final String KEY_TYPE = "type"; public static final String TYPE_JSON_LISTING = "jsonlisting"; public static void parseType(JSONObject entry, ChannelParser parser) { try { if (!entry.has(KEY_TYPE)) { parser.ifJsonChannel(new JsonChannel.Builder(entry).build()); } else if (entry.getString(KEY_TYPE).equals(TYPE_JSON_LISTING)) { parser.ifJsonListing(new JsonListing.Builder(entry).build()); } } catch (Exception e) { Log.e(TAG, entry.toString()); throw new IllegalArgumentException("Invalid JSON: " + entry.toString() + " " + e.getMessage()); } } public interface ChannelParser { void ifJsonChannel(JsonChannel entry); void ifJsonListing(JsonListing entry); } }