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 ""; } } }