aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/models/PostStatus.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/models/PostStatus.java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/models/PostStatus.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/models/PostStatus.java b/WordPress/src/main/java/org/wordpress/android/models/PostStatus.java
new file mode 100644
index 000000000..192a273a4
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/models/PostStatus.java
@@ -0,0 +1,70 @@
+package org.wordpress.android.models;
+
+import java.util.Date;
+
+public enum PostStatus {
+ UNKNOWN,
+ PUBLISHED,
+ DRAFT,
+ PRIVATE,
+ PENDING,
+ TRASHED,
+ SCHEDULED; //NOTE: Only used locally, WP has a 'future' status but it is not returned from the metaWeblog API
+
+ private synchronized static PostStatus fromStringAndDateGMT(String value, long dateCreatedGMT) {
+ if (value == null) {
+ return PostStatus.UNKNOWN;
+ } else if (value.equals("publish")) {
+ // Check if post is scheduled
+ Date d = new Date();
+ // Subtract 10 seconds from the server GMT date, in case server and device time slightly differ
+ if (dateCreatedGMT - 10000 > d.getTime()) {
+ return SCHEDULED;
+ }
+ return PUBLISHED;
+ } else if (value.equals("draft")) {
+ return PostStatus.DRAFT;
+ } else if (value.equals("private")) {
+ return PostStatus.PRIVATE;
+ } else if (value.equals("pending")) {
+ return PENDING;
+ } else if (value.equals("trash")) {
+ return TRASHED;
+ } else if (value.equals("future")) {
+ return SCHEDULED;
+ } else {
+ return PostStatus.UNKNOWN;
+ }
+ }
+
+ public synchronized static PostStatus fromPost(Post post) {
+ String value = post.getPostStatus();
+ long dateCreatedGMT = post.getDate_created_gmt();
+ return fromStringAndDateGMT(value, dateCreatedGMT);
+ }
+
+ public synchronized static PostStatus fromPostsListPost(PostsListPost post) {
+ String value = post.getOriginalStatus();
+ long dateCreatedGMT = post.getDateCreatedGmt();
+ return fromStringAndDateGMT(value, dateCreatedGMT);
+ }
+
+ public static String toString(PostStatus status) {
+ switch (status) {
+ case PUBLISHED:
+ return "publish";
+ case DRAFT:
+ return "draft";
+ case PRIVATE:
+ return "private";
+ case PENDING:
+ return "pending";
+ case TRASHED:
+ return "trash";
+ case SCHEDULED:
+ return "future";
+ default:
+ return "";
+ }
+ }
+}