1 /* 2 * Copyright (c) 2002-2024, City of Paris 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright notice 10 * and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright notice 13 * and the following disclaimer in the documentation and/or other materials 14 * provided with the distribution. 15 * 16 * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its 17 * contributors may be used to endorse or promote products derived from 18 * this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 * 32 * License 1.0 33 */ 34 package fr.paris.lutece.plugins.grubusiness.business.notification; 35 36 import java.util.List; 37 import java.util.Optional; 38 39 /** 40 * This interface represents a data access object for Notification object 41 * 42 */ 43 public interface INotificationEventDAO 44 { 45 46 /** 47 * Finds notifications associated to the id 48 * 49 * @param nId 50 * @return the notification corresponding to given id. 51 */ 52 Optional<NotificationEvent> loadById( int nId ); 53 54 /** 55 * Finds notification events associated to the specified demand id and demand type id. 56 * 57 * @param strDemandId 58 * the demand id 59 * @param strDemandTypeId 60 * the demand type id 61 * @return the notification event list 62 */ 63 List<NotificationEvent> loadByDemand( String strDemandId, String strDemandTypeId ); 64 65 /** 66 * Finds notification events associated to the specified notification 67 * 68 * @param strDemandId 69 * @param strDemandTypeId 70 * @param lNotificationDate 71 * @return the notification event list 72 */ 73 public List<NotificationEvent> loadByNotification( String strDemandId, String strDemandTypeId, long lNotificationDate ); 74 75 /** 76 * Finds and populate notification according to the filter 77 * 78 * @param notificationFilter 79 * the filter 80 * @return the notification events. An empty list is returned if no notificationevent has been found. 81 */ 82 List<NotificationEvent> loadByFilter( NotificationFilter notificationFilter ); 83 84 /** 85 * Inserts a notification event 86 * 87 * @param notificationEvent 88 * the notification event to insert 89 * @return the inserted notification event 90 */ 91 NotificationEvent insert( NotificationEvent notificationEvent ); 92 93 /** 94 * delete a notification event 95 * 96 * @param nId 97 */ 98 void delete( int nId ); 99 100 /** 101 * Load the ids of the notification events by filter 102 * 103 * @param notificationFilter 104 * The notification filter 105 * @return The list of notification event ids 106 */ 107 List<Integer> loadIdsByFilter( NotificationFilter notificationFilter ); 108 109 /** 110 * load the events for an id list 111 * 112 * @return The list of notification events 113 */ 114 List<NotificationEvent> loadByIds( List<Integer> listIds ); 115 116 /** 117 * purge the events after N days 118 * 119 * @param nbDays 120 * @return 121 */ 122 String deleteBeforeDate( long lDate ); 123 }