// // 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.text.TextUtils; import org.json.JSONObject; /** * Community object describes a community. */ @SuppressWarnings("unused") public class VKApiCommunity extends VKApiOwner implements android.os.Parcelable, Identifiable { private final static String TYPE_GROUP = "group"; private final static String TYPE_PAGE = "page"; private final static String TYPE_EVENT = "event"; final static String PHOTO_50 = "http://vk.com/images/community_50.gif"; final static String PHOTO_100 = "http://vk.com/images/community_100.gif"; /** * Community name */ public String name; /** * Screen name of the community page (e.g. apiclub or club1). */ public String screen_name; /** * Whether the community is closed * @see {@link com.vk.sdk.api.model.VKApiCommunity.Status} */ public int is_closed; /** * Whether a user is the community manager */ public boolean is_admin; /** * Rights of the user * @see {@link AdminLevel} */ public int admin_level; /** * Whether a user is a community member */ public boolean is_member; /** * Community type * @see {@link com.vk.sdk.api.model.VKApiCommunity.Type} */ public int type; /** * URL of the 50px-wide community logo. */ public String photo_50; /** * URL of the 100px-wide community logo. */ public String photo_100; /** * URL of the 200px-wide community logo. */ public String photo_200; /** * {@link #photo_50}, {@link #photo_100}, {@link #photo_200} included here in Photo Sizes format. */ public VKPhotoSizes photo = new VKPhotoSizes(); public VKApiCommunity(JSONObject from) { parse(from); } /** * Fills a community object from JSONObject * @param from JSONObject describes community object according with VK Docs. */ public VKApiCommunity parse(JSONObject from) { super.parse(from); name = from.optString("name"); screen_name = from.optString("screen_name", String.format("club%d", Math.abs(id))); is_closed = from.optInt("is_closed"); is_admin = ParseUtils.parseBoolean(from, "is_admin"); admin_level = from.optInt("admin_level"); is_member = ParseUtils.parseBoolean(from, "is_member"); photo_50 = from.optString("photo_50", PHOTO_50); if(!TextUtils.isEmpty(photo_50)) { photo.add(VKApiPhotoSize.create(photo_50, 50)); } photo_100 = from.optString("photo_100", PHOTO_100); if(!TextUtils.isEmpty(photo_100)) { photo.add(VKApiPhotoSize.create(photo_100, 100)); } photo_200 = from.optString("photo_200", null); if(!TextUtils.isEmpty(photo_200)) { photo.add(VKApiPhotoSize.create(photo_200, 200)); } photo.sort(); String type = from.optString("type", "group"); if(TYPE_GROUP.equals(type)) { this.type = Type.GROUP; } else if(TYPE_PAGE.equals(type)) { this.type = Type.PAGE; } else if(TYPE_EVENT.equals(type)) { this.type = Type.EVENT; } return this; } /** * Creates a community object from Parcel */ public VKApiCommunity(Parcel in) { super(in); this.name = in.readString(); this.screen_name = in.readString(); this.is_closed = in.readInt(); this.is_admin = in.readByte() != 0; this.admin_level = in.readInt(); this.is_member = in.readByte() != 0; this.type = in.readInt(); this.photo_50 = in.readString(); this.photo_100 = in.readString(); this.photo_200 = in.readString(); this.photo = in.readParcelable(VKPhotoSizes.class.getClassLoader()); } /** * Creates empty Community instance. */ public VKApiCommunity() { } @Override public String toString() { return name; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeString(this.name); dest.writeString(this.screen_name); dest.writeInt(this.is_closed); dest.writeByte(is_admin ? (byte) 1 : (byte) 0); dest.writeInt(this.admin_level); dest.writeByte(is_member ? (byte) 1 : (byte) 0); dest.writeInt(this.type); dest.writeString(this.photo_50); dest.writeString(this.photo_100); dest.writeString(this.photo_200); dest.writeParcelable(this.photo, flags); } public static Creator<VKApiCommunity> CREATOR = new Creator<VKApiCommunity>() { public VKApiCommunity createFromParcel(Parcel source) { return new VKApiCommunity(source); } public VKApiCommunity[] newArray(int size) { return new VKApiCommunity[size]; } }; /** * Access level to manage community. */ public static class AdminLevel { private AdminLevel() {} public final static int MODERATOR = 1; public final static int EDITOR = 2; public final static int ADMIN = 3; } /** * Privacy status of the group. */ public static class Status { private Status() {} public final static int OPEN = 0; public final static int CLOSED = 1; public final static int PRIVATE = 2; } /** * Types of communities. */ public static class Type { private Type() {} public final static int GROUP = 0; public final static int PAGE = 1; public final static int EVENT = 2; } }