/* * Copyright 2013-2015 The GDG Frisbee Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.gdg.frisbee.android.api.model; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.VisibleForTesting; import com.google.gson.annotations.SerializedName; import java.util.ArrayList; public class Chapter implements Comparable<Chapter>, Parcelable { public static final Creator<Chapter> CREATOR = new Creator<Chapter>() { @Override public Chapter createFromParcel(Parcel in) { return new Chapter(in); } @Override public Chapter[] newArray(int size) { return new Chapter[size]; } }; private String status, city, name, state; private Country country; @SerializedName("_id") private String gplusId; private ArrayList<String> organizers; private Geo geo; private String shortName; public Chapter(String gplusId) { this("", gplusId); } public Chapter(String name, String gplusId) { this.name = name; this.gplusId = gplusId; organizers = new ArrayList<>(); } protected Chapter(Parcel in) { name = in.readString(); status = in.readString(); city = in.readString(); gplusId = in.readString(); state = in.readString(); country = in.readParcelable(Country.class.getClassLoader()); organizers = in.createStringArrayList(); geo = in.readParcelable(Geo.class.getClassLoader()); shortName = in.readString(); } public ArrayList<String> getOrganizers() { return organizers; } public String getStatus() { return status; } public String getCity() { return city; } public String getName() { return name; } public String getGplusId() { return gplusId; } public String getState() { return state; } public Country getCountry() { return country; } public Geo getGeo() { return geo; } @VisibleForTesting public void setGeo(Geo geo) { this.geo = geo; } @Override public String toString() { return getShortName(); } public String getShortName() { if (shortName == null) { shortName = name.replaceAll("GDG ", "").trim(); } return shortName; } @Override public int compareTo(Chapter o) { return getShortName().compareTo(o.getShortName()); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeString(status); dest.writeString(city); dest.writeString(gplusId); dest.writeString(state); dest.writeParcelable(country, flags); dest.writeStringList(organizers); dest.writeParcelable(geo, flags); dest.writeString(shortName); } @Override public boolean equals(Object o) { if (o == null) { return false; } if (o instanceof Chapter) { Chapter other = (Chapter) o; return other.getGplusId().equals(getGplusId()); } return false; } @Override public int hashCode() { if (getGplusId() != null) { return getGplusId().hashCode(); } else { return super.hashCode(); } } }