[LIB-5] Collection empty objects,reporting and serializable
[snooker-score-api.git] / src / main / java / org / hedgecode / snooker / json / JsonEvent.java
1 /*
2  * Copyright (c) 2017. Developed by Hedgecode.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.hedgecode.snooker.json;
18
19 import java.util.Date;
20
21 import com.google.gson.annotations.Expose;
22 import com.google.gson.annotations.SerializedName;
23
24 import org.hedgecode.snooker.api.Event;
25 import org.hedgecode.snooker.api.Season;
26
27 /**
28  * Event Entity to JSON deserialize.
29  *
30  * @author Dmitry Samoshin aka gotty
31  */
32 public class JsonEvent extends JsonIdEntity implements Event {
33
34     @SerializedName("ID")
35     private int eventId;
36     @SerializedName("Name")
37     private String name;
38     @SerializedName("StartDate")
39     private Date startDate;
40     @SerializedName("EndDate")
41     private Date endDate;
42     @SerializedName("Sponsor")
43     private String sponsor;
44     @SerializedName("Season")
45     private int seasonYear;
46     @Expose
47     private Season season;
48     @SerializedName("Type")
49     private String type;
50     @SerializedName("Num")
51     private int num;
52     @SerializedName("Venue")
53     private String venue;
54     @SerializedName("City")
55     private String city;
56     @SerializedName("Country")
57     private String country;
58     @SerializedName("Discipline")
59     private String discipline;
60     @SerializedName("Main")
61     private int mainEventId;
62     @Expose
63     private Event mainEvent;
64     @SerializedName("Sex")
65     private String sex;
66     @SerializedName("AgeGroup")
67     private String ageGroup;
68     @SerializedName("Url")
69     private String url;
70     @SerializedName("Related")
71     private String related;
72     @SerializedName("Stage")
73     private String stage;
74     @SerializedName("ValueType")
75     private String valueType;
76     @SerializedName("ShortName")
77     private String shortName;
78     @SerializedName("WorldSnookerId")
79     private int worldSnookerId;
80     @SerializedName("RankingType")
81     private String rankingType;
82     @SerializedName("EventPredictionID")
83     private int eventPredictionId;
84     @SerializedName("Team")
85     private boolean team;
86     @SerializedName("Format")
87     private int format;
88     @SerializedName("Twitter")
89     private String twitter;
90     @SerializedName("HashTag")
91     private String hashTag;
92     @SerializedName("ConversionRate")
93     private float conversionRate;
94     @SerializedName("AllRoundsAdded")
95     private boolean allRoundsAdded;
96     @SerializedName("PhotoURLs")
97     private String photoUrls;
98     @SerializedName("NumCompetitors")
99     private int numCompetitors;
100     @SerializedName("NumUpcoming")
101     private int numUpcoming;
102     @SerializedName("NumActive")
103     private int numActive;
104     @SerializedName("NumResults")
105     private int numResults;
106     @SerializedName("Note")
107     private String note;
108     @SerializedName("CommonNote")
109     private String commonNote;
110     @SerializedName("DefendingChampion")
111     private int defendingChampion;
112     @SerializedName("PreviousEdition")
113     private int previousEdition;
114
115     protected JsonEvent() {
116     }
117
118     @Override
119     public int eventId() {
120         return eventId;
121     }
122
123     @Override
124     public String name() {
125         return name;
126     }
127
128     @Override
129     public Date startDate() {
130         return startDate == null
131                 ? null
132                 : new Date(startDate.getTime());
133     }
134
135     @Override
136     public Date endDate() {
137         return endDate == null
138                 ? null
139                 : new Date(endDate.getTime());
140     }
141
142     @Override
143     public String sponsor() {
144         return sponsor;
145     }
146
147     @Override
148     public Season season() {
149         if (season == null)
150             season = Season.getSeason(seasonYear);
151         return season;
152     }
153
154     @Override
155     public String type() {
156         return type;
157     }
158
159     @Override
160     public int num() {
161         return num;
162     }
163
164     @Override
165     public String venue() {
166         return venue;
167     }
168
169     @Override
170     public String city() {
171         return city;
172     }
173
174     @Override
175     public String country() {
176         return country;
177     }
178
179     @Override
180     public String discipline() {
181         return discipline;
182     }
183
184     @Override
185     public int mainEventId() {
186         return mainEventId;
187     }
188
189     @Override
190     public Event mainEvent() {
191         if (mainEvent == null && mainEventId == eventId)
192             mainEvent = this;
193         return mainEvent;
194     }
195
196     public void setMainEvent(Event event) {
197         if (event != null && eventId == event.eventId())
198             mainEvent = event;
199     }
200
201     @Override
202     public String sex() {
203         return sex;
204     }
205
206     @Override
207     public String ageGroup() {
208         return ageGroup;
209     }
210
211     @Override
212     public String url() {
213         return url;
214     }
215
216     @Override
217     public String related() {
218         return related;
219     }
220
221     @Override
222     public String stage() {
223         return stage;
224     }
225
226     @Override
227     public String valueType() {
228         return valueType;
229     }
230
231     @Override
232     public String shortName() {
233         return shortName;
234     }
235
236     @Override
237     public int worldSnookerId() {
238         return worldSnookerId;
239     }
240
241     @Override
242     public String rankingType() {
243         return rankingType;
244     }
245
246     @Override
247     public int eventPredictionId() {
248         return eventPredictionId;
249     }
250
251     @Override
252     public boolean team() {
253         return team;
254     }
255
256     @Override
257     public int format() {
258         return format;
259     }
260
261     @Override
262     public String twitter() {
263         return twitter;
264     }
265
266     @Override
267     public String hashTag() {
268         return hashTag;
269     }
270
271     @Override
272     public float conversionRate() {
273         return conversionRate;
274     }
275
276     @Override
277     public boolean allRoundsAdded() {
278         return allRoundsAdded;
279     }
280
281     @Override
282     public String photoUrls() {
283         return photoUrls;
284     }
285
286     @Override
287     public int numCompetitors() {
288         return numCompetitors;
289     }
290
291     @Override
292     public int numUpcoming() {
293         return numUpcoming;
294     }
295
296     @Override
297     public int numActive() {
298         return numActive;
299     }
300
301     @Override
302     public int numResults() {
303         return numResults;
304     }
305
306     @Override
307     public String note() {
308         return note;
309     }
310
311     @Override
312     public String commonNote() {
313         return commonNote;
314     }
315
316     @Override
317     public int defendingChampion() {
318         return defendingChampion;
319     }
320
321     @Override
322     public int previousEdition() {
323         return previousEdition;
324     }
325
326     @Override
327     public int getId() {
328         return eventId;
329     }
330
331 }