package com.instructure.canvasapi.model; import android.os.Parcel; import android.os.Parcelable; import com.google.gson.annotations.SerializedName; import java.util.Date; import java.util.HashMap; /** * Created by Josh Ruesch * * Copyright (c) 2014 Instructure. All rights reserved. */ public class Recipient extends CanvasComparable<Recipient>{ public enum Type {group, metagroup, person} private String id; private int user_count; private int item_count; private String name; private String avatar_url; @SerializedName("common_courses") private HashMap<String, String[]> commonCourses; @SerializedName("common_groups") private HashMap<String, String[]> commonGroups; /////////////////////////////////////////////////////////////////////////// // Getters /////////////////////////////////////////////////////////////////////////// public String getStringId(){ return id; } public long getIdAsLong(){ try{ if(id.startsWith("group_") || id.startsWith("course_")){ int indexUnder = id.indexOf("_"); return Long.parseLong(id.substring(indexUnder+1, id.length())); } return Long.parseLong(id); }catch(NumberFormatException ex){ return 0; } } public HashMap<String, String[]> getCommonCourses() { return commonCourses; } public void setCommonCourses(HashMap<String, String[]> commonCourses) { this.commonCourses = commonCourses; } public HashMap<String, String[]> getCommonGroups() { return commonGroups; } public void setCommonGroups(HashMap<String, String[]> commonGroups) { this.commonGroups = commonGroups; } @Override public Date getComparisonDate() { return null; } @Override public String getComparisonString() { return id; } public int getUser_count() { return user_count; } public String getName() { return name; } public Type getRecipientType() { try{ long tempId = Long.parseLong(id); return Type.person; } catch(Exception E){} if(user_count > 0){ return Type.group; } return Type.metagroup; } public int getItemCount() { return item_count; } public String getAvatarURL() { return avatar_url; } public void setAvatarURL(String avatar) { this.avatar_url = avatar; } /////////////////////////////////////////////////////////////////////////// // Parcelable /////////////////////////////////////////////////////////////////////////// public Recipient(Parcel p) { readFromParcel(p); } public Recipient(String _id, String _name, int _userCount, int _itemCount, int _enum) { id = _id; name = _name; user_count = _userCount; item_count = _itemCount; } public static final Parcelable.Creator<Recipient> CREATOR = new Parcelable.Creator<Recipient>() { public Recipient createFromParcel(Parcel in) { return new Recipient(in); } public Recipient[] newArray(int size) { return new Recipient[size]; } }; public static int recipientTypeToInt(Type t) { if(t == Type.group) return 0; else if (t == Type.metagroup) return 1; else if (t == Type.person) return 2; else return -1; } public static Type intToRecipientType(int i) { if(i == 0) return Type.group; else if (i == 1) return Type.metagroup; else if (i == 2) return Type.person; else return null; } public void readFromParcel(Parcel in){ id = in.readString(); user_count = in.readInt(); item_count = in.readInt(); name = in.readString(); commonCourses = (HashMap<String, String[]>) in.readSerializable(); commonGroups = (HashMap<String, String[]>) in.readSerializable(); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(id); dest.writeInt(user_count); dest.writeInt(item_count); dest.writeString(name); dest.writeSerializable(commonCourses); dest.writeSerializable(commonGroups); } /////////////////////////////////////////////////////////////////////////// // Overrides /////////////////////////////////////////////////////////////////////////// @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); return result; } @Override public boolean equals(Object obj) { if (getClass() != obj.getClass()) { return false; } Recipient other = (Recipient) obj; return compareTo(other) == 0; } @Override public String toString(){ return name; } }