// // Copyright (c) 2014 VK.com // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in // the Software without restriction, including without limitation the rights to // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of // the Software, and to permit persons to whom the Software is furnished to do so, // subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // package com.vk.sdk.api.model; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import org.json.JSONException; import org.json.JSONObject; import static com.vk.sdk.api.model.VKAttachments.TYPE_DOC; import static com.vk.sdk.api.model.VKAttachments.VKApiAttachment; /** * A document object describes a document file. */ @SuppressWarnings("unused") public class VKApiDocument extends VKApiAttachment implements Parcelable, Identifiable { /** * Document ID. */ public int id; /** * ID of the user or group who uploaded the document. */ public int owner_id; /** * Document title. */ public String title; /** * Document size (in bytes). */ public long size; /** * Document extension. */ public String ext; /** * Document URL for downloading. */ public String url; /** * URL of the 100x75px image (if the file is graphical). */ public String photo_100; /** * URL of the 130x100px image (if the file is graphical). */ public String photo_130; /** * Array of all photos. */ public VKPhotoSizes photo = new VKPhotoSizes(); /** * An access key using for get information about hidden objects. */ public String access_key; private boolean mIsGif; private boolean mIsImage; public VKApiDocument(JSONObject from) throws JSONException { parse(from); } /** * Fills a Doc instance from JSONObject. */ public VKApiDocument parse(JSONObject jo) { id = jo.optInt("id"); owner_id = jo.optInt("owner_id"); title = jo.optString("title"); size = jo.optLong("size"); ext = jo.optString("ext"); url = jo.optString("url"); access_key = jo.optString("access_key"); photo_100 = jo.optString("photo_100"); if(!TextUtils.isEmpty(photo_100)) { photo.add(VKApiPhotoSize.create(photo_100, 100, 75)); } photo_130 = jo.optString("photo_130"); if(!TextUtils.isEmpty(photo_130)) { photo.add(VKApiPhotoSize.create(photo_130, 130, 100)); } photo.sort(); return this; } /** * Creates a Doc instance from Parcel. */ public VKApiDocument(Parcel in) { this.id = in.readInt(); this.owner_id = in.readInt(); this.title = in.readString(); this.size = in.readLong(); this.ext = in.readString(); this.url = in.readString(); this.photo_100 = in.readString(); this.photo_130 = in.readString(); this.photo = in.readParcelable(VKPhotoSizes.class.getClassLoader()); this.access_key = in.readString(); this.mIsImage = in.readByte() != 0; this.mIsGif = in.readByte() != 0; } /** * Creates empty Doc instance. */ public VKApiDocument() { } public boolean isImage() { mIsImage = mIsImage || "jpg".equals(ext) || "jpeg".equals(ext) || "png".equals(ext) || "bmp".equals(ext); return mIsImage; } public boolean isGif() { mIsGif = mIsGif || "gif".equals(ext); return mIsGif; } @Override public int getId() { return id; } @Override public String toString() { return title; } @Override public CharSequence toAttachmentString() { StringBuilder result = new StringBuilder(TYPE_DOC).append(owner_id).append('_').append(id); if(!TextUtils.isEmpty(access_key)) { result.append('_'); result.append(access_key); } return result; } @Override public String getType() { return TYPE_DOC; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.id); dest.writeInt(this.owner_id); dest.writeString(this.title); dest.writeLong(this.size); dest.writeString(this.ext); dest.writeString(this.url); dest.writeString(this.photo_100); dest.writeString(this.photo_130); dest.writeParcelable(this.photo, flags); dest.writeString(this.access_key); dest.writeByte(mIsImage ? (byte) 1 : (byte) 0); dest.writeByte(mIsGif ? (byte) 1 : (byte) 0); } public static Creator<VKApiDocument> CREATOR = new Creator<VKApiDocument>() { public VKApiDocument createFromParcel(Parcel source) { return new VKApiDocument(source); } public VKApiDocument[] newArray(int size) { return new VKApiDocument[size]; } }; }