--- /dev/null
+/*
+ * Copyright (c) 2017. Developed by Hedgecode.
+ *
+ * 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.hedgecode.snooker.json;
+
+import java.util.Date;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+import org.hedgecode.snooker.api.Event;
+import org.hedgecode.snooker.api.Season;
+
+/**
+ * Event Entity to JSON deserialize.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public class JsonEvent extends JsonIdEntity implements Event {
+
+ @SerializedName("ID")
+ private int eventId;
+ @SerializedName("Name")
+ private String name;
+ @SerializedName("StartDate")
+ private Date startDate;
+ @SerializedName("EndDate")
+ private Date endDate;
+ @SerializedName("Sponsor")
+ private String sponsor;
+ @SerializedName("Season")
+ private int seasonYear;
+ @Expose
+ private Season season;
+ @SerializedName("Type")
+ private String type;
+ @SerializedName("Num")
+ private int num;
+ @SerializedName("Venue")
+ private String venue;
+ @SerializedName("City")
+ private String city;
+ @SerializedName("Country")
+ private String country;
+ @SerializedName("Discipline")
+ private String discipline;
+ @SerializedName("Main")
+ private int mainEventId;
+ @Expose
+ private Event mainEvent;
+ @SerializedName("Sex")
+ private String sex;
+ @SerializedName("AgeGroup")
+ private String ageGroup;
+ @SerializedName("Url")
+ private String url;
+ @SerializedName("Related")
+ private String related;
+ @SerializedName("Stage")
+ private String stage;
+ @SerializedName("ValueType")
+ private String valueType;
+ @SerializedName("ShortName")
+ private String shortName;
+ @SerializedName("WorldSnookerId")
+ private int worldSnookerId;
+ @SerializedName("RankingType")
+ private String rankingType;
+ @SerializedName("EventPredictionID")
+ private int eventPredictionId;
+ @SerializedName("Team")
+ private boolean team;
+ @SerializedName("Format")
+ private int format;
+ @SerializedName("Twitter")
+ private String twitter;
+ @SerializedName("HashTag")
+ private String hashTag;
+ @SerializedName("ConversionRate")
+ private float conversionRate;
+ @SerializedName("AllRoundsAdded")
+ private boolean allRoundsAdded;
+ @SerializedName("PhotoURLs")
+ private String photoUrls;
+ @SerializedName("NumCompetitors")
+ private int numCompetitors;
+ @SerializedName("NumUpcoming")
+ private int numUpcoming;
+ @SerializedName("NumActive")
+ private int numActive;
+ @SerializedName("NumResults")
+ private int numResults;
+ @SerializedName("Note")
+ private String note;
+ @SerializedName("CommonNote")
+ private String commonNote;
+ @SerializedName("DefendingChampion")
+ private int defendingChampion;
+ @SerializedName("PreviousEdition")
+ private int previousEdition;
+
+ @Override
+ public int eventId() {
+ return eventId;
+ }
+
+ @Override
+ public String name() {
+ return name;
+ }
+
+ @Override
+ public Date startDate() {
+ return startDate;
+ }
+
+ @Override
+ public Date endDate() {
+ return endDate;
+ }
+
+ @Override
+ public String sponsor() {
+ return sponsor;
+ }
+
+ @Override
+ public Season season() {
+ if (season == null)
+ season = Season.getSeason(seasonYear);
+ return season;
+ }
+
+ @Override
+ public String type() {
+ return type;
+ }
+
+ @Override
+ public int num() {
+ return num;
+ }
+
+ @Override
+ public String venue() {
+ return venue;
+ }
+
+ @Override
+ public String city() {
+ return city;
+ }
+
+ @Override
+ public String country() {
+ return country;
+ }
+
+ @Override
+ public String discipline() {
+ return discipline;
+ }
+
+ @Override
+ public int mainEventId() {
+ return mainEventId;
+ }
+
+ @Override
+ public Event mainEvent() {
+ if (mainEvent == null && mainEventId == eventId)
+ mainEvent = this;
+ return mainEvent;
+ }
+
+ public void setMainEvent(Event event) {
+ if (event != null && eventId == event.eventId())
+ mainEvent = event;
+ }
+
+ @Override
+ public String sex() {
+ return sex;
+ }
+
+ @Override
+ public String ageGroup() {
+ return ageGroup;
+ }
+
+ @Override
+ public String url() {
+ return url;
+ }
+
+ @Override
+ public String related() {
+ return related;
+ }
+
+ @Override
+ public String stage() {
+ return stage;
+ }
+
+ @Override
+ public String valueType() {
+ return valueType;
+ }
+
+ @Override
+ public String shortName() {
+ return shortName;
+ }
+
+ @Override
+ public int worldSnookerId() {
+ return worldSnookerId;
+ }
+
+ @Override
+ public String rankingType() {
+ return rankingType;
+ }
+
+ @Override
+ public int eventPredictionId() {
+ return eventPredictionId;
+ }
+
+ @Override
+ public boolean team() {
+ return team;
+ }
+
+ @Override
+ public int format() {
+ return format;
+ }
+
+ @Override
+ public String twitter() {
+ return twitter;
+ }
+
+ @Override
+ public String hashTag() {
+ return hashTag;
+ }
+
+ @Override
+ public float conversionRate() {
+ return conversionRate;
+ }
+
+ @Override
+ public boolean allRoundsAdded() {
+ return allRoundsAdded;
+ }
+
+ @Override
+ public String photoUrls() {
+ return photoUrls;
+ }
+
+ @Override
+ public int numCompetitors() {
+ return numCompetitors;
+ }
+
+ @Override
+ public int numUpcoming() {
+ return numUpcoming;
+ }
+
+ @Override
+ public int numActive() {
+ return numActive;
+ }
+
+ @Override
+ public int numResults() {
+ return numResults;
+ }
+
+ @Override
+ public String note() {
+ return note;
+ }
+
+ @Override
+ public String commonNote() {
+ return commonNote;
+ }
+
+ @Override
+ public int defendingChampion() {
+ return defendingChampion;
+ }
+
+ @Override
+ public int previousEdition() {
+ return previousEdition;
+ }
+
+ @Override
+ public int getId() {
+ return eventId;
+ }
+
+}