Search in sources :

Example 1 with Repo

use of com.orgzly.android.repos.Repo in project orgzly-android by orgzly.

the class Shelf method saveBookToRepo.

/**
 * Exports {@code Book}, uploads it to repo and link it to newly created
 * {@link com.orgzly.android.repos.VersionedRook}.
 *
 * @return {@link Book}
 * @throws IOException
 */
public Book saveBookToRepo(String repoUrl, String fileName, Book book, BookName.Format format) throws IOException {
    Repo repo = RepoFactory.getFromUri(mContext, repoUrl);
    if (repo == null) {
        throw new IOException("Unsupported repository URL \"" + repoUrl + "\"");
    }
    VersionedRook uploadedBook;
    File tmpFile = getTempBookFile();
    try {
        /* Write to temporary file. */
        writeBookToFile(book, format, tmpFile);
        /* Upload to repo. */
        uploadedBook = repo.storeBook(tmpFile, fileName);
    } finally {
        /* Delete temporary file. */
        tmpFile.delete();
    }
    book.setLastSyncedToRook(uploadedBook);
    BooksClient.saved(mContext, book.getId(), uploadedBook);
    return book;
}
Also used : VersionedRook(com.orgzly.android.repos.VersionedRook) Repo(com.orgzly.android.repos.Repo) IOException(java.io.IOException) File(java.io.File) OrgParsedFile(com.orgzly.org.parser.OrgParsedFile)

Example 2 with Repo

use of com.orgzly.android.repos.Repo in project orgzly-android by orgzly.

the class Shelf method deleteBook.

// TODO: Do in Provider under transaction
public void deleteBook(Book book, boolean deleteLinked) throws IOException {
    if (deleteLinked) {
        Repo repo = RepoFactory.getFromUri(mContext, book.getLastSyncedToRook().getRepoUri());
        if (repo != null) {
            repo.delete(book.getLastSyncedToRook().getUri());
        }
    }
    NotesClient.deleteFromBook(mContext, book.getId());
    BooksClient.delete(mContext, book.getId());
    notifyDataChanged(mContext);
}
Also used : Repo(com.orgzly.android.repos.Repo)

Example 3 with Repo

use of com.orgzly.android.repos.Repo in project orgzly-android by orgzly.

the class Shelf method getBooksFromAllRepos.

/**
 * Goes through each repository and collects all books from each one.
 */
public List<VersionedRook> getBooksFromAllRepos(Map<String, Repo> repos) throws IOException {
    List<VersionedRook> result = new ArrayList<>();
    if (repos == null) {
        repos = getAllRepos();
    }
    for (Repo repo : repos.values()) {
        /* Each repository. */
        List<VersionedRook> libBooks = repo.getBooks();
        for (VersionedRook vrook : libBooks) {
            /* Each book in repository. */
            result.add(vrook);
        }
    }
    CurrentRooksClient.set(mContext, result);
    return result;
}
Also used : VersionedRook(com.orgzly.android.repos.VersionedRook) Repo(com.orgzly.android.repos.Repo) CircularArrayList(com.orgzly.android.util.CircularArrayList) ArrayList(java.util.ArrayList)

Example 4 with Repo

use of com.orgzly.android.repos.Repo in project orgzly-android by orgzly.

the class Shelf method loadBookFromRepo.

public Book loadBookFromRepo(Uri repoUri, String fileName) throws IOException {
    Book book;
    Repo repo = RepoFactory.getFromUri(mContext, repoUri);
    if (repo == null) {
        throw new IOException("Unsupported repository URL \"" + repoUri + "\"");
    }
    File tmpFile = getTempBookFile();
    try {
        /* Download from repo. */
        VersionedRook vrook = repo.retrieveBook(fileName, tmpFile);
        BookName bookName = BookName.fromFileName(fileName);
        /* Store from file to Shelf. */
        book = loadBookFromFile(bookName.getName(), bookName.getFormat(), tmpFile, vrook);
    } finally {
        tmpFile.delete();
    }
    return book;
}
Also used : VersionedRook(com.orgzly.android.repos.VersionedRook) Repo(com.orgzly.android.repos.Repo) IOException(java.io.IOException) File(java.io.File) OrgParsedFile(com.orgzly.org.parser.OrgParsedFile)

Example 5 with Repo

use of com.orgzly.android.repos.Repo in project orgzly-android by orgzly.

the class DropboxRepoFragment method save.

private void save() {
    String directory = mDirectory.getText().toString().trim();
    if (TextUtils.isEmpty(directory)) {
        directoryInputLayout.setError(getString(R.string.can_not_be_empty));
        return;
    } else {
        directoryInputLayout.setError(null);
    }
    Uri uri = UriUtils.uriFromPath(DropboxRepo.SCHEME, directory);
    Repo repo = RepoFactory.getFromUri(getActivity(), uri);
    if (repo == null) {
        directoryInputLayout.setError(getString(R.string.invalid_repo_url, uri));
        return;
    }
    if (getArguments() != null && getArguments().containsKey(ARG_REPO_ID)) {
        /* Edit existing repository. */
        long repoId = getArguments().getLong(ARG_REPO_ID);
        if (mListener != null) {
            mListener.onRepoUpdateRequest(repoId, repo);
        }
    } else {
        if (mListener != null) {
            mListener.onRepoCreateRequest(repo);
        }
    }
}
Also used : DropboxRepo(com.orgzly.android.repos.DropboxRepo) Repo(com.orgzly.android.repos.Repo) Uri(android.net.Uri)

Aggregations

Repo (com.orgzly.android.repos.Repo)11 VersionedRook (com.orgzly.android.repos.VersionedRook)5 IOException (java.io.IOException)4 Uri (android.net.Uri)3 DirectoryRepo (com.orgzly.android.repos.DirectoryRepo)2 OrgParsedFile (com.orgzly.org.parser.OrgParsedFile)2 File (java.io.File)2 Activity (android.app.Activity)1 AlertDialog (android.app.AlertDialog)1 BroadcastReceiver (android.content.BroadcastReceiver)1 Context (android.content.Context)1 DialogInterface (android.content.DialogInterface)1 Intent (android.content.Intent)1 IntentFilter (android.content.IntentFilter)1 Configuration (android.content.res.Configuration)1 TypedArray (android.content.res.TypedArray)1 Bundle (android.os.Bundle)1 Handler (android.os.Handler)1 NonNull (android.support.annotation.NonNull)1 StringRes (android.support.annotation.StringRes)1