package se.slide.sgu.db; import android.content.Context; import android.util.Log; import com.j256.ormlite.table.TableUtils; import se.slide.sgu.model.Content; import se.slide.sgu.model.Episode; import se.slide.sgu.model.Guest; import se.slide.sgu.model.Item; import se.slide.sgu.model.Link; import se.slide.sgu.model.Quote; import se.slide.sgu.model.Section; import java.sql.SQLException; import java.util.List; public class DatabaseManager { private final String TAG = "DatabaseManager"; static private DatabaseManager instance; private DatabaseHelper helper; static public void init(Context ctx) { if (instance == null) { instance = new DatabaseManager(ctx.getApplicationContext()); } } static public DatabaseManager getInstance() { return instance; } private DatabaseManager(Context ctx) { helper = new DatabaseHelper(ctx); } private DatabaseHelper getHelper() { return helper; } public Content getContentBy(String guid) { Content content = null; try { List<Content> listOfContent = getHelper().getContentDao().query(getHelper().getContentDao().queryBuilder().where().like("guid", guid).prepare()); if (listOfContent != null && !listOfContent.isEmpty()) content = listOfContent.get(0); } catch (SQLException e) { e.printStackTrace(); } return content; } public List<Content> getContent(String mp3) { List<Content> listOfContent = null; try { listOfContent = getHelper().getContentDao().query(getHelper().getContentDao().queryBuilder().where().like("mp3", mp3).prepare()); } catch (SQLException e) { e.printStackTrace(); } return listOfContent; } public List<Content> getPremiumContents() { List<Content> listOfContent = null; try { listOfContent = getHelper().getContentDao().query(getHelper().getContentDao().queryBuilder().orderBy("published", false).where().like("title", "%SGU Premium%").prepare()); } catch (SQLException e) { e.printStackTrace(); } return listOfContent; } public List<Content> getAdFreeContents() { List<Content> listOfContent = null; try { listOfContent = getHelper().getContentDao().query(getHelper().getContentDao().queryBuilder().orderBy("published", false).where().like("title", "%The Skeptics Guide%").prepare()); } catch (SQLException e) { e.printStackTrace(); } return listOfContent; } public List<Content> getAllContents() { List<Content> listOfContent = null; try { listOfContent = getHelper().getContentDao().queryForAll(); } catch (SQLException e) { e.printStackTrace(); } return listOfContent; } public void createOrUpdateContent(Content content) { try { getHelper().getContentDao().createOrUpdate(content); } catch (SQLException e) { e.printStackTrace(); } } public void createOrUpdateContents(List<Content> listOfContent) { try { for (Content content : listOfContent) { getHelper().getContentDao().createOrUpdate(content); } } catch (SQLException e) { e.printStackTrace(); } } public void createIfNotExistsContents(List<Content> listOfContent) { try { for (Content content : listOfContent) { getHelper().getContentDao().createIfNotExists(content); } } catch (SQLException e) { e.printStackTrace(); } } /** * Section */ public Section getSectionBy(String guid) { Section section = null; try { List<Section> listOxfSection = getHelper().getSectionDao().query(getHelper().getSectionDao().queryBuilder().where().like("guid", guid).prepare()); if (listOxfSection != null && !listOxfSection.isEmpty()) section = listOxfSection.get(0); } catch (SQLException e) { e.printStackTrace(); } return section; } public List<Section> getSections(String guid) { List<Section> listOfSection = null; try { listOfSection = getHelper().getSectionDao().query(getHelper().getSectionDao().queryBuilder().where().like("guid", guid).prepare()); } catch (SQLException e) { e.printStackTrace(); } return listOfSection; } public void addSections(List<Section> listOfSection) { try { for (Section section : listOfSection) { getHelper().getSectionDao().createOrUpdate(section); } } catch (SQLException e) { e.printStackTrace(); } } public void removeSections() { Log.d(TAG, "Remove sections"); try { TableUtils.clearTable(helper.getConnectionSource(), Section.class); } catch (SQLException e) { e.printStackTrace(); } } /** * Guest */ public Guest getGuestBy(String mp3) { Guest guest = null; try { List<Guest> listOfGuest = getHelper().getGuestDao().query(getHelper().getGuestDao().queryBuilder().where().like("mp3", mp3).prepare()); if (listOfGuest != null && !listOfGuest.isEmpty()) guest = listOfGuest.get(0); } catch (SQLException e) { e.printStackTrace(); } return guest; } public List<Guest> getGuest(String mp3) { List<Guest> listOfGuest = null; try { listOfGuest = getHelper().getGuestDao().query(getHelper().getGuestDao().queryBuilder().where().like("mp3", mp3).prepare()); } catch (SQLException e) { e.printStackTrace(); } return listOfGuest; } public void addGuests(List<Guest> listOfGuest) { try { for (Guest guest : listOfGuest) { getHelper().getGuestDao().createOrUpdate(guest); } } catch (SQLException e) { e.printStackTrace(); } } public void removeGuests() { Log.d(TAG, "Remove guests"); try { TableUtils.clearTable(helper.getConnectionSource(), Guest.class); } catch (SQLException e) { e.printStackTrace(); } } /** * Item */ public Item getItemBy(String guid) { Item item = null; try { List<Item> listOfItem = getHelper().getItemDao().query(getHelper().getItemDao().queryBuilder().where().like("guid", guid).prepare()); if (listOfItem != null && !listOfItem.isEmpty()) item = listOfItem.get(0); } catch (SQLException e) { e.printStackTrace(); } return item; } public List<Item> getItems(String guid) { List<Item> listOfItem = null; try { listOfItem = getHelper().getItemDao().query(getHelper().getItemDao().queryBuilder().where().like("guid", guid).prepare()); } catch (SQLException e) { e.printStackTrace(); } return listOfItem; } public void addItems(List<Item> listOfItem) { try { for (Item item : listOfItem) { getHelper().getItemDao().createOrUpdate(item); } } catch (SQLException e) { e.printStackTrace(); } } public void removeItems() { Log.d(TAG, "Remove items"); try { TableUtils.clearTable(helper.getConnectionSource(), Item.class); } catch (SQLException e) { e.printStackTrace(); } } /** * Quote */ public Quote getQuoteBy(String guid) { Quote quote = null; try { List<Quote> listOfQuote = getHelper().getQuoteDao().query(getHelper().getQuoteDao().queryBuilder().where().like("guid", guid).prepare()); if (listOfQuote != null && !listOfQuote.isEmpty()) quote = listOfQuote.get(0); } catch (SQLException e) { e.printStackTrace(); } return quote; } public List<Quote> getQuote(String mp3) { List<Quote> listOfQuote = null; try { listOfQuote = getHelper().getQuoteDao().query(getHelper().getQuoteDao().queryBuilder().where().like("mp3", mp3).prepare()); } catch (SQLException e) { e.printStackTrace(); } return listOfQuote; } public void addQuotes(List<Quote> listOfQuote) { try { for (Quote quote : listOfQuote) { getHelper().getQuoteDao().createOrUpdate(quote); } } catch (SQLException e) { e.printStackTrace(); } } public void addQuote(Quote quote) { try { getHelper().getQuoteDao().createOrUpdate(quote); } catch (SQLException e) { e.printStackTrace(); } } public void removeQuotes() { Log.d(TAG, "Remove quotes"); try { TableUtils.clearTable(helper.getConnectionSource(), Quote.class); } catch (SQLException e) { e.printStackTrace(); } } /** * Episode */ public Episode getEpisodeBy(String guid) { Episode episode = null; try { List<Episode> listOfEpisode = getHelper().getEpisodeDao().query(getHelper().getEpisodeDao().queryBuilder().where().like("guid", guid).prepare()); if (listOfEpisode != null && !listOfEpisode.isEmpty()) episode = listOfEpisode.get(0); } catch (SQLException e) { e.printStackTrace(); } return episode; } public Episode getEpisode(String guid) { Episode episode = null; try { List<Episode> listOfEpisode = getHelper().getEpisodeDao().query(getHelper().getEpisodeDao().queryBuilder().where().like("guid", guid).prepare()); if (listOfEpisode != null && !listOfEpisode.isEmpty()) episode = listOfEpisode.get(0); } catch (SQLException e) { e.printStackTrace(); } return episode; } public List<Episode> getEpisodes(String guid) { List<Episode> listOfEpisode = null; try { listOfEpisode = getHelper().getEpisodeDao().query(getHelper().getEpisodeDao().queryBuilder().where().like("guid", guid).prepare()); } catch (SQLException e) { e.printStackTrace(); } return listOfEpisode; } public void addEpisodes(List<Episode> listOfEpisode) { try { for (Episode episode : listOfEpisode) { getHelper().getEpisodeDao().createOrUpdate(episode); } } catch (SQLException e) { e.printStackTrace(); } } public void removeEpisode() { Log.d(TAG, "Remove episodes"); try { TableUtils.clearTable(helper.getConnectionSource(), Episode.class); } catch (SQLException e) { e.printStackTrace(); } } public List<Episode> getAllEpisodes() { List<Episode> listOfEpisode = null; try { listOfEpisode = getHelper().getEpisodeDao().queryForAll(); } catch (SQLException e) { e.printStackTrace(); } return listOfEpisode; } /** * Link */ public Link getLinksBy(String guid) { Link link = null; try { List<Link> listOfLinks = getHelper().getLinkDao().query(getHelper().getLinkDao().queryBuilder().where().like("guid", guid).prepare()); if (listOfLinks != null && !listOfLinks.isEmpty()) link = listOfLinks.get(0); } catch (SQLException e) { e.printStackTrace(); } return link; } public List<Link> getLinks(String guid) { List<Link> listOfLinks = null; try { listOfLinks = getHelper().getLinkDao().query(getHelper().getLinkDao().queryBuilder().where().like("guid", guid).prepare()); } catch (SQLException e) { e.printStackTrace(); } return listOfLinks; } public void addLinks(List<Link> listOfLinks) { try { for (Link link : listOfLinks) { getHelper().getLinkDao().createOrUpdate(link); } } catch (SQLException e) { e.printStackTrace(); } } public void removeLinks() { Log.d(TAG, "Remove links"); try { TableUtils.clearTable(helper.getConnectionSource(), Link.class); } catch (SQLException e) { e.printStackTrace(); } } }