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 import java.util.Map; 20 21 import org.kuali.mobility.push.entity.Device; 22 23 /** 24 * Interface for managing <code>Device</code> instances. 25 * 26 * @author Kuali Mobility Team (mobility.dev@kuali.org) 27 * @since 2.0.0 28 */ 29 public interface DeviceService { 30 31 /** 32 * Persists a <code>Device</code> instance 33 * @param device The device to persist 34 */ 35 void saveDevice(Device device); 36 37 /** 38 * Persists a <code>Device</code> instance 39 * @param device The device to persist 40 * @deprecated This method is misleading as it does not register a device 41 * but persists the state of a device. Rather use {@link #saveDevice(Device)}. 42 * This method will be removed in version 3.0 43 */ 44 @Deprecated 45 void registerDevice(Device device); 46 47 /** 48 * Removes a <code>Device</code> instance from persistence. 49 * @param device The device to remove. 50 * @return 51 */ 52 boolean removeDevice(Device device); 53 54 55 /** 56 * Counts the number of all registered devices. 57 * This can included devices that does not have a Registration ID and Username. 58 * @return 59 */ 60 Long countDevices(); 61 62 63 /** 64 * Counts the number of devices by device type. 65 * This can included devices that does not have a Registration ID and Username. 66 * @return 67 */ 68 Long countDevices(String deviceType); 69 70 71 /** 72 * Returns a count of all devices that does not have a username 73 * @return 74 */ 75 Long countDevicesWithoutUsername(); 76 77 78 /** 79 * Find all devices that are registered. 80 * This can included devices that does not have a Registration ID and Username 81 * @return 82 */ 83 List<Device> findAllDevices(); 84 85 86 /** 87 * Returns a list of device types that are set up. 88 * This list will be dictated by the SenderService implemenations that was 89 * set up with the <code>SendServiceDelegator</code>. 90 * Device types returns in this list are expected to have SendService implementations 91 * configured. 92 * This method will call the <code>SendServiceDelegator</code> to find supported device types. 93 * @return A list of supported device types. 94 */ 95 List<String> getSupportedDeviceTypes(); 96 97 98 /** 99 * Finds all devices of a specific type. 100 * This can included devices that does not have a Registration ID and Username 101 * @param deviceType 102 * @return 103 */ 104 List<Device> findAllDevices(String deviceType); 105 106 107 /** 108 * Gets a map of all registerd devices in a mapping between device type 109 * and a list of the devices for that type. 110 * 111 * @return 112 */ 113 Map<String, List<Device>> findDevicesMap(); 114 115 116 /** 117 * Return tue if there is a username for the specifed deviceId 118 * @param deviceid 119 * @return 120 */ 121 boolean doesDeviceHaveUsername(String deviceid); 122 123 124 /** 125 * Returns a list of devices registed by a username. 126 * @param username 127 * @return 128 */ 129 List<Device> findDevicesByUsername(String username); 130 131 132 /** 133 * Finds all device that does not have a username 134 * @return 135 */ 136 List<Device> findDevicesWithoutUsername(); 137 138 139 /** 140 * Finds devices with the specified device id. 141 * In theory, this should only return on <code>Device</code> 142 * @param deviceid 143 * @return 144 */ 145 List<Device> findDevicesByDeviceId(String deviceid); 146 147 /** 148 * Finds devices with the specified reg id. 149 * In theory, this should only return on <code>Device</code> 150 * @param deviceid 151 * @return 152 */ 153 Device findDeviceByRegId(String regid); 154 155 156 /** 157 * Finds a device with the specified device ID 158 * @param deviceid 159 * @return 160 */ 161 Device findDeviceByDeviceId(String deviceid); 162 163 164 /** 165 * Finds a <code>Device</code> by the Object ID for the <code>Device</code> 166 * @param id If of the <code>Device</code> to find. 167 * @return 168 */ 169 Device findDeviceById(Long id); 170 171 /** 172 * Finds a List of <code>Device</code> based on the specified keyword. 173 * @param keyword 174 * @return Device List. 175 */ 176 List<Device> findDevicesByKeyword(String keyword); 177 178 179 /** 180 * This returns a list of devices with Long id. Id should be unique, therefore should not return a list. 181 * TODO is this used anywhere? what is it suppose to do? 182 * @param id 183 * @return 184 */ 185 @Deprecated 186 List<Device> findDevicesById(String id); 187 188 189 /** 190 * CXF method for search for devices by keyword. 191 * @param keyword 192 * @return 193 */ 194 String devicesByKeyword(String keyword); 195 196 /** 197 * CXF method for retrieving devices for a given username. 198 * @param username 199 * @return 200 */ 201 String devicesFromUsername(String username); 202 203 /** 204 * CXF method for retrieving a username for a given device. 205 * @param id 206 * @return 207 */ 208 String usernameFromDeviceId(String id); 209 210 }