package org.wordpress.android.models;
import java.util.List;
import java.util.Vector;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.wordpress.android.WordPress;
import org.wordpress.android.util.StringUtils;
public class Post implements Postable {
private long id;
private int blogID;
private String categories;
private String custom_fields;
private long dateCreated;
private long date_created_gmt;
private String description;
private String link;
private boolean mt_allow_comments;
private boolean mt_allow_pings;
private String mt_excerpt;
private String mt_keywords;
private String mt_text_more;
private String permaLink;
private String post_status;
private String postid;
private String title;
private String userid;
private String wp_author_display_name;
private String wp_author_id;
private String wp_password;
private String wp_post_format;
private String wp_slug;
private boolean localDraft;
private boolean uploaded;
private double latitude;
private double longitude;
private boolean isPage;
private boolean isLocalChange;
private String mediaPaths;
private String quickPostType;
private Blog blog;
public List<String> imageUrl = new Vector<String>();
List<String> selectedCategories = new Vector<String>();
public Post(int blog_id, long post_id, boolean isPage) {
// load an existing post
List<Object> postVals = WordPress.wpDB.loadPost(blog_id, isPage,
post_id);
if (postVals != null) {
try {
this.blog = new Blog(blog_id);
} catch (Exception e) {
}
this.id = (Long) postVals.get(0);
this.blogID = blog_id;
if (postVals.get(2) != null)
this.postid = postVals.get(2).toString();
this.title = postVals.get(3).toString();
this.dateCreated = (Long) postVals.get(4);
this.date_created_gmt = (Long) postVals.get(5);
this.categories = postVals.get(6).toString();
this.custom_fields = postVals.get(7).toString();
this.description = postVals.get(8).toString();
this.link = postVals.get(9).toString();
this.mt_allow_comments = (Integer) postVals.get(10) > 0;
this.mt_allow_pings = (Integer) postVals.get(11) > 0;
this.mt_excerpt = postVals.get(12).toString();
this.mt_keywords = postVals.get(13).toString();
if (postVals.get(14) != null)
this.mt_text_more = postVals.get(14).toString();
else
this.mt_text_more = "";
this.permaLink = postVals.get(15).toString();
this.post_status = postVals.get(16).toString();
this.userid = postVals.get(17).toString();
this.wp_author_display_name = postVals.get(18).toString();
this.wp_author_id = postVals.get(19).toString();
this.wp_password = postVals.get(20).toString();
this.wp_post_format = postVals.get(21).toString();
this.wp_slug = postVals.get(22).toString();
this.mediaPaths = postVals.get(23).toString();
this.latitude = (Double) postVals.get(24);
this.longitude = (Double) postVals.get(25);
this.localDraft = (Integer) postVals.get(26) > 0;
this.uploaded = (Integer) postVals.get(27) > 0;
this.isPage = (Integer) postVals.get(28) > 0;
this.isLocalChange = (Integer) postVals.get(29) > 0;
} else {
this.id = -1;
}
}
public Post(int blog_id, String title, String content, String excerpt,
String picturePaths, long date, String categories, String tags,
String status, String password, double latitude, double longitude,
boolean isPage, String postFormat, boolean createBlogReference,
boolean isLocalChange) {
// create a new post
if (createBlogReference) {
try {
this.blog = new Blog(blog_id);
} catch (Exception e) {
e.printStackTrace();
}
}
this.blogID = blog_id;
this.title = title;
this.description = content;
this.mt_excerpt = excerpt;
this.mediaPaths = picturePaths;
this.date_created_gmt = date;
this.categories = categories;
this.mt_keywords = tags;
this.post_status = status;
this.wp_password = password;
this.isPage = isPage;
this.wp_post_format = postFormat;
this.latitude = latitude;
this.longitude = longitude;
this.isLocalChange = isLocalChange;
}
public long getId() {
return id;
}
@Override
public int getType() {
return isPage ? TYP_PAGE : TYP_POST;
}
public long getDateCreated() {
return dateCreated;
}
public void setDateCreated(long dateCreated) {
this.dateCreated = dateCreated;
}
public long getDate_created_gmt() {
return date_created_gmt;
}
public void setDate_created_gmt(long dateCreatedGmt) {
date_created_gmt = dateCreatedGmt;
}
public int getBlogID() {
return blogID;
}
public void setBlogID(int blogID) {
this.blogID = blogID;
}
public boolean isLocalDraft() {
return localDraft;
}
public void setLocalDraft(boolean localDraft) {
this.localDraft = localDraft;
}
public JSONArray getJSONCategories() {
JSONArray jArray = null;
if (categories == null)
categories = "";
try {
categories = StringUtils.unescapeHTML(categories);
jArray = new JSONArray(categories);
} catch (JSONException e) {
Log.e("WordPress - getJSONCategories", e.getLocalizedMessage());
}
return jArray;
}
public void setJSONCategories(JSONArray categories) {
this.categories = categories.toString();
}
public JSONArray getCustom_fields() {
JSONArray jArray = null;
try {
jArray = new JSONArray(custom_fields);
} catch (JSONException e) {
e.printStackTrace();
}
return jArray;
}
public void setCustom_fields(JSONArray customFields) {
custom_fields = customFields.toString();
}
@Override
public String getContent() {
return description;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public boolean allowComments() {
return mt_allow_comments;
}
public void setMt_allow_comments(boolean mtAllowComments) {
mt_allow_comments = mtAllowComments;
}
public boolean isMt_allow_pings() {
return mt_allow_pings;
}
public void setMt_allow_pings(boolean mtAllowPings) {
mt_allow_pings = mtAllowPings;
}
public String getExcerpt() {
return mt_excerpt;
}
public void setExcerpt(String mtExcerpt) {
mt_excerpt = mtExcerpt;
}
public String getMt_keywords() {
if (mt_keywords == null)
return "";
else
return mt_keywords;
}
public void setMt_keywords(String mtKeywords) {
mt_keywords = mtKeywords;
}
public String getMt_text_more() {
if (mt_text_more == null)
return "";
else
return mt_text_more;
}
public void setMt_text_more(String mtTextMore) {
mt_text_more = mtTextMore;
}
public String getPermaLink() {
return permaLink;
}
public void setPermaLink(String permaLink) {
this.permaLink = permaLink;
}
public String getPostStatus() {
return post_status;
}
public void setPost_status(String postStatus) {
post_status = postStatus;
}
public String getPostId() {
return postid;
}
public void setPostid(String postid) {
this.postid = postid;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getWP_author_display_name() {
return wp_author_display_name;
}
public void setWP_author_display_name(String wpAuthorDisplayName) {
wp_author_display_name = wpAuthorDisplayName;
}
public String getWP_author_id() {
return wp_author_id;
}
public void setWP_author_id(String wpAuthorId) {
wp_author_id = wpAuthorId;
}
public String getPassword() {
return wp_password;
}
public void setWP_password(String wpPassword) {
wp_password = wpPassword;
}
public String getPostFormat() {
return wp_post_format;
}
public void setWP_post_form(String wpPostForm) {
wp_post_format = wpPostForm;
}
public String getWP_slug() {
return wp_slug;
}
public void setWP_slug(String wpSlug) {
wp_slug = wpSlug;
}
public String getMediaPaths() {
return mediaPaths;
}
public void setMediaPaths(String mediaPaths) {
this.mediaPaths = mediaPaths;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public boolean isPage() {
return isPage;
}
public void setPage(boolean isPage) {
this.isPage = isPage;
}
public boolean isUploaded() {
return uploaded;
}
public void setUploaded(boolean uploaded) {
this.uploaded = uploaded;
}
public boolean isLocalChange() {
return isLocalChange;
}
public void setLocalChange(boolean isLocalChange) {
this.isLocalChange = isLocalChange;
}
public boolean save() {
long newPostID = WordPress.wpDB.savePost(this, this.blogID);
if (newPostID >= 0 && this.isLocalDraft() && !this.isUploaded()) {
this.id = newPostID;
return true;
}
return false;
}
public boolean update() {
int success = WordPress.wpDB.updatePost(this, this.blogID);
return success > 0;
}
public void delete() {
// deletes a post/page draft
WordPress.wpDB.deletePost(this);
}
public void deleteMediaFiles() {
WordPress.wpDB.deleteMediaFilesForPost(this);
}
public void setId(long id) {
this.id = id;
}
public void setQuickPostType(String type) {
this.quickPostType = type;
}
public Blog getBlog() {
return blog;
}
public void setBlog(Blog blog) {
this.blog = blog;
}
public String getQuickPostType() {
return quickPostType;
}
}