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>2020-02-07 21:39:38 +0300
committerdesperateCoder <echotodevnull@gmail.com>2020-02-07 21:39:38 +0300
commitba0119589856c192840e07c5407ccb44d39a8013 (patch)
tree05c5f573d679629ad7da33c91fe704581264da28
parent46310a7f6a227edd2170b7fc73617da2398c28c1 (diff)
#211 attachments: order by modified desc, created desc
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/model/Attachment.java38
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/model/full/FullCard.java9
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java3
3 files changed, 48 insertions, 2 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/model/Attachment.java b/app/src/main/java/it/niedermann/nextcloud/deck/model/Attachment.java
index 19732e894..a827413ff 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/model/Attachment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/model/Attachment.java
@@ -25,7 +25,7 @@ import it.niedermann.nextcloud.deck.model.interfaces.AbstractRemoteEntity;
)
}
)
-public class Attachment extends AbstractRemoteEntity {
+public class Attachment extends AbstractRemoteEntity implements Comparable<Attachment> {
private long cardId;
private String type = "deck_file";
@@ -211,4 +211,40 @@ public class Attachment extends AbstractRemoteEntity {
result = 31 * result + (localPath != null ? localPath.hashCode() : 0);
return result;
}
+
+ @Override
+ public int compareTo(Attachment other) {
+ // DESC order
+ long res = other.getModificationTimeForComparsion() - getModificationTimeForComparsion();
+ if (res == 0) {
+ return longToComparsionResult(other.getCreationTimeForComparsion() - getCreationTimeForComparsion());
+ }
+ return longToComparsionResult(res);
+ }
+
+ private static int longToComparsionResult(long diff) {
+ if (diff > 0) {
+ return 1;
+ } else if(diff < 0) {
+ return -1;
+ }
+ return 0;
+ }
+
+ public long getModificationTimeForComparsion() {
+ if (lastModifiedLocal != null) {
+ return lastModifiedLocal.getTime();
+ }
+ if (lastModified != null) {
+ return lastModified.getTime();
+ }
+ return new Date().getTime();
+ }
+
+ public long getCreationTimeForComparsion() {
+ if (createdAt != null) {
+ return createdAt.getTime();
+ }
+ return new Date().getTime();
+ }
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/model/full/FullCard.java b/app/src/main/java/it/niedermann/nextcloud/deck/model/full/FullCard.java
index f8d28597f..08fba79c9 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/model/full/FullCard.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/model/full/FullCard.java
@@ -6,6 +6,7 @@ import androidx.room.Junction;
import androidx.room.Relation;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import it.niedermann.nextcloud.deck.model.Attachment;
@@ -17,6 +18,10 @@ import it.niedermann.nextcloud.deck.model.User;
import it.niedermann.nextcloud.deck.model.interfaces.IRemoteEntity;
public class FullCard implements IRemoteEntity {
+
+ @Ignore
+ private transient boolean isAttachmentsSorted = false;
+
@Embedded
public Card card;
@@ -96,6 +101,10 @@ public class FullCard implements IRemoteEntity {
}
public List<Attachment> getAttachments() {
+ if (!isAttachmentsSorted){
+ Collections.sort(attachments);
+ isAttachmentsSorted = true;
+ }
return attachments;
}
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 087d53823..2b2661255 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
@@ -43,9 +43,9 @@ public class DataBaseAdapter {
}
private <T extends AbstractRemoteEntity> void markAsEditedIfNeeded(T entity, boolean setStatus) {
+ entity.setLastModifiedLocal(new Date()); // now.
if (!setStatus) return;
entity.setStatusEnum(DBStatus.LOCAL_EDITED);
- entity.setLastModifiedLocal(new Date()); // now.
}
private <T extends AbstractRemoteEntity> void markAsDeletedIfNeeded(T entity, boolean setStatus) {
@@ -495,6 +495,7 @@ public class DataBaseAdapter {
public long createAttachment(long accountId, Attachment attachment) {
attachment.setAccountId(accountId);
+ attachment.setCreatedAt(new Date());
return db.getAttachmentDao().insert(attachment);
}