package com.instructure.canvasapi.model; import android.os.Parcel; import com.google.gson.annotations.SerializedName; import com.instructure.canvasapi.utilities.APIHelpers; import java.util.Date; /** * @author Brady Larson * * Copyright (c) 2014 Instructure. All rights reserved. */ public class FileFolder extends CanvasModel<FileFolder>{ // Common Attributes private long id; private String created_at; private String updated_at; private String unlock_at; private String lock_at; private boolean locked; private boolean hidden; private boolean locked_for_user; private boolean hidden_for_user; // File Attributes private long folder_id; private long size; @SerializedName("content-type") private String content_type; private String url; private String display_name; private String thumbnail_url; private LockInfo lock_info; // Folder Attributes private long parent_folder_id; private long context_id; private int files_count; private int position; private int folders_count; private String context_type; private String name; private String folders_url; private String files_url; private String full_name; /////////////////////////////////////////////////////////////////////////// // Getters and Setters /////////////////////////////////////////////////////////////////////////// // Common @Override public long getId() { return id; } public void setId(long id) { this.id = id; } public Date getCreatedAt() { return APIHelpers.stringToDate(created_at); } public void setCreatedAt(Date created_at) { this.created_at = APIHelpers.dateToString(created_at); } public Date getUpdatedAt() { return APIHelpers.stringToDate(updated_at); } public void setUpdatedAt(Date updated_at) { this.updated_at = APIHelpers.dateToString(updated_at); } public Date getUnlockAt() { return APIHelpers.stringToDate(unlock_at); } public void setUnlockAt(Date unlock_at) { this.unlock_at = APIHelpers.dateToString(unlock_at); } public Date getLockAt(){ return APIHelpers.stringToDate(lock_at); } public void setLockAt(Date lock_at){ this.lock_at = APIHelpers.dateToString(lock_at); } public boolean isLocked() { return locked; } public void setLocked(boolean locked) { this.locked = locked; } public boolean isHidden() { return hidden; } public void setHidden(boolean hidden) { this.hidden = hidden; } public boolean isLockedForUser() { return locked_for_user; } public void setLockedForUser(boolean locked_for_user) { this.locked_for_user = locked_for_user; } public boolean isHiddenForUser() { return hidden_for_user; } public void setHiddenForUser(boolean hidden_for_user) { this.hidden_for_user = hidden_for_user; } // Files public long getFolderId(){ return this.folder_id; } public void setFolderId(long folderId){ this.folder_id = folderId; } public long getSize() { return size; } public void setSize(long size) { this.size = size; } public String getContentType() { return content_type; } public void setContentType(String content_type) { this.content_type = content_type; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getDisplayName() { return display_name; } public void setDisplayName(String display_name) { this.display_name = display_name; } public String getThumbnailUrl(){ return this.thumbnail_url; } public void setThumbnailUrl(String thumbnailUrl){ this.thumbnail_url = thumbnailUrl; } public LockInfo getLockInfo() { return (lock_info == null || lock_info.isEmpty()) ? null : lock_info; } public void setLockInfo(LockInfo lockInfo) { this.lock_info = lockInfo; } // Folders public String getContextType() { return context_type; } public void setContextType(String context_type) { this.context_type = context_type; } public long getContextId() { return context_id; } public void setContextId(long context_id) { this.context_id = context_id; } public int getFilesCount() { return files_count; } public void setFilesCount(int files_count) { this.files_count = files_count; } public int getPosition() { return position; } public void setPosition(int position) { this.position = position; } public int getFolders_count() { return folders_count; } public void setFoldersCount(int folders_count) { this.folders_count = folders_count; } public String getName() { return name; } public void setName(String name) { this.name = name; } public long getParentFolderId() { return parent_folder_id; } public void setParentFolderId(long parent_folder_id) { this.parent_folder_id = parent_folder_id; } public String getFoldersUrl() { return folders_url; } public void setFoldersUrl(String folders_url) { this.folders_url = folders_url; } public String getFilesUrl() { return files_url; } public void setFilesUrl(String files_url) { this.files_url = files_url; } public String getFullName() { return full_name; } public void setFullName(String full_name) { this.full_name = full_name; } /////////////////////////////////////////////////////////////////////////// // Required Overrides /////////////////////////////////////////////////////////////////////////// @Override public Date getComparisonDate() { return null;} @Override public String getComparisonString() {return null;} // we override compareTo instead of using Canvas Comparable methods @Override public int compareTo(FileFolder other) { // folders go before files // this is a folder and other is a file if (getFullName() != null && other.getFullName() == null) { return -1; } // this is a file and other is a folder else if (getFullName() == null && other.getFullName() != null) { return 1; } // both are folders if (getFullName() != null && other.getFullName() != null) { return getFullName().compareTo(other.getFullName()); } // both are files return getDisplayName().compareTo(other.getDisplayName()); } /////////////////////////////////////////////////////////////////////////// // Constructors /////////////////////////////////////////////////////////////////////////// public FileFolder() {} private FileFolder(Parcel in) { this.size = in.readLong(); this.content_type = in.readString(); this.url = in.readString(); this.display_name = in.readString(); this.context_type = in.readString(); this.context_id = in.readLong(); this.files_count = in.readInt(); this.position = in.readInt(); this.folders_count = in.readInt(); this.name = in.readString(); this.parent_folder_id = in.readLong(); this.folders_url = in.readString(); this.files_url = in.readString(); this.full_name = in.readString(); this.id = in.readLong(); this.created_at = in.readString(); this.updated_at = in.readString(); this.unlock_at = in.readString(); this.locked = in.readByte() != 0; this.hidden = in.readByte() != 0; this.lock_at = in.readString(); this.locked_for_user = in.readByte() != 0; this.hidden_for_user = in.readByte() != 0; this.lock_info = in.readParcelable(LockInfo.class.getClassLoader()); this.folder_id = in.readLong(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeLong(this.size); dest.writeString(this.content_type); dest.writeString(this.url); dest.writeString(this.display_name); dest.writeString(this.context_type); dest.writeLong(this.context_id); dest.writeInt(this.files_count); dest.writeInt(this.position); dest.writeInt(this.folders_count); dest.writeString(this.name); dest.writeLong(this.parent_folder_id); dest.writeString(this.folders_url); dest.writeString(this.files_url); dest.writeString(this.full_name); dest.writeLong(this.id); dest.writeString(this.created_at); dest.writeString(this.updated_at); dest.writeString(this.unlock_at); dest.writeByte(locked ? (byte) 1 : (byte) 0); dest.writeByte(hidden ? (byte) 1 : (byte) 0); dest.writeString(this.lock_at); dest.writeByte(locked_for_user ? (byte) 1 : (byte) 0); dest.writeByte(hidden_for_user ? (byte) 1 : (byte) 0); dest.writeParcelable(this.lock_info,flags); dest.writeLong(this.folder_id); } public static Creator<FileFolder> CREATOR = new Creator<FileFolder>() { public FileFolder createFromParcel(Parcel source) { return new FileFolder(source); } public FileFolder[] newArray(int size) { return new FileFolder[size]; } }; }