package com.instructure.canvasapi.model;
import android.os.Parcel;
import com.instructure.canvasapi.utilities.APIHelpers;
import java.util.Date;
/**
* @author Brady Larson
*
* Copyright (c) 2014 Instructure. All rights reserved.
*/
public class Page extends CanvasModel<Page> {
private static final long serialVersionUID = 1L;
public static final String FRONT_PAGE_NAME = "front-page";
/* Example JSON response
*
* {
// the unique locator for the page
url: "my-page-title",
// the title of the page
title: "My Page Title",
// the creation date for the page
created_at: "2012-08-06T16:46:33-06:00",
// the date the page was last updated
updated_at: "2012-08-08T14:25:20-06:00",
// whether this page is hidden from students
// (note: students will never see this true; pages hidden from them will be omitted from results)
hide_from_students: false,
// the page content, in HTML
// (present when requesting a single page; omitted when listing pages)
body: "<p>Page Content</p>"
}
*/
private String url;
private long page_id;
private String title;
private String created_at;
private String updated_at;
private boolean hide_from_students;
private String status;
private String body;
private LockInfo lock_info;
private boolean front_page;
///////////////////////////////////////////////////////////////////////////
// Getters and Setters
///////////////////////////////////////////////////////////////////////////
public long getPageId() {
return page_id;
}
public void setPageId(long pageId) {
this.page_id = pageId;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Date getCreate_at() {
return APIHelpers.stringToDate(created_at);
}
public void setCreate_at(Date create_at) {
this.created_at = APIHelpers.dateToString(create_at);
}
public Date getUpdated_at() {
return APIHelpers.stringToDate(updated_at);
}
public void setUpdated_at(Date updated_at) {
this.created_at = APIHelpers.dateToString(updated_at);
}
public boolean isHide_from_students() {
return hide_from_students || (status != null && status.equalsIgnoreCase("unauthorized"));
}
public void setHide_from_students(boolean hide_from_students) {
this.hide_from_students = hide_from_students;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
//During parsing, GSON will try. Which means sometimes we get 'empty' objects
//They're non-null, but don't have any information.
public LockInfo getLockInfo() {
//Check for null or empty lock info.
if(lock_info == null || lock_info.isEmpty()){
return null;
}
return lock_info;
}
public void setLockInfo(LockInfo lockInfo) {
this.lock_info = lockInfo;
}
public boolean isFrontPage(){
return front_page;
}
///////////////////////////////////////////////////////////////////////////
// Required Overrides
///////////////////////////////////////////////////////////////////////////
public Date getComparisonDate() { return getCreate_at(); }
public String getComparisonString() { return title; }
///////////////////////////////////////////////////////////////////////////
// Constructors
///////////////////////////////////////////////////////////////////////////
public Page() {}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Page page = (Page) o;
if (url != null ? !url.equals(page.url) : page.url != null) return false;
return true;
}
@Override
public long getId() {
return getPageId();
}
@Override
public int hashCode() {
return url != null ? url.hashCode() : 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.url);
dest.writeString(this.title);
dest.writeString(this.created_at);
dest.writeString(this.updated_at);
dest.writeByte(hide_from_students ? (byte) 1 : (byte) 0);
dest.writeString(this.status);
dest.writeString(this.body);
dest.writeParcelable(this.lock_info, flags);
dest.writeByte(front_page ? (byte) 1 : (byte) 0);
}
private Page(Parcel in) {
this.url = in.readString();
this.title = in.readString();
this.created_at = in.readString();
this.updated_at = in.readString();
this.hide_from_students = in.readByte() != 0;
this.status = in.readString();
this.body = in.readString();
this.lock_info = in.readParcelable(LockInfo.class.getClassLoader());
this.front_page = in.readByte() != 0;
}
public static Creator<Page> CREATOR = new Creator<Page>() {
public Page createFromParcel(Parcel source) {
return new Page(source);
}
public Page[] newArray(int size) {
return new Page[size];
}
};
}