diff options
author | desperateCoder <echotodevnull@gmail.com> | 2020-02-07 21:39:38 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2020-02-07 21:39:38 +0300 |
commit | ba0119589856c192840e07c5407ccb44d39a8013 (patch) | |
tree | 05c5f573d679629ad7da33c91fe704581264da28 | |
parent | 46310a7f6a227edd2170b7fc73617da2398c28c1 (diff) |
#211 attachments: order by modified desc, created desc
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); } |