[LIB-8] Update Copyright
[snooker-score-api.git] / src / main / java / org / hedgecode / snooker / json / JsonEvents.java
index 78474de..4a7aec7 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.
@@ -17,6 +17,8 @@
 package org.hedgecode.snooker.json;
 
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 import org.hedgecode.snooker.api.Event;
@@ -31,6 +33,8 @@ import org.hedgecode.snooker.compare.EventComparators;
  */
 public class JsonEvents extends JsonCollectionEntity<Event> implements Events {
 
+    private static final JsonEvents EMPTY = new JsonEvents(new Event[0]);
+
     protected JsonEvents(Event[] entities) {
         super(entities);
     }
@@ -45,7 +49,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 +58,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 +67,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 +76,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 +85,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 +94,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 +103,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 +112,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 +120,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 +130,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 +141,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 +160,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();
+    }
+
 }