View Javadoc

1   /**
2    * Copyright 2011 The Kuali Foundation Licensed under the
3    * Educational Community License, Version 2.0 (the "License"); you may
4    * not use this file except in compliance with the License. You may
5    * obtain a copy of the License at
6    *
7    * http://www.osedu.org/licenses/ECL-2.0
8    *
9    * Unless required by applicable law or agreed to in writing,
10   * software distributed under the License is distributed on an "AS IS"
11   * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12   * or implied. See the License for the specific language governing
13   * permissions and limitations under the License.
14   */
15  
16  package org.kuali.mobility.push.service;
17  
18  import java.util.List;
19  
20  import org.kuali.mobility.push.entity.Device;
21  import org.kuali.mobility.push.entity.Push;
22  import org.kuali.mobility.push.entity.PushDeviceTuple;
23  
24  /**
25   * Interface for sending and persisting <code>Push</code> messages to 
26   * <code>Device</code>.
27   * 
28   * Implementations of this service will typically persist <code>Push</code>
29   * messages from a database, retrieve devices from a service, and send
30   * the message to the devices using an implementatin of the <code>SendService</code>
31   * interface.
32   * 
33   * @author Kuali Mobility Team (mobility.dev@kuali.org)
34   * @since 2.0.0
35   */
36  public interface PushService {
37  
38  	/**
39  	 * Persists a <code>Push</code> message.
40  	 * @param push Push message to persist.
41  	 */
42  	public abstract void savePush(Push push);
43  
44  
45  	/**
46  	 * Persists a push messages that should be sent to many devices
47  	 * @param push Push message to be sent.
48  	 * @param Devices Devices the Push message should be sent to.
49  	 */
50  	public abstract void savePush(Push push, List<Device> Devices);
51  
52  
53  	/**
54  	 * Reutns the number of <code>Push</code> messages persisted.
55  	 * @return number of <code>Push</code> messages persisted.
56  	 */
57  	public abstract int countPushes();
58  
59  
60  	/**
61  	 * Finds a <code>Push</code> by its ID.
62  	 * @param id ID of the <code>Push</code> to find.
63  	 * @return The <code>Push</code> that has the specified ID.
64  	 */
65  	public abstract Push findPushById(Long id);
66  
67  
68  	/**
69  	 * Returns a list of <b>ALL</b> the <code>Push</code> messages
70  	 * that are persisted.<br>
71  	 * <b>WARNING: This method can return A LOT of data</b>
72  	 * @return A lsit of all the persisted <code>Push</code> messages.
73  	 */
74  	public abstract List<Push> findAllPush();
75  
76  
77  	/**
78  	 * Finds a list of <code>Devices</code> that was linked to a <code>Push</code>.
79  	 * @param push <code>Push</code> to find devices of</code>.
80  	 * @return List of <code>Devices</code> that was linked.
81  	 */
82  	public abstract List<Device> findDevicesForPush(Push push);
83  
84  
85  	/**
86  	 * Finds a list of unsent <code>PushDeviceTuple</code>.
87  	 * @return List of unsent <code>PushDeviceTuple</code>.
88  	 */
89  	public abstract List<PushDeviceTuple> findUnsentPushTuples();
90  
91  
92  	/**
93  	 * Sends a <code>Push</code> message to the specified <code>Device</code>
94  	 * without persisting the message.
95  	 * @param push Push message to send.
96  	 * @param device Device to send the message to.
97  	 */
98  	public abstract int sendPush(Push push, Device device);
99  
100 
101 	/**
102 	 * Sends a <code>Push</code< message to the specified list of devices
103 	 * without persisting the message.
104 	 * @param push Push message to send.
105 	 * @param devices Devices to send the message to.
106 	 */
107 	public abstract int sendPush(Push push, List<Device> devices);
108 
109 
110 	/**
111 	 * Attempts to send <code>PushDeviceTuple</code>
112 	 * @param tuples List of <code>PushDeviceTuple</code> to send.
113 	 * @return
114 	 */
115 	public abstract int sendPush(List<PushDeviceTuple> tuples);
116 }