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
diff options
context:
space:
mode:
authordesperateCoder <echotodevnull@gmail.com>2023-04-13 16:51:09 +0300
committerdesperateCoder <echotodevnull@gmail.com>2024-01-03 16:12:53 +0300
commitd059a8b9c2ad7ec4421719195fd8b8650caa2d89 (patch)
tree1a1ff2f1f1e740fcb8fc3e6cb28aa10da0e10825 /app/src/main/java/it/niedermann/nextcloud/deck/remote
parent57b3f7568ac1afc687eb1e7b07b9012551d748c0 (diff)
import boards sequentially
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/remote')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/SyncHelper.java33
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/providers/BoardDataProvider.java26
2 files changed, 58 insertions, 1 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/SyncHelper.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/SyncHelper.java
index 846c7cf0e..7f5d166d9 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/SyncHelper.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/SyncHelper.java
@@ -1,5 +1,7 @@
package it.niedermann.nextcloud.deck.remote.helpers;
+import android.annotation.SuppressLint;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -43,6 +45,9 @@ public class SyncHelper {
// Sync Server -> App
public <T extends IRemoteEntity> void doSyncFor(@NonNull final AbstractSyncDataProvider<T> provider) {
+ doSyncFor(provider, true);
+ }
+ public <T extends IRemoteEntity> void doSyncFor(@NonNull final AbstractSyncDataProvider<T> provider, boolean parallel) {
provider.registerChildInParent(provider);
provider.getAllFromServer(serverAdapter, dataBaseAdapter, accountId, new ResponseCallback<>(account) {
@Override
@@ -74,7 +79,33 @@ public class SyncHelper {
}
}
existingEntity = provider.getSingleFromDB(dataBaseAdapter, accountId, entityFromServer);
- provider.goDeeper(SyncHelper.this, existingEntity, entityFromServer, responseCallback);
+ final T tmp = existingEntity;
+ if (parallel) {
+ provider.goDeeper(SyncHelper.this, existingEntity, entityFromServer, responseCallback);
+ } else {
+ DeckLog.verbose("### SYNC Sequencial!"+tmp.getId());
+ CountDownLatch latch = new CountDownLatch(1);
+ provider.goDeeper(SyncHelper.this, existingEntity, entityFromServer, new ResponseCallback<>(responseCallback.getAccount()) {
+ @Override
+ public void onResponse(Boolean response) {
+ DeckLog.verbose("### SYNC board "+tmp.getId()+" done! Changes: "+response);
+ latch.countDown();
+ }
+
+ @SuppressLint("MissingSuperCall")
+ @Override
+ public void onError(Throwable throwable) {
+ DeckLog.verbose("### SYNC board done (error)! ");
+ responseCallback.onError(throwable);
+ latch.countDown();
+ }
+ });
+ try {
+ latch.await();
+ } catch (InterruptedException e) {
+ onError(e);
+ }
+ }
}
provider.handleDeletes(serverAdapter, dataBaseAdapter, accountId, response);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/providers/BoardDataProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/providers/BoardDataProvider.java
index c391fed4c..cae7d0dce 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/providers/BoardDataProvider.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/helpers/providers/BoardDataProvider.java
@@ -30,8 +30,11 @@ public class BoardDataProvider extends AbstractSyncDataProvider<FullBoard> {
private int progressTotal = 0;
private int progressDone = 0;
+ private boolean isParallel = true;
private MutableLiveData<Pair<Integer, Integer>> progress = null;
+ private ResponseCallback<Boolean> stepByStepCallback;
+
public BoardDataProvider() {
super(null);
}
@@ -39,6 +42,12 @@ public class BoardDataProvider extends AbstractSyncDataProvider<FullBoard> {
public BoardDataProvider(MutableLiveData<Pair<Integer, Integer>> progress) {
this();
this.progress = progress;
+
+ }
+
+ public BoardDataProvider(MutableLiveData<Pair<Integer, Integer>> progress$, boolean isParallel) {
+ this(progress$);
+ this.isParallel = isParallel;
}
@Override
@@ -161,6 +170,9 @@ public class BoardDataProvider extends AbstractSyncDataProvider<FullBoard> {
@Override
public void goDeeper(SyncHelper syncHelper, FullBoard existingEntity, FullBoard entityFromServer, ResponseCallback<Boolean> callback) {
+ if (!isParallel) {
+ stepByStepCallback = callback;
+ }
List<Label> labels = entityFromServer.getLabels();
if (labels != null && !labels.isEmpty()) {
syncHelper.doSyncFor(new LabelDataProvider(this, existingEntity.getBoard(), labels));
@@ -176,6 +188,20 @@ public class BoardDataProvider extends AbstractSyncDataProvider<FullBoard> {
if (entityFromServer.getStacks() != null && !entityFromServer.getStacks().isEmpty()) {
syncHelper.doSyncFor(new StackDataProvider(this, existingEntity));
+ }
+}
+
+ @Override
+ public void childDone(AbstractSyncDataProvider<?> child, ResponseCallback<Boolean> responseCallback, boolean syncChangedSomething) {
+ removeChild(child);
+ if (!stillGoingDeeper && children.isEmpty()) {
+ if (parent != null) {
+ parent.childDone(this, responseCallback, syncChangedSomething);
+ } else {
+ responseCallback.onResponse(syncChangedSomething);
+ }
+ } else if (!isParallel && children.isEmpty()) {
+ stepByStepCallback.onResponse(syncChangedSomething);
}
}