From 97834a2c835be3e182765b8dec5bc29f4dcbef57 Mon Sep 17 00:00:00 2001 From: desperateCoder Date: Fri, 6 Dec 2019 22:47:58 +0100 Subject: #211 filled stubs, might not work yet. --- .../it/niedermann/nextcloud/deck/api/DeckAPI.java | 4 ++- .../deck/persistence/sync/SyncManager.java | 31 ++++++++++++++++++++-- .../persistence/sync/adapters/ServerAdapter.java | 12 ++++++++- .../sync/adapters/db/DataBaseAdapter.java | 4 +++ .../sync/adapters/db/dao/AttachmentDao.java | 3 +++ 5 files changed, 50 insertions(+), 4 deletions(-) (limited to 'app/src/main') diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java index b37af220b..3fe1e1ed2 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java @@ -1,6 +1,7 @@ package it.niedermann.nextcloud.deck.api; +import java.io.File; import java.util.List; import io.reactivex.Observable; @@ -23,6 +24,7 @@ import retrofit2.http.GET; import retrofit2.http.Header; import retrofit2.http.POST; import retrofit2.http.PUT; +import retrofit2.http.Part; import retrofit2.http.Path; import retrofit2.http.Query; @@ -122,7 +124,7 @@ public interface DeckAPI { Observable> getAttachments(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Header(MODIFIED_SINCE_HEADER) String lastSync); @POST("boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments") - Observable uploadAttachment(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId); + Observable uploadAttachment(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Part File attachment); @PUT("boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId}") Observable updateAttachment(@Path("boardId") long boardId, @Path("stackId") long stackId, @Path("cardId") long cardId, @Path("attachmentId") long attachmentId); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java index 163dcec7e..64121b571 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java @@ -12,6 +12,7 @@ import androidx.lifecycle.MutableLiveData; import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException; import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException; +import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -22,6 +23,7 @@ import it.niedermann.nextcloud.deck.api.IResponseCallback; import it.niedermann.nextcloud.deck.api.LastSyncUtil; import it.niedermann.nextcloud.deck.model.AccessControl; import it.niedermann.nextcloud.deck.model.Account; +import it.niedermann.nextcloud.deck.model.Attachment; import it.niedermann.nextcloud.deck.model.Board; import it.niedermann.nextcloud.deck.model.Card; import it.niedermann.nextcloud.deck.model.JoinCardWithUser; @@ -889,7 +891,32 @@ public class SyncManager { } } - public void addAttachmentToCard(long accountId, long cardId, @NonNull Uri uri) { - // TODO @desperateCoder do something :) + public void addAttachmentToCard(long accountId, long localBoardId, long localStackId, long localCardId, @NonNull Uri uri) { + doAsync(() -> { + Card card = dataBaseAdapter.getCardByLocalIdDirectly(accountId, localCardId); + Stack stack = dataBaseAdapter.getStackByLocalIdDirectly(card.getStackId()); + Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getBoardId()); + serverAdapter.uploadAttachment(board.getId(), stack.getId(), card.getId(), new File(uri.getPath()), new IResponseCallback(dataBaseAdapter.readAccountDirectly(accountId)) { + @Override + public void onResponse(Void response) { + DeckLog.log("uploading "+uri.getPath()+" successfull."); + } + }); + }); + } + + public void deleteAttachmentToCard(long accountId, long localBoardId, long localStackId, long localCardId, long localAttachmentId) { + doAsync(() -> { + Card card = dataBaseAdapter.getCardByLocalIdDirectly(accountId, localCardId); + Stack stack = dataBaseAdapter.getStackByLocalIdDirectly(card.getStackId()); + Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getBoardId()); + Attachment attachment = dataBaseAdapter.getAttachmentByLocalIdDirectly(accountId, localAttachmentId); + serverAdapter.deleteAttachment(board.getId(), stack.getId(), card.getId(), attachment.getId(), new IResponseCallback(dataBaseAdapter.readAccountDirectly(accountId)) { + @Override + public void onResponse(Void response) { + DeckLog.log("deleted Attachment "+attachment.getBasename()); + } + }); + }); } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java index 3eec356aa..a905f2bf7 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java @@ -14,6 +14,7 @@ import androidx.annotation.Nullable; import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException; import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException; +import java.io.File; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -159,7 +160,6 @@ public class ServerAdapter { public void updateBoard(Board board, IResponseCallback responseCallback) { ensureInternetConnection(); RequestHelper.request(sourceActivity, provider, () -> provider.getDeckAPI().updateBoard(board.getId(), board), responseCallback); - } public void createAccessControl(long remoteBoardId, AccessControl acl, IResponseCallback responseCallback) { @@ -262,4 +262,14 @@ public class ServerAdapter { ensureInternetConnection(); RequestHelper.request(sourceActivity, provider, () -> provider.getDeckAPI().moveCard(boardId, movedCard.getCard().getStackId(), movedCard.getCard().getId(), new Reorder(newPosition, (int)newStackId)), responseCallback); } + + // ## ATTACHMENTS + public void uploadAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, File attachment, IResponseCallback responseCallback) { + ensureInternetConnection(); + RequestHelper.request(sourceActivity, provider, () -> provider.getDeckAPI().uploadAttachment(remoteBoardId, remoteStackId, remoteCardId, attachment), responseCallback); + } + public void deleteAttachment(Long remoteBoardId, long remoteStackId, long remoteCardId, long remoteAttachmentId, IResponseCallback responseCallback) { + ensureInternetConnection(); + RequestHelper.request(sourceActivity, provider, () -> provider.getDeckAPI().deleteAttachment(remoteBoardId, remoteStackId, remoteCardId, remoteAttachmentId), responseCallback); + } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java index 79fb70c11..c477393a4 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java @@ -475,6 +475,10 @@ public class DataBaseAdapter { return db.getAttachmentDao().getAttachmentByRemoteIdDirectly(accountId, id); } + public Attachment getAttachmentByLocalIdDirectly(long accountId, Long id) { + return db.getAttachmentDao().getAttachmentByLocalIdDirectly(accountId, id); + } + public long createAttachment(long accountId, Attachment attachment) { attachment.setAccountId(accountId); return db.getAttachmentDao().insert(attachment); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/AttachmentDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/AttachmentDao.java index 6c56429be..7899ed261 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/AttachmentDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/AttachmentDao.java @@ -15,4 +15,7 @@ public interface AttachmentDao extends GenericDao { @Query("SELECT * FROM attachment where accountId = :accountId and id = :remoteId") Attachment getAttachmentByRemoteIdDirectly(long accountId, Long remoteId); + + @Query("SELECT * FROM attachment where accountId = :accountId and localId = :id") + Attachment getAttachmentByLocalIdDirectly(long accountId, Long id); } \ No newline at end of file -- cgit v1.2.3