From 09c7dd64d38ad87dee57bc8f8836777a7e6befd0 Mon Sep 17 00:00:00 2001
From: gotty <gotty@fb0bcced-7025-49ed-a12f-f98bce993226>
Date: Wed, 12 Jul 2017 12:32:13 +0000
Subject: [PATCH] [LIB-8] Add EventFormat to the Event entity

git-svn-id: https://svn.hedgecode.org/lib/snooker-score-api/trunk@131 fb0bcced-7025-49ed-a12f-f98bce993226
---
 src/main/java/org/hedgecode/snooker/api/Event.java |   2 +
 .../org/hedgecode/snooker/api/EventFormat.java     |  56 +++++++++++++++++++++
 .../java/org/hedgecode/snooker/json/JsonEvent.java |  10 ++++
 .../org/hedgecode/snooker/json/JsonEventTest.java  |   1 +
 .../org/hedgecode/snooker/json/JsonEventTest.ser   | Bin 1185 -> 1241 bytes
 .../org/hedgecode/snooker/json/JsonEventsTest.ser  | Bin 25544 -> 25676 bytes
 6 files changed, 69 insertions(+)
 create mode 100644 src/main/java/org/hedgecode/snooker/api/EventFormat.java

diff --git a/src/main/java/org/hedgecode/snooker/api/Event.java b/src/main/java/org/hedgecode/snooker/api/Event.java
index 45b50b5..b3fdb68 100644
--- a/src/main/java/org/hedgecode/snooker/api/Event.java
+++ b/src/main/java/org/hedgecode/snooker/api/Event.java
@@ -77,6 +77,8 @@ public interface Event extends IdEntity {
 
     int format();
 
+    EventFormat formatType();
+
     String twitter();
 
     String hashTag();
diff --git a/src/main/java/org/hedgecode/snooker/api/EventFormat.java b/src/main/java/org/hedgecode/snooker/api/EventFormat.java
new file mode 100644
index 0000000..37cfdb8
--- /dev/null
+++ b/src/main/java/org/hedgecode/snooker/api/EventFormat.java
@@ -0,0 +1,56 @@
+/*
+ * 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.api;
+
+/**
+ * Formats of the Snooker's Event Entity.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public enum EventFormat {
+
+    UNKNOWN    ( 0, "Unknown"                     ),
+    CUP        ( 1, "Cup"                         ),
+    ROUND      ( 2, "Round-robin"                 ),
+    ROUND_CUP  ( 3, "Round-robin followed by cup" ),
+    PYRAMID    ( 4, "Pyramid"                     );
+
+    private int number;
+    private String desc;
+
+    EventFormat(int number, String desc) {
+        this.number = number;
+        this.desc = desc;
+    }
+
+    public int number() {
+        return number;
+    }
+
+    public String desc() {
+        return desc;
+    }
+
+    public static EventFormat byNumber(int number) {
+        for (EventFormat type : EventFormat.values()) {
+            if (type.number() == number)
+                return type;
+        }
+        return EventFormat.UNKNOWN;
+    }
+
+}
diff --git a/src/main/java/org/hedgecode/snooker/json/JsonEvent.java b/src/main/java/org/hedgecode/snooker/json/JsonEvent.java
index 348d1a5..0ba62ab 100644
--- a/src/main/java/org/hedgecode/snooker/json/JsonEvent.java
+++ b/src/main/java/org/hedgecode/snooker/json/JsonEvent.java
@@ -22,6 +22,7 @@ import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
 
 import org.hedgecode.snooker.api.Event;
+import org.hedgecode.snooker.api.EventFormat;
 import org.hedgecode.snooker.api.Season;
 
 /**
@@ -85,6 +86,8 @@ public class JsonEvent extends JsonIdEntity implements Event {
     private boolean team;
     @SerializedName("Format")
     private int format;
+    @Expose
+    private EventFormat formatType;
     @SerializedName("Twitter")
     private String twitter;
     @SerializedName("HashTag")
@@ -259,6 +262,13 @@ public class JsonEvent extends JsonIdEntity implements Event {
     }
 
     @Override
+    public EventFormat formatType() {
+        if (formatType == null)
+            formatType = EventFormat.byNumber(format);
+        return formatType;
+    }
+
+    @Override
     public String twitter() {
         return twitter;
     }
diff --git a/src/test/java/org/hedgecode/snooker/json/JsonEventTest.java b/src/test/java/org/hedgecode/snooker/json/JsonEventTest.java
index 0262013..bdbdf69 100644
--- a/src/test/java/org/hedgecode/snooker/json/JsonEventTest.java
+++ b/src/test/java/org/hedgecode/snooker/json/JsonEventTest.java
@@ -76,6 +76,7 @@ public class JsonEventTest extends AbstractJsonTest {
         assertEquals(expected.eventPredictionId(), actual.eventPredictionId());
         assertEquals(expected.team(), actual.team());
         assertEquals(expected.format(), actual.format());
+        assertEquals(expected.formatType(), actual.formatType());
         assertEquals(expected.twitter(), actual.twitter());
         assertEquals(expected.hashTag(), actual.hashTag());
         assertEquals(expected.conversionRate(), actual.conversionRate(), 0.001);
diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonEventTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonEventTest.ser
index 3723494f3e68c78fe2218ea1c974b7ec020b77bc..356fb15588794e7bf56dfb537646890ee12044bf 100644
GIT binary patch
delta 79
zcmZ3;d6RR34!4cdgvsgiwjN<((A;Pq$H>Q(mS2>cSQ1iMkXpi^K6xXf0-GCHWb-7(
hLPidUYZ{gdm@X@C=4R$*WGt90#^TG!J2{2L763N{7~}u|

delta 51
zcmV-30L=f{384v)EDL<O5g3?FvZ?|AD6uzQ0kg~jZUG3c)Ye^=88=h2LIVo{lTHLp
J0SuFz1U=W85c~iD

diff --git a/src/test/resources/org/hedgecode/snooker/json/JsonEventsTest.ser b/src/test/resources/org/hedgecode/snooker/json/JsonEventsTest.ser
index 4877309bebe10ab40a95ccaeb5a3c7846509aee2..3d5f9b4253adb1d67501b939930bbb8c627b0c9d 100644
GIT binary patch
delta 2456
zcmZveZA?>V6vum=LP1Ik0&Nk5QiNJ4;;0}<vAkC)6e{$UQqZWVsHio}1Qlag$TlPM
zu#H9IV9J6Uo0!gIS&R~ODhoQYIilI3ZqE6#8DF-=Epv0vxxLTLV($mO{D0^C&vVZ?
z&qFU>U?wgyy*lx+M`d=yv!7evT$n4)7`>dA7oia!->P6{7MAqFnnNefO%u)Yzs)o;
zk>RU1ZQ0P`tKZ(f$|p((*-ObG6|CZaJZ&>0Hcn~s2c~_ahIP|FX4*kMqlA(BT{A)$
ziM&HB5-|;ua}iyyv_o4+DI<r`kh4@*$j+g@E3_h<i;TYC3Uvwba4+;44caCB9fK~5
z&BS$fSQ_s-VR0a+4lgEPUpPa7&2Yeo;NZ*(0&dMz@!-;>S_Co)o}*qe!j-U{auuRp
zEY(4Nq=_(9bP<e2ZVTeuIQEA$nCalKjOJ>ig!t8{0QU#^>OeA!=Jw4J%FV5k!VYOB
z?1+(YXBdwWitC7_KL5t@{A^c0{l1Yn%5&t~6oIbW0)6p`rq`OxrR_dZJnWXm!!@~<
zEfos|_9(wr5zqJW&fWy{t5vSz=4QJZFD7%7!<6y__i=W{d>4bBCl|rD@tMSFG-WXu
zX7>s3>)ByouZ)D7YB3Zf;0I#to`m4oL@*{UXL&Mwnn)Y@|5{#s7<@iQ&3P!3f<21h
zX%an;H#wNE<8p^o!K?`Oqy%!m68MgBb%3csnL0$d?DVrh9}?kCY7K4JQ&Bdk3gi3@
zb8~20?Vjh&fwm^VXqtoUZdkg6ha0x|5T<A<30SA$FPFXZb`OHic^#a$eM|o&JB%3Z
zU3!QQ6s;H}&cNn1X1q`JfhX+E{9%CxI%1`;Q9n1b+$R$GL`>b*&7z$mISlH}FqXMi
zAi<*}7mww?=!AGr7UgmCg?O4}Hdu0$aA!VF9P1Qk3&mZ}rao;8g85o5_nnu6nFjPZ
zH1|x75clc{_Ydm%$HUHb>XU^Q)|g#>&?>V0*4%W4yD;`IQ-3AxB#k0}5#<}#w1KK5
z7KZY&8TsL<JUTN+w1IuPI_D(;lV45zEcyR%jdUzXW$%!qfZRv_V1blRYRDeIQJq}u
zCO}cx!h@YFyAX66+6Z`JQ1jq?C%XZvCDyROg?99eLR5Mj>|gRDEqAl99+SI_R&Gli
zljBC*68~?;aO&iYe5)6u!b+^<u#F`rxol_i-|WMwtXv4r(p18BmfoXmy-AEY$cD@8
zjC_ANkGeyzP^7KEG)u)Pnzpb0jR13U2Xela#a;=JH73Hb%2pcq?qC@PCNG^s9%m`k
znv}%ITU87nndn5Fd<=Q<SvI^>D8FEthT}(;3Gv*j06!{FJ8(TBpxTVviuDhgU-Xbw
z)B63@FETv8wuaX4s}bU97UUMohqV5o3+yh;sI6gZ;xfkgchpYj2X^L4DmG_t9d6fm
zb;oJq_wWeyeyfe>53Tn(-4*^I6ZPB6$twc7`T?qE{WXgEwR#uP^$onfJVcNB%?2aU
zRW{lfSM`mns88AOU~}zXQy-5NF9y2|iySy{kAqI!wdTDelr=hS+|*qwwwv%FWT*bn
zxt<zzM1O|Ct6g4Va^Cd?)pvW_smX*J3p{oYQ}+6Z2H8+!Gc|v;dxAAjDmTFf&n6mp
zAc_5df7fFm25C*SYp&B7V`y-zse$PEUf%fDB6bBIcs)d~YCg~TxHIa^7@yd(nCQ+H
r`lars$)8YHuRx#eE9mbX_t;VPqf9H8aR+p7Ed3L1<i*1AmGb`pXBX};

delta 2354
zcmZvedr(w$6vw$Hu#3BZJeEb?xhe{5AfPC)yq_&Bu&_^-1s@}3VOoq<rsxD?Q3G|#
z!C?lmd?Zq&TQe}@1C&85m>7rBMw`fR(lJNJ7^)GpbMM}Bo8bQY{d~{s_dCD4J2K1+
zUtwBfB-+xZ4BPa+nGX}!NZJ(Y;l{nw56--%WESn|TdZs=I@`6tCDL(-sbU;a&($%K
zFUNnh9SU5lhocL>0G(^5hhmq+#f2%KT9^){s{-L`*GZXEs*n%L8g|2Rw=6~h_uMX%
ztn?m4xz9b9QG6tsA$6bE6sl6GmQgqi(&Y^4BRUi6?|NjQ{+$Oyx*@ea9rd3UVHQWY
zEJDynM@vvImS^#e8T#TU;MX)i=#jVZISm&qDd^en6$86H^Rc-BPsdzT&&e7{^sb+a
zVqntS8Kr@3i$(AfAHqj{L~w~O;p@I4xXF*O++PHr^Cz685b))OHh!R!g<fFyjfR*2
zIX}T00fNnWHctX{9P)QmE2D&S`~8DpOwks&8QIgoANZk-jP@?d6H8t~c}I9MGzEP;
z7inN~a5RrcgXiH8Xb#bHI2@jZ&_N4{H82}W(VN5OMQb2C+=;)RU$;4eBL9pKiJVYN
z;pX#8`PSAi6|u--rEoRN6Jk~VoNXy=RUM~7-WO-M*+U>{Suw5CUoNq*BS+ylu`Hg>
z&S-m9&7EB^ELdT}eYCES3+$DhuOq9E%tQTrq?@4cxpNTpv6Z_}&tD}G^b^Wj)NN7h
zk)4V9lzQoW%)X`S=&dLh$7(?lvvn?tgysk-oR3N3EtzT&%Y+&q5|^Rw1raQZb>eUS
zpWHi+>JG(;L~UA4NguBk!L9LxLlZ>sY^W4k{M_K7dKo-Qz_oQeO%UF>(Rm)SHMp~m
z$~A8Z=k%@W4?K{`wI%$;7*A^k@tymFKIt~!yvZk({ickq41=0=ML2fPx>-VTDt6ub
z*5~u#rr`IwVIVgMmM7mQPep7edO}mISo+PB8Y*qtyRiZFyQwczto>~h`-ySv)Cl)$
z8rs9&Z(~{+qxkGbnh-mYQjYSSbd()Q8LLP)dw$Z2`u5B+%K5OTmK$dxvxD!)T>XUo
zv{mIMLVuQu_nEEZQ@D>+pv^u&zHRvu-shcT#Ib90?h$HqALo!6<=)&2B)62m&qws;
zsSy2~cZ|^CquGcWibA0~KN8V^E&~(=bdBc!a906gzrx!2(I*QDFMd%3H~D$t0?44%
z=nnlwZhRq6t%&ttbkH2zqM~^={8`{yl@!lIq0nATy}0T`aGTDFyJ(7zE9@fdE-B`c
z`a5owD20o=G_FF%l(GAzD?39Wx8M=Va=n4>X*B#6{yr+9QGb>9SUes?qsLmFN1kc@
zIquE}%IPjG>VLjMPf3LZ)1R*Bq)@$E0?H;sI?9I)r${dP<p#<+Bim?)@fyjtGWM;o
zi*wdQi(@fGx8lObgRfaAw&ln%-gn(>z!YlBNlLNHrx(#}i=FS)f?js#!EXJWJp1jh
z^5F%Q>=xBk3aGg|l0!;Jw$YQbG&PQJt9#$Jol>-ivA@h)s#2*;>$P{dGMB38>utFh
z)sLQy_6jV~XBSHRmc%Y<U9}D6k?J8nqcy5ji}I10WR!2#(8gP<#wJldv4Kr8vw{Ab
YSo=@0V~%Vr<m+4Ovi|0-Bym%~zw4ph`2YX_

-- 
2.10.0