Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authordesperateCoder <echotodevnull@gmail.com>2019-01-13 17:07:58 +0300
committerdesperateCoder <echotodevnull@gmail.com>2019-01-13 17:07:58 +0300
commitac59e26f1681e12edd0792658db6fb92fbbace2d (patch)
treeb54683fedce682de5082fcd48a370ed93087f3b3 /app
parent400c40d96072b9c5393c048554ac783ce8b0978a (diff)
fixed bunch of bugs (still WIP)
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI_SSO.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java10
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java36
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/model/full/FullBoard.java60
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java9
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java6
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/UserDao.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/BoardDataProvider.java31
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/StackDataProvider.java8
11 files changed, 143 insertions, 31 deletions
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 1096e4bad..477a87a36 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
@@ -8,6 +8,7 @@ import it.niedermann.nextcloud.deck.model.Board;
import it.niedermann.nextcloud.deck.model.Card;
import it.niedermann.nextcloud.deck.model.Label;
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;
import retrofit2.http.Body;
@@ -30,7 +31,7 @@ public interface DeckAPI {
Observable<Board> getBoard(@Path("id") long id, @Header(MODIFIED_SINCE_HEADER) String lastSync);
@GET("boards")
- Observable<List<Board>> getBoards(@Header(MODIFIED_SINCE_HEADER) String lastSync);
+ Observable<List<FullBoard>> getBoards(@Header(MODIFIED_SINCE_HEADER) String lastSync);
// ### Stacks
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI_SSO.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI_SSO.java
index e889ae2eb..babc46118 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI_SSO.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/DeckAPI_SSO.java
@@ -20,6 +20,7 @@ import it.niedermann.nextcloud.deck.model.Board;
import it.niedermann.nextcloud.deck.model.Card;
import it.niedermann.nextcloud.deck.model.Label;
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;
@@ -77,7 +78,7 @@ public class DeckAPI_SSO implements DeckAPI {
}
@Override
- public Observable<List<Board>> getBoards(String lastSync) {
+ public Observable<List<FullBoard>> getBoards(String lastSync) {
NextcloudRequest request = buildRequest(GET, "boards", lastSync).build();
return nextcloudAPI.performRequestObservable(TypeToken.getParameterized(List.class, Board.class).getType(), request);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java
index bf4ac2a3f..d372112aa 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java
@@ -7,8 +7,8 @@ import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;
-import it.niedermann.nextcloud.deck.model.Board;
import it.niedermann.nextcloud.deck.model.Label;
+import it.niedermann.nextcloud.deck.model.full.FullBoard;
import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.model.full.FullStack;
@@ -19,8 +19,8 @@ import it.niedermann.nextcloud.deck.model.full.FullStack;
public class GsonConfig {
public static Gson GetGson() {
- Type boardList = new TypeToken<List<Board>>() {}.getType();
- Type board = new TypeToken<Board>() {}.getType();
+ Type boardList = new TypeToken<List<FullBoard>>() {}.getType();
+ Type board = new TypeToken<FullBoard>() {}.getType();
Type cardList = new TypeToken<FullCard>() {}.getType();
Type card = new TypeToken<FullCard>() {}.getType();
Type labelList = new TypeToken<Label>() {}.getType();
@@ -30,8 +30,8 @@ public class GsonConfig {
return new GsonBuilder()
.setLenient()
- .registerTypeAdapter(boardList, new NextcloudArrayDeserializer<>("boards", Board.class))
- .registerTypeAdapter(board, new NextcloudArrayDeserializer<>("board", Board.class))
+ .registerTypeAdapter(boardList, new NextcloudArrayDeserializer<>("boards", FullBoard.class))
+ .registerTypeAdapter(board, new NextcloudArrayDeserializer<>("board", FullBoard.class))
.registerTypeAdapter(cardList, new NextcloudArrayDeserializer<>("cards", FullCard.class))
.registerTypeAdapter(card, new NextcloudDeserializer<>("card", FullCard.class))
.registerTypeAdapter(labelList, new NextcloudArrayDeserializer<>("labels", Label.class))
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java
index 62121a91a..9ce3ba9ff 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java
@@ -20,6 +20,7 @@ import it.niedermann.nextcloud.deck.model.Card;
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;
@@ -31,11 +32,11 @@ public class JsonToEntityParser {
}
protected static <T> T parseJsonObject(JsonObject obj, Class<T> mType) {
- if (mType == Board.class) {
+ if (mType == FullBoard.class) {
return (T) parseBoard(obj);
- } else if (mType == Card.class) {
+ } else if (mType == FullCard.class) {
return (T) parseCard(obj);
- } else if (mType == Stack.class) {
+ } else if (mType == FullStack.class) {
return (T) parseStack(obj);
} else if (mType == Label.class) {
return (T) parseLabel(obj);
@@ -44,12 +45,33 @@ public class JsonToEntityParser {
}
- protected static Board parseBoard(JsonObject e) {
+ protected static FullBoard parseBoard(JsonObject e) {
+ FullBoard fullBoard = new FullBoard();
+
DeckLog.log(e.toString());
Board board = new Board();
board.setTitle(getNullAsEmptyString(e.get("title")));
board.setId(e.get("id").getAsLong());
- return board;
+ fullBoard.setBoard(board);
+
+ if (e.has("labels") && !e.get("labels").isJsonNull()) {
+ JsonArray labelsJson = e.getAsJsonArray("labels");
+ List<Label> labels = new ArrayList<>();
+ for (JsonElement labelJson : labelsJson) {
+ labels.add(parseLabel(labelJson.getAsJsonObject()));
+ }
+ fullBoard.setLabels(labels);
+ }
+ //todo e.get "participants" / acl
+
+ JsonElement owner = e.get("owner");
+ if (owner != null) {
+ if (owner.isJsonPrimitive()) {//TODO: remove if, let only else!
+ Log.d(DeckConsts.DEBUG_TAG, "owner is Primitive, skipping");
+ } else
+ fullBoard.setOwner(parseUser(owner.getAsJsonObject()));
+ }
+ return fullBoard;
}
protected static FullCard parseCard(JsonObject e) {
@@ -74,8 +96,8 @@ public class JsonToEntityParser {
}
fullCard.setLabels(labels);
}
- //e.get "assignedUsers"
- //e.get "attachments"
+ //todo e.get "participants" / acl
+ //todo e.get "attachments"
card.setStackId(e.get("attachmentCount").getAsInt());
card.setOrder(e.get("order").getAsInt());
card.setOverdue(e.get("overdue").getAsInt());
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/model/full/FullBoard.java b/app/src/main/java/it/niedermann/nextcloud/deck/model/full/FullBoard.java
new file mode 100644
index 000000000..0e66e4027
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/model/full/FullBoard.java
@@ -0,0 +1,60 @@
+package it.niedermann.nextcloud.deck.model.full;
+
+import android.arch.persistence.room.Embedded;
+import android.arch.persistence.room.Ignore;
+import android.arch.persistence.room.Relation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.niedermann.nextcloud.deck.model.Board;
+import it.niedermann.nextcloud.deck.model.Label;
+import it.niedermann.nextcloud.deck.model.User;
+import it.niedermann.nextcloud.deck.model.interfaces.IRemoteEntity;
+
+public class FullBoard implements IRemoteEntity {
+ @Embedded
+ public Board board;
+
+ @Relation(entity = Label.class, parentColumn = "localId", entityColumn = "localId")
+ public List<Label> labels;
+
+ @Relation(parentColumn = "ownerId", entityColumn = "localId")
+ public List<User> owner;
+
+ @Relation(entity = User.class, parentColumn = "localId", entityColumn = "localId")
+ public List<User> participants;
+
+
+ public List<User> getOwner() {
+ return owner;
+ }
+
+ public void setOwner(User owner) {
+ List<User> user = new ArrayList<>();
+ user.add(owner);
+ this.owner = user;
+ }
+
+ public Board getBoard() {
+ return board;
+ }
+
+ public void setBoard(Board board) {
+ this.board = board;
+ }
+
+ public List<Label> getLabels() {
+ return labels;
+ }
+
+ public void setLabels(List<Label> labels) {
+ this.labels = labels;
+ }
+
+ @Ignore
+ @Override
+ public IRemoteEntity getEntity() {
+ return board;
+ }
+}
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));
}
}