summaryrefslogtreecommitdiffstats
path: root/mobile/android/base/java/org/mozilla/gecko/db/LocalUrlAnnotations.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/base/java/org/mozilla/gecko/db/LocalUrlAnnotations.java')
-rw-r--r--mobile/android/base/java/org/mozilla/gecko/db/LocalUrlAnnotations.java253
1 files changed, 0 insertions, 253 deletions
diff --git a/mobile/android/base/java/org/mozilla/gecko/db/LocalUrlAnnotations.java b/mobile/android/base/java/org/mozilla/gecko/db/LocalUrlAnnotations.java
deleted file mode 100644
index 9df41a169..000000000
--- a/mobile/android/base/java/org/mozilla/gecko/db/LocalUrlAnnotations.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.db;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.net.Uri;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.util.Log;
-
-import org.json.JSONException;
-import org.mozilla.gecko.annotation.RobocopTarget;
-import org.mozilla.gecko.db.BrowserContract.UrlAnnotations.Key;
-import org.mozilla.gecko.feeds.subscriptions.FeedSubscription;
-
-public class LocalUrlAnnotations implements UrlAnnotations {
- private static final String LOGTAG = "LocalUrlAnnotations";
-
- private Uri urlAnnotationsTableWithProfile;
-
- public LocalUrlAnnotations(final String profile) {
- urlAnnotationsTableWithProfile = DBUtils.appendProfile(profile, BrowserContract.UrlAnnotations.CONTENT_URI);
- }
-
- /**
- * Get all feed subscriptions.
- */
- @Override
- public Cursor getFeedSubscriptions(ContentResolver cr) {
- return queryByKey(cr,
- Key.FEED_SUBSCRIPTION,
- new String[] { BrowserContract.UrlAnnotations.URL, BrowserContract.UrlAnnotations.VALUE },
- null);
- }
-
- /**
- * Insert mapping from website URL to URL of the feed.
- */
- @Override
- public void insertFeedUrl(ContentResolver cr, String originUrl, String feedUrl) {
- insertAnnotation(cr, originUrl, Key.FEED, feedUrl);
- }
-
- @Override
- public boolean hasAcceptedOrDeclinedHomeScreenShortcut(ContentResolver cr, String url) {
- return hasResultsForSelection(cr,
- BrowserContract.UrlAnnotations.URL + " = ?",
- new String[]{url});
- }
-
- @Override
- public void insertHomeScreenShortcut(ContentResolver cr, String url, boolean hasCreatedShortCut) {
- insertAnnotation(cr, url, Key.HOME_SCREEN_SHORTCUT, String.valueOf(hasCreatedShortCut));
- }
-
- /**
- * Returns true if there's a mapping from the given website URL to a feed URL. False otherwise.
- */
- @Override
- public boolean hasFeedUrlForWebsite(ContentResolver cr, String websiteUrl) {
- return hasResultsForSelection(cr,
- BrowserContract.UrlAnnotations.URL + " = ? AND " + BrowserContract.UrlAnnotations.KEY + " = ?",
- new String[]{websiteUrl, Key.FEED.getDbValue()});
- }
-
- /**
- * Returns true if there's a website URL with this feed URL. False otherwise.
- */
- @Override
- public boolean hasWebsiteForFeedUrl(ContentResolver cr, String feedUrl) {
- return hasResultsForSelection(cr,
- BrowserContract.UrlAnnotations.VALUE + " = ? AND " + BrowserContract.UrlAnnotations.KEY + " = ?",
- new String[]{feedUrl, Key.FEED.getDbValue()});
- }
-
- /**
- * Delete the feed URL mapping for this website URL.
- */
- @Override
- public void deleteFeedUrl(ContentResolver cr, String websiteUrl) {
- deleteAnnotation(cr, websiteUrl, Key.FEED);
- }
-
- /**
- * Get website URLs that are mapped to the given feed URL.
- */
- @Override
- public Cursor getWebsitesWithFeedUrl(ContentResolver cr) {
- return cr.query(urlAnnotationsTableWithProfile,
- new String[] { BrowserContract.UrlAnnotations.URL },
- BrowserContract.UrlAnnotations.KEY + " = ?",
- new String[] { Key.FEED.getDbValue() },
- null);
- }
-
- /**
- * Returns true if there's a subscription for this feed URL. False otherwise.
- */
- @Override
- public boolean hasFeedSubscription(ContentResolver cr, String feedUrl) {
- return hasResultsForSelection(cr,
- BrowserContract.UrlAnnotations.URL + " = ? AND " + BrowserContract.UrlAnnotations.KEY + " = ?",
- new String[]{feedUrl, Key.FEED_SUBSCRIPTION.getDbValue()});
- }
-
- /**
- * Insert the given feed subscription (Mapping from feed URL to the subscription object).
- */
- @Override
- public void insertFeedSubscription(ContentResolver cr, FeedSubscription subscription) {
- try {
- insertAnnotation(cr, subscription.getFeedUrl(), Key.FEED_SUBSCRIPTION, subscription.toJSON().toString());
- } catch (JSONException e) {
- Log.w(LOGTAG, "Could not serialize subscription");
- }
- }
-
- /**
- * Update the feed subscription with new values.
- */
- @Override
- public void updateFeedSubscription(ContentResolver cr, FeedSubscription subscription) {
- try {
- updateAnnotation(cr, subscription.getFeedUrl(), Key.FEED_SUBSCRIPTION, subscription.toJSON().toString());
- } catch (JSONException e) {
- Log.w(LOGTAG, "Could not serialize subscription");
- }
- }
-
- /**
- * Delete the subscription for the feed URL.
- */
- @Override
- public void deleteFeedSubscription(ContentResolver cr, FeedSubscription subscription) {
- deleteAnnotation(cr, subscription.getFeedUrl(), Key.FEED_SUBSCRIPTION);
- }
-
- private int deleteAnnotation(final ContentResolver cr, final String url, final Key key) {
- return cr.delete(urlAnnotationsTableWithProfile,
- BrowserContract.UrlAnnotations.KEY + " = ? AND " + BrowserContract.UrlAnnotations.URL + " = ?",
- new String[] { key.getDbValue(), url });
- }
-
- private int updateAnnotation(final ContentResolver cr, final String url, final Key key, final String value) {
- ContentValues values = new ContentValues();
- values.put(BrowserContract.UrlAnnotations.VALUE, value);
- values.put(BrowserContract.UrlAnnotations.DATE_MODIFIED, System.currentTimeMillis());
-
- return cr.update(urlAnnotationsTableWithProfile,
- values,
- BrowserContract.UrlAnnotations.KEY + " = ? AND " + BrowserContract.UrlAnnotations.URL + " = ?",
- new String[]{key.getDbValue(), url});
- }
-
- private void insertAnnotation(final ContentResolver cr, final String url, final Key key, final String value) {
- insertAnnotation(cr, url, key.getDbValue(), value);
- }
-
- @RobocopTarget
- @Override
- public void insertAnnotation(final ContentResolver cr, final String url, final String key, final String value) {
- final long creationTime = System.currentTimeMillis();
- final ContentValues values = new ContentValues(5);
- values.put(BrowserContract.UrlAnnotations.URL, url);
- values.put(BrowserContract.UrlAnnotations.KEY, key);
- values.put(BrowserContract.UrlAnnotations.VALUE, value);
- values.put(BrowserContract.UrlAnnotations.DATE_CREATED, creationTime);
- values.put(BrowserContract.UrlAnnotations.DATE_MODIFIED, creationTime);
- cr.insert(urlAnnotationsTableWithProfile, values);
- }
-
- /**
- * @return true if the table contains rows for the given selection.
- */
- private boolean hasResultsForSelection(ContentResolver cr, String selection, String[] selectionArgs) {
- Cursor cursor = cr.query(urlAnnotationsTableWithProfile,
- new String[] { BrowserContract.UrlAnnotations._ID },
- selection,
- selectionArgs,
- null);
- if (cursor == null) {
- return false;
- }
-
- try {
- return cursor.getCount() > 0;
- } finally {
- cursor.close();
- }
- }
-
- private Cursor queryByKey(final ContentResolver cr, @NonNull final Key key, @Nullable final String[] projections,
- @Nullable final String sortOrder) {
- return cr.query(urlAnnotationsTableWithProfile,
- projections,
- BrowserContract.UrlAnnotations.KEY + " = ?", new String[] { key.getDbValue() },
- sortOrder);
- }
-
- @Override
- public Cursor getScreenshots(ContentResolver cr) {
- return queryByKey(cr,
- Key.SCREENSHOT,
- new String[] {
- BrowserContract.UrlAnnotations._ID,
- BrowserContract.UrlAnnotations.URL,
- BrowserContract.UrlAnnotations.KEY,
- BrowserContract.UrlAnnotations.VALUE,
- BrowserContract.UrlAnnotations.DATE_CREATED,
- },
- BrowserContract.UrlAnnotations.DATE_CREATED + " DESC");
- }
-
- public void insertScreenshot(final ContentResolver cr, final String pageUrl, final String screenshotPath) {
- insertAnnotation(cr, pageUrl, Key.SCREENSHOT.getDbValue(), screenshotPath);
- }
-
- @Override
- public void insertReaderViewUrl(final ContentResolver cr, final String pageUrl) {
- insertAnnotation(cr, pageUrl, Key.READER_VIEW.getDbValue(), BrowserContract.UrlAnnotations.READER_VIEW_SAVED_VALUE);
- }
-
- @Override
- public void deleteReaderViewUrl(ContentResolver cr, String pageURL) {
- deleteAnnotation(cr, pageURL, Key.READER_VIEW);
- }
-
- public int getAnnotationCount(ContentResolver cr, Key key) {
- final String countColumnname = "count";
- final Cursor c = queryByKey(cr,
- key,
- new String[] {
- "COUNT(*) AS " + countColumnname
- },
- null);
-
- try {
- if (c != null && c.moveToFirst()) {
- return c.getInt(c.getColumnIndexOrThrow(countColumnname));
- } else {
- return 0;
- }
- } finally {
- if (c != null) {
- c.close();
- }
- }
- }
-}