[LIB-10] SerialVersionUID for Serializable classes
[snooker-score-api.git] / src / main / java / org / hedgecode / snooker / json / JsonEvents.java
index 78474de..d536507 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017. Developed by Hedgecode.
+ * Copyright (c) 2017-2020. 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.
 
 package org.hedgecode.snooker.json;
 
+import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 import org.hedgecode.snooker.api.Event;
@@ -29,13 +32,17 @@ import org.hedgecode.snooker.compare.EventComparators;
  *
  * @author Dmitry Samoshin aka gotty
  */
-public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
+public class JsonEvents extends JsonCollectionEntity<Event> implements Events, Serializable {
 
-    protected JsonEvents(Event[] entities) {
+    private static final long serialVersionUID = 3333612126168481839L;
+
+    private static final JsonEvents EMPTY = new JsonEvents(new Event[0]);
+
+    JsonEvents(Event[] entities) {
         super(entities);
     }
 
-    protected JsonEvents(List<Event> entities) {
+    JsonEvents(List<Event> entities) {
         super(entities);
     }
 
@@ -45,7 +52,7 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         for (Event event : this)
             if (event.season().equals(season))
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -54,7 +61,7 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         for (Event event : this)
             if (event.type().equals(type))
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -63,7 +70,7 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         for (Event event : this)
             if (event.city().equals(city))
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -72,7 +79,7 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         for (Event event : this)
             if (event.country().equals(country))
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -81,7 +88,7 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         for (Event event : this)
             if (event.sex().equals(sex))
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -90,7 +97,7 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         for (Event event : this)
             if (event.stage().equals(stage))
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -99,7 +106,7 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         for (Event event : this)
             if (event.valueType().equals(valueType))
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -108,7 +115,7 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         for (Event event : this)
             if (event.worldSnookerId() == worldSnookerId)
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -116,9 +123,9 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         List<Event> events = new ArrayList<>();
         long currentTime = System.currentTimeMillis();
         for (Event event : this)
-            if (event.endDate().getTime() < currentTime)
+            if (currentTime > nextDate(event.endDate()).getTime())
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -126,10 +133,10 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         List<Event> events = new ArrayList<>();
         long currentTime = System.currentTimeMillis();
         for (Event event : this)
-            if (event.startDate().getTime() < currentTime
-                    && event.endDate().getTime() > currentTime)
+            if (currentTime > event.startDate().getTime()
+                    && currentTime < nextDate(event.endDate()).getTime())
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -137,9 +144,9 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         List<Event> events = new ArrayList<>();
         long currentTime = System.currentTimeMillis();
         for (Event event : this)
-            if (event.startDate().getTime() > currentTime)
+            if (currentTime < event.startDate().getTime())
                 events.add(event);
-        return events.isEmpty() ? null : new JsonEvents(events);
+        return events.isEmpty() ? EMPTY : new JsonEvents(events);
     }
 
     @Override
@@ -156,4 +163,11 @@ public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
         );
     }
 
+    private Date nextDate(Date date) {
+        Calendar c = Calendar.getInstance();
+        c.setTime(date);
+        c.add(Calendar.DATE, 1);
+        return c.getTime();
+    }
+
 }