diff options
author | desperateCoder <echotodevnull@gmail.com> | 2019-01-13 17:07:58 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2019-01-13 17:07:58 +0300 |
commit | ac59e26f1681e12edd0792658db6fb92fbbace2d (patch) | |
tree | b54683fedce682de5082fcd48a370ed93087f3b3 /app/src/main/java/it/niedermann/nextcloud/deck/persistence | |
parent | 400c40d96072b9c5393c048554ac783ce8b0978a (diff) |
fixed bunch of bugs (still WIP)
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/persistence')
6 files changed, 45 insertions, 17 deletions
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 a5395711b..878a67e95 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 @@ -16,6 +16,7 @@ import it.niedermann.nextcloud.deck.api.RequestHelper; import it.niedermann.nextcloud.deck.model.Board; import it.niedermann.nextcloud.deck.model.Card; import it.niedermann.nextcloud.deck.model.Stack; +import it.niedermann.nextcloud.deck.model.full.FullBoard; import it.niedermann.nextcloud.deck.model.full.FullCard; import it.niedermann.nextcloud.deck.model.full.FullStack; @@ -57,7 +58,7 @@ public class ServerAdapter { // return lastSync; } - public void getBoards(long accountId, IResponseCallback<List<Board>> responseCallback) { + public void getBoards(long accountId, IResponseCallback<List<FullBoard>> responseCallback) { RequestHelper.request(sourceActivity, provider, () -> provider.getAPI().getBoards(getLastSyncDateFormatted()), 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 8a2e297b7..3ef0619fd 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 @@ -15,6 +15,7 @@ import it.niedermann.nextcloud.deck.model.JoinStackWithCard; import it.niedermann.nextcloud.deck.model.Label; import it.niedermann.nextcloud.deck.model.Stack; import it.niedermann.nextcloud.deck.model.User; +import it.niedermann.nextcloud.deck.model.full.FullBoard; import it.niedermann.nextcloud.deck.model.full.FullCard; import it.niedermann.nextcloud.deck.model.full.FullStack; @@ -48,6 +49,9 @@ public class DataBaseAdapter { public Board getBoardByRemoteIdDirectly(long accountId, long remoteId) { return db.getBoardDao().getBoardByRemoteIdDirectly(accountId, remoteId); } + public FullBoard getFullBoardByRemoteIdDirectly(long accountId, long remoteId) { + return db.getBoardDao().getFullBoardByRemoteIdDirectly(accountId, remoteId); + } public LiveData<Stack> getStackByRemoteId(long accountId, long localBoardId, long remoteId) { @@ -78,7 +82,10 @@ public class DataBaseAdapter { } public User getUserByRemoteIdDirectly(long accountId, long remoteId) { - return db.getUserDao().getUsersByRemoteIdDirectly(accountId, remoteId); + return db.getUserDao().getUserByRemoteIdDirectly(accountId, remoteId); + } + public User getUserByUidDirectly(long accountId, String uid) { + return db.getUserDao().getUserByUidDirectly(accountId, uid); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java index 12e884d31..0d1737d02 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java @@ -3,10 +3,12 @@ package it.niedermann.nextcloud.deck.persistence.sync.adapters.db.dao; import android.arch.lifecycle.LiveData; import android.arch.persistence.room.Dao; import android.arch.persistence.room.Query; +import android.arch.persistence.room.Transaction; import java.util.List; import it.niedermann.nextcloud.deck.model.Board; +import it.niedermann.nextcloud.deck.model.full.FullBoard; @Dao public interface BoardDao extends GenericDao<Board> { @@ -19,4 +21,8 @@ public interface BoardDao extends GenericDao<Board> { @Query("SELECT * FROM board WHERE accountId = :accountId and id = :remoteId") Board getBoardByRemoteIdDirectly(long accountId, long remoteId); + + @Transaction + @Query("SELECT * FROM board WHERE accountId = :accountId and id = :remoteId") + FullBoard getFullBoardByRemoteIdDirectly(long accountId, long remoteId); }
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/UserDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/UserDao.java index d54f318e7..c3ffa96ad 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/UserDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/UserDao.java @@ -18,6 +18,9 @@ public interface UserDao extends GenericDao<User> { LiveData<User> getUsersByRemoteId(final long accountId, final long remoteId); @Query("SELECT * FROM user WHERE accountId = :accountId and id = :remoteId") - User getUsersByRemoteIdDirectly(final long accountId, final long remoteId); + User getUserByRemoteIdDirectly(final long accountId, final long remoteId); + + @Query("SELECT * FROM user WHERE accountId = :accountId and uid = :uid") + User getUserByUidDirectly(final long accountId, final String uid); }
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/BoardDataProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/BoardDataProvider.java index 5d5cee46a..44dfb0879 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/BoardDataProvider.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/BoardDataProvider.java @@ -3,34 +3,45 @@ package it.niedermann.nextcloud.deck.persistence.sync.helpers.providers; import java.util.List; import it.niedermann.nextcloud.deck.api.IResponseCallback; -import it.niedermann.nextcloud.deck.model.Board; +import it.niedermann.nextcloud.deck.model.User; +import it.niedermann.nextcloud.deck.model.full.FullBoard; import it.niedermann.nextcloud.deck.persistence.sync.adapters.ServerAdapter; import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.DataBaseAdapter; import it.niedermann.nextcloud.deck.persistence.sync.helpers.SyncHelper; -public class BoardDataProvider implements IDataProvider<Board> { +public class BoardDataProvider implements IDataProvider<FullBoard> { @Override - public void getAllFromServer(ServerAdapter serverAdapter, long accountId, IResponseCallback<List<Board>> responder) { + public void getAllFromServer(ServerAdapter serverAdapter, long accountId, IResponseCallback<List<FullBoard>> responder) { serverAdapter.getBoards(accountId, responder); } @Override - public Board getSingleFromDB(DataBaseAdapter dataBaseAdapter, long accountId, long remoteId) { - return dataBaseAdapter.getBoardByRemoteIdDirectly(accountId, remoteId); + public FullBoard getSingleFromDB(DataBaseAdapter dataBaseAdapter, long accountId, long remoteId) { + return dataBaseAdapter.getFullBoardByRemoteIdDirectly(accountId, remoteId); } @Override - public void createInDB(DataBaseAdapter dataBaseAdapter, long accountId, Board entity) { - dataBaseAdapter.createBoard(accountId, entity); + public void createInDB(DataBaseAdapter dataBaseAdapter, long accountId, FullBoard entity) { + if (entity.getOwner()!=null && entity.getOwner().size() == 1) { + User remoteOwner = entity.getOwner().get(0); + User owner = dataBaseAdapter.getUserByUidDirectly(accountId, remoteOwner.getUid()); + if (owner == null){ + dataBaseAdapter.createUser(accountId, remoteOwner); + } + owner = dataBaseAdapter.getUserByUidDirectly(accountId, remoteOwner.getUid()); + entity.getBoard().setOwnerId(owner.getLocalId()); + } + + dataBaseAdapter.createBoard(accountId, entity.getBoard()); } @Override - public void updateInDB(DataBaseAdapter dataBaseAdapter, long accountId, Board entity) { - dataBaseAdapter.updateBoard(entity); + public void updateInDB(DataBaseAdapter dataBaseAdapter, long accountId, FullBoard entity) { + dataBaseAdapter.updateBoard(entity.getBoard()); } @Override - public void goDeeper(SyncHelper syncHelper, Board entityFromServer) { + public void goDeeper(SyncHelper syncHelper, FullBoard entityFromServer) { syncHelper.doSyncFor(new StackDataProvider(entityFromServer)); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/StackDataProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/StackDataProvider.java index 219b62b62..663a952fb 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/StackDataProvider.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/StackDataProvider.java @@ -3,16 +3,16 @@ package it.niedermann.nextcloud.deck.persistence.sync.helpers.providers; import java.util.List; import it.niedermann.nextcloud.deck.api.IResponseCallback; -import it.niedermann.nextcloud.deck.model.Board; +import it.niedermann.nextcloud.deck.model.full.FullBoard; import it.niedermann.nextcloud.deck.model.full.FullStack; import it.niedermann.nextcloud.deck.persistence.sync.adapters.ServerAdapter; import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.DataBaseAdapter; import it.niedermann.nextcloud.deck.persistence.sync.helpers.SyncHelper; public class StackDataProvider implements IDataProvider<FullStack> { - private Board board; + private FullBoard board; - public StackDataProvider(Board board) { + public StackDataProvider(FullBoard board) { this.board = board; } @@ -38,6 +38,6 @@ public class StackDataProvider implements IDataProvider<FullStack> { @Override public void goDeeper(SyncHelper syncHelper, FullStack entityFromServer) { - syncHelper.doSyncFor(new CardDataProvider(board, entityFromServer)); + syncHelper.doSyncFor(new CardDataProvider(board.getBoard(), entityFromServer)); } } |