This is an automated email from the ASF dual-hosted git repository.

shuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/unomi.git


The following commit(s) were added to refs/heads/master by this push:
     new aae9d47  UNOMI-283 Implement a new EventService.search(Query query) 
method (#139)
aae9d47 is described below

commit aae9d47a0ff57a27c59d7be9325f31c12082c4f3
Author: Pavel Milkevich <[email protected]>
AuthorDate: Thu Mar 19 12:24:07 2020 +0300

    UNOMI-283 Implement a new EventService.search(Query query) method (#139)
---
 .../org/apache/unomi/api/services/EventService.java    | 15 +++++++++++++--
 .../unomi/services/impl/events/EventServiceImpl.java   | 18 ++++++++++++++++++
 2 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/api/src/main/java/org/apache/unomi/api/services/EventService.java 
b/api/src/main/java/org/apache/unomi/api/services/EventService.java
index c3a09d3..af0dbc0 100644
--- a/api/src/main/java/org/apache/unomi/api/services/EventService.java
+++ b/api/src/main/java/org/apache/unomi/api/services/EventService.java
@@ -23,6 +23,7 @@ import org.apache.unomi.api.PartialList;
 import org.apache.unomi.api.Session;
 import org.apache.unomi.api.actions.ActionPostExecutor;
 import org.apache.unomi.api.conditions.Condition;
+import org.apache.unomi.api.query.Query;
 
 import java.util.List;
 import java.util.Set;
@@ -57,7 +58,8 @@ public interface EventService {
 
     /**
      * Check if the sender is allowed to sent the speecified event. Restricted 
event must be explicitely allowed for a sender.
-     * @param event event to test
+     *
+     * @param event        event to test
      * @param thirdPartyId third party id
      * @return true if the event is allowed
      */
@@ -65,8 +67,9 @@ public interface EventService {
 
     /**
      * Get the third party server name, if the request is originated from a 
known peer
+     *
      * @param key the key
-     * @param ip the ip
+     * @param ip  the ip
      * @return server name
      */
     String authenticateThirdPartyServer(String key, String ip);
@@ -114,6 +117,14 @@ public interface EventService {
     PartialList<Event> searchEvents(String sessionId, String[] eventTypes, 
String query, int offset, int size, String sortBy);
 
     /**
+     * Retrieves {@link Event}s matching the specified {@link Query}.
+     *
+     * @param query a {@link Query} specifying which Events to retrieve
+     * @return a {@link PartialList} of {@code Event} instances matching the 
specified query
+     */
+    PartialList<Event> search(Query query);
+
+    /**
      * Checks whether the specified event has already been raised either for 
the associated session or profile depending on the specified {@code session} 
parameter.
      *
      * @param event   the event we want to check
diff --git 
a/services/src/main/java/org/apache/unomi/services/impl/events/EventServiceImpl.java
 
b/services/src/main/java/org/apache/unomi/services/impl/events/EventServiceImpl.java
index ab1cd77..4162549 100644
--- 
a/services/src/main/java/org/apache/unomi/services/impl/events/EventServiceImpl.java
+++ 
b/services/src/main/java/org/apache/unomi/services/impl/events/EventServiceImpl.java
@@ -26,6 +26,7 @@ import org.apache.unomi.api.PartialList;
 import org.apache.unomi.api.Session;
 import org.apache.unomi.api.actions.ActionPostExecutor;
 import org.apache.unomi.api.conditions.Condition;
+import org.apache.unomi.api.query.Query;
 import org.apache.unomi.api.services.DefinitionsService;
 import org.apache.unomi.api.services.EventListenerService;
 import org.apache.unomi.api.services.EventService;
@@ -250,6 +251,23 @@ public class EventServiceImpl implements EventService {
         }
     }
 
+    @Override
+    public PartialList<Event> search(Query query) {
+        if (query.getCondition() != null && 
definitionsService.resolveConditionType(query.getCondition())) {
+            if (StringUtils.isNotBlank(query.getText())) {
+                return persistenceService.queryFullText(query.getText(), 
query.getCondition(), query.getSortby(), Event.class, query.getOffset(), 
query.getLimit());
+            } else {
+                return persistenceService.query(query.getCondition(), 
query.getSortby(), Event.class, query.getOffset(), query.getLimit());
+            }
+        } else {
+            if (StringUtils.isNotBlank(query.getText())) {
+                return persistenceService.queryFullText(query.getText(), 
query.getSortby(), Event.class, query.getOffset(), query.getLimit());
+            } else {
+                return persistenceService.getAllItems(Event.class, 
query.getOffset(), query.getLimit(), query.getSortby());
+            }
+        }
+    }
+
     public boolean hasEventAlreadyBeenRaised(Event event, boolean session) {
         List<Condition> conditions = new ArrayList<Condition>();
 

Reply via email to