package com.orgzly.android.provider;
import android.content.ContentUris;
import android.net.Uri;
import android.provider.BaseColumns;
import com.orgzly.android.SearchQuery;
import com.orgzly.android.provider.models.DbBook;
import com.orgzly.android.provider.models.DbDbRepo;
import com.orgzly.android.provider.models.DbNote;
import com.orgzly.android.provider.models.DbRepo;
import com.orgzly.android.provider.models.DbSearch;
import com.orgzly.android.provider.views.BooksView;
import com.orgzly.android.provider.views.NotesView;
import com.orgzly.android.ui.NotePlace;
/**
* Content provider's contract.
*/
public class ProviderContract {
public static final String AUTHORITY = "com.orgzly";
public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
public interface Books {
class Param extends BooksView.Columns implements DbBook.Columns, BaseColumns {
}
interface MatcherUri {
String BOOKS = "books";
String BOOKS_ID = BOOKS + "/#";
String BOOKS_ID_NOTES = BOOKS + "/#/notes";
String BOOKS_ID_CYCLE_VISIBILITY = BOOKS + "/#/cycle-visibility";
String BOOKS_ID_SPARSE_TREE = BOOKS + "/#/sparse-tree";
}
class ContentUri {
public static Uri books() {
return Uri.withAppendedPath(AUTHORITY_URI, MatcherUri.BOOKS);
}
public static Uri booksId(long bookId) {
return ContentUris.withAppendedId(books(), bookId);
}
public static Uri booksIdNotes(long bookId) {
return booksId(bookId).buildUpon().appendPath("notes").build();
}
public static Uri booksIdCycleVisibility(long id) {
return ContentUris.withAppendedId(books(), id).buildUpon()
.appendPath("cycle-visibility").build();
}
public static Uri booksIdSparseTree(long bookId) {
return ContentUris.withAppendedId(books(), bookId).buildUpon()
.appendPath("sparse-tree").build();
}
}
}
public interface Filters {
class Param implements DbSearch.Columns, BaseColumns {
}
interface MatcherUri {
String FILTERS = "filters";
String FILTERS_ID = FILTERS + "/#";
String FILTERS_ID_UP = FILTERS + "/#/up";
String FILTERS_ID_DOWN = FILTERS + "/#/down";
}
class ContentUri {
public static Uri filters() {
return Uri.withAppendedPath(AUTHORITY_URI, MatcherUri.FILTERS);
}
public static Uri filtersIdUp(long id) {
return ContentUris.withAppendedId(filters(), id).buildUpon()
.appendPath("up").build();
}
public static Uri filtersIdDown(long id) {
return ContentUris.withAppendedId(filters(), id).buildUpon()
.appendPath("down").build();
}
}
}
public interface Repos {
class Param implements DbRepo.Columns, BaseColumns {
}
interface MatcherUri {
String REPOS = "repos";
String REPOS_ID = REPOS + "/#";
}
class ContentUri {
public static Uri repos() {
return Uri.withAppendedPath(AUTHORITY_URI, MatcherUri.REPOS);
}
}
}
public interface NoteProperties {
class Param {
public static final String NOTE_ID = "note_id";
public static final String NAME = "name";
public static final String VALUE = "value";
public static final String POSITION = "position";
}
interface MatcherUri {
String NOTES_PROPERTIES = "notes/properties";
String NOTES_ID_PROPERTIES = "notes/#/properties";
}
class ContentUri {
public static Uri notesProperties() {
return Uri.withAppendedPath(AUTHORITY_URI, MatcherUri.NOTES_PROPERTIES);
}
public static Uri notesIdProperties(long id) {
Uri.Builder builder = AUTHORITY_URI.buildUpon();
builder = builder.appendPath("notes");
builder = ContentUris.appendId(builder, id);
builder = builder.appendPath("properties");
return builder.build();
}
}
}
public interface Notes {
class QueryParam extends NotesView.Columns implements DbNote.Columns, BaseColumns {
}
class UpdateParam implements DbNote.Columns, BaseColumns {
public static final String SCHEDULED_STRING = "scheduled_string"; // TODO: This is range, rename.
public static final String DEADLINE_STRING = "deadline_string";
public static final String CLOSED_STRING = "closed_string";
public static final String CLOCK_STRING = "clock_string";
}
interface MatcherUri {
String NOTES = "notes";
String NOTES_SEARCH_QUERIED = NOTES + "/queried";
String NOTES_STATE = NOTES + "/state";
String NOTES_ID = NOTES + "/#";
String NOTES_ID_ABOVE = NOTES + "/#/above";
String NOTES_ID_BELOW = NOTES + "/#/below";
String NOTES_ID_UNDER = NOTES + "/#/under";
String NOTES_ID_TOGGLE_FOLDED_STATE = NOTES + "/#/toggle-folded-state";
}
class ContentUri {
public static Uri notes() {
return Uri.withAppendedPath(AUTHORITY_URI, MatcherUri.NOTES);
}
public static Uri notesId(long id) {
return ContentUris.withAppendedId(notes(), id);
}
public static Uri notesIdTarget(NotePlace target) {
Uri.Builder builder = notesId(target.getNoteId()).buildUpon();
switch (target.getPlace()) {
case ABOVE:
builder.appendPath("above");
break;
case UNDER:
builder.appendPath("under");
break;
case BELOW:
builder.appendPath("below");
break;
}
return builder.build();
}
public static Uri notesIdToggleFoldedState(long id) {
return notesId(id).buildUpon().appendPath("toggle-folded-state").build();
}
public static Uri notesSearchQueried(SearchQuery searchQuery) {
return notes().buildUpon().appendPath("queried").query(searchQuery.toString()).build();
}
}
}
public interface CurrentRooks {
class Param {
public static final String REPO_URL = "repo_url";
public static final String ROOK_URL = "rook_url";
public static final String ROOK_REVISION = "rook_revision";
public static final String ROOK_MTIME = "rook_mtime";
}
interface MatcherUri {
String CURRENT_ROOKS = "current-rooks";
}
class ContentUri {
public static Uri currentRooks() {
return Uri.withAppendedPath(AUTHORITY_URI, "current-rooks");
}
}
}
public interface BookLinks {
class Param {
public static final String REPO_URL = "repo_url";
public static final String ROOK_URL = "rook_url";
}
interface MatcherUri {
String BOOKS_ID_LINKS = "books/#/links";
}
class ContentUri {
public static Uri booksIdLinks(long id) {
Uri.Builder builder = AUTHORITY_URI.buildUpon();
builder = builder.appendPath("books");
builder = ContentUris.appendId(builder, id);
builder = builder.appendPath("links");
return builder.build();
}
}
}
public interface Paste {
class Param {
public static final String NOTE_ID = "note_id";
public static final String BATCH_ID = "batch_id";
public static final String SPOT = "spot";
}
interface MatcherUri {
String PASTE = "paste";
}
class ContentUri {
public static Uri paste() {
return Uri.withAppendedPath(AUTHORITY_URI, "paste");
}
}
}
public interface Cut {
class Param {
public static final String BOOK_ID = "book_id";
public static final String IDS = "ids";
}
interface MatcherUri {
String CUT = "cut";
}
class ContentUri {
public static Uri cut() {
return Uri.withAppendedPath(AUTHORITY_URI, "cut");
}
}
}
public interface Delete {
class Param {
public static final String BOOK_ID = "book_id";
public static final String IDS = "ids";
}
interface MatcherUri {
String DELETE = "delete";
}
class ContentUri {
public static Uri delete() {
return Uri.withAppendedPath(AUTHORITY_URI, "delete");
}
}
}
public interface NotesState {
class Param {
public static final String NOTE_IDS = "note_ids";
public static final String STATE = "state";
}
class ContentUri {
public static Uri notesState() {
return Uri.withAppendedPath(AUTHORITY_URI, "notes/state");
}
}
}
public interface Promote {
class Param {
public static final String BOOK_ID = "book_id";
public static final String IDS = "ids";
}
interface MatcherUri {
String PROMOTE = "promote";
}
class ContentUri {
public static Uri promote() {
return Uri.withAppendedPath(AUTHORITY_URI, "promote");
}
}
}
public interface Demote {
class Param {
public static final String BOOK_ID = "book_id";
public static final String IDS = "ids";
}
interface MatcherUri {
String DEMOTE = "demote";
}
class ContentUri {
public static Uri demote() {
return Uri.withAppendedPath(AUTHORITY_URI, "demote");
}
}
}
public interface Move {
class Param {
public static final String BOOK_ID = "book_id";
public static final String IDS = "ids";
public static final String DIRECTION = "direction"; /* up or down */
}
interface MatcherUri {
String MOVE = "move";
}
class ContentUri {
public static Uri move() {
return Uri.withAppendedPath(AUTHORITY_URI, "move");
}
}
}
public interface LoadBookFromFile {
class Param {
public static final String BOOK_NAME = "book_name";
public static final String FILE_PATH = "file_path";
public static final String FORMAT = "format";
public static final String ROOK_URL = "rook_url";
public static final String ROOK_REPO_URL = "rook_repo_url";
public static final String ROOK_REVISION = "rook_revision";
public static final String ROOK_MTIME = "rook_mtime";
public static final String SELECTED_ENCODING = "selected_encoding";
}
interface MatcherUri {
String LOAD_FROM_FILE = "load-from-file";
}
class ContentUri {
public static Uri loadBookFromFile() {
return Uri.withAppendedPath(AUTHORITY_URI, "load-from-file");
}
}
}
public interface LocalDbRepo {
class Param implements DbDbRepo.Columns {
}
interface MatcherUri {
String DB_REPOS = "db-repos";
}
class ContentUri {
public static Uri dbRepos() {
return Uri.withAppendedPath(AUTHORITY_URI, "db-repos");
}
}
}
public interface DbTest {
interface MatcherUri {
String DB_TEST = "db/test";
}
class ContentUri {
public static Uri dbTest() {
return Uri.withAppendedPath(AUTHORITY_URI, "db/test");
}
}
}
public interface DbRecreate {
interface MatcherUri {
String DB_RECREATE = "db/recreate";
}
class ContentUri {
public static Uri dbRecreate() {
return Uri.withAppendedPath(AUTHORITY_URI, "db/recreate");
}
}
}
public interface BooksIdSaved {
class Param {
public static final String REPO_URL = "repo_url";
public static final String ROOK_URL = "rook_url";
public static final String ROOK_REVISION = "rook_revision";
public static final String ROOK_MTIME = "rook_mtime";
}
interface MatcherUri {
String BOOKS_ID_SAVED = "books/#/saved";
}
class ContentUri {
public static Uri booksIdSaved(long id) {
Uri.Builder builder = AUTHORITY_URI.buildUpon();
builder = builder.appendPath("books");
builder = ContentUris.appendId(builder, id);
builder = builder.appendPath("saved");
return builder.build();
}
}
}
public interface Times {
class Param {
public static final String NOTE_ID = "note_id";
public static final String NOTE_STATE = "note_state";
public static final String NOTE_TITLE = "note_title";
public static final String ORG_TIMESTAMP_STRING = "org_timestamp_string";
}
class ColumnIndex {
public static final int NOTE_ID = 0;
public static final int BOOK_ID = 1;
public static final int NOTE_STATE = 2;
public static final int ORG_TIMESTAMP_STRING = 3;
public static final int NOTE_TITLE = 4;
}
interface MatcherUri {
String TIMES = "times";
}
class ContentUri {
public static final String PARAM_AFTER_TIME = "after_time";
public static Uri times(long time) {
return Uri.withAppendedPath(AUTHORITY_URI, "times")
.buildUpon()
.appendQueryParameter(PARAM_AFTER_TIME, String.valueOf(time))
.build();
}
}
}
}