View Javadoc

1   /*
2    * Copyright 2015 Data Archiving and Networked Services (an institute of
3    * Koninklijke Nederlandse Akademie van Wetenschappen), King's College London,
4    * Georg-August-Universitaet Goettingen Stiftung Oeffentlichen Rechts
5    *
6    * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by
7    * the European Commission - subsequent versions of the EUPL (the "Licence");
8    * You may not use this work except in compliance with the Licence.
9    * You may obtain a copy of the Licence at:
10   *
11   * https://joinup.ec.europa.eu/software/page/eupl
12   *
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the Licence is distributed on an "AS IS" basis,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the Licence for the specific language governing
17   * permissions and limitations under the Licence.
18   */
19  
20  package eu.ehri.project.models.base;
21  
22  import com.tinkerpop.blueprints.Vertex;
23  import com.tinkerpop.frames.modules.javahandler.JavaHandler;
24  import com.tinkerpop.frames.modules.javahandler.JavaHandlerContext;
25  import eu.ehri.project.definitions.Ontology;
26  import eu.ehri.project.models.events.SystemEvent;
27  import eu.ehri.project.models.utils.JavaHandlerUtils;
28  
29  /**
30   * An entity whose actions are recorded.
31   *
32  
33   */
34  public interface Actioner extends Named {
35      /**
36       * Fetch a list of Actions for this user in newest-first order.
37       * 
38       * @return a list of actions
39       */
40      @JavaHandler
41      Iterable<SystemEvent> getActions();
42  
43      @JavaHandler
44      Iterable<SystemEvent> getLatestAction();
45  
46      /**
47       * Implementation of complex methods.
48       */
49      abstract class Impl implements JavaHandlerContext<Vertex>, Actioner {
50          public Iterable<SystemEvent> getLatestAction() {
51              return frameVertices(gremlin()
52                      .out(Ontology.ACTIONER_HAS_LIFECYCLE_ACTION)
53                      .out(Ontology.ACTION_HAS_EVENT));
54          }
55  
56          public Iterable<SystemEvent> getActions() {
57              return frameVertices(gremlin().as("n").out(Ontology.ACTIONER_HAS_LIFECYCLE_ACTION)
58                      .loop("n", JavaHandlerUtils.noopLoopFunc, JavaHandlerUtils.noopLoopFunc)
59                      .out(Ontology.ACTION_HAS_EVENT));
60          }
61      }
62  }