NotificationHome.java

package fr.paris.lutece.plugins.grustoragedb.business;

import fr.paris.lutece.plugins.grubusiness.business.notification.INotificationDAO;
import fr.paris.lutece.plugins.grubusiness.business.notification.Notification;
import fr.paris.lutece.plugins.grubusiness.business.notification.NotificationFilter;
import fr.paris.lutece.portal.service.file.IFileStoreServiceProvider;
import fr.paris.lutece.portal.service.plugin.Plugin;
import fr.paris.lutece.portal.service.plugin.PluginService;
import fr.paris.lutece.portal.service.spring.SpringContextService;
import fr.paris.lutece.util.ReferenceList;

import java.util.List;
import java.util.Optional;

/**
 * This class provides instances management methods (create, find, ...) for Notification objects
 */
public final class NotificationHome
{
    // Static variable pointed at the DAO instance
    private static INotificationDAO _dao = SpringContextService.getBean( "grustoragedb.NotificationDAO" );
    private static Plugin _plugin = PluginService.getPlugin( "grustoragedb" );

    /**
     * Private constructor - this class need not be instantiated
     */
    private NotificationHome(  )
    {
    }

    /**
     * Find the demand's notifications
     * 
     * @param strDemandId
     * @param strDemandTypeId
     * @return the notification list
     */
    public static List<Notification> findByDemand( String strDemandId, String strDemandTypeId )
    {
	return _dao.loadByDemand(strDemandId, strDemandTypeId);
    }
    
    
    /**
     * Find the notification by demand id's and date
     * 
     * @param strDemandId
     * @param strDemandTypeId
     * @param lDate
     * @return the notification list
     */
    public static List<Notification> findByNotification( String strDemandId, String strDemandTypeId, long lDate )
    {
	return _dao.loadByDemandAndDate(strDemandId, strDemandTypeId, lDate);
    }

    /**
     * Finds a notification  with the specified id 
     * 
     * @param strId
     * @return the notification
     */
    public static Optional<Notification> getById( int id )
    {
        return _dao.loadById( id );
    }

    /**
     * search notifications by filter
     * 
     * @param filter
     * @return the notification list
     */
    public static List<Notification> findByFilter( NotificationFilter filter )
    {
        return _dao.loadByFilter( filter );
    }

    /**
     * search notifications Ids by filter
     * 
     * @param filter
     * @return the notification list
     */
    public static List<Integer> findIdsByFilter( NotificationFilter filter )
    {
        return _dao.loadIdsByFilter( filter );
    }

    /**
     * Find the notifications according to the filter
     * 
     * @param notificationFilter
     * @return the notification list
     */
    public static List<Notification> getByFilter(NotificationFilter notificationFilter )
    {
        return _dao.loadByFilter( notificationFilter );
    }

    /**
     * Find the notifications by demand id, type id, customer id
     * 
     * @param strDemandId
     * @param strDemandTypeId
     * @param strCustomerId
     * @return the notification list
     */
    public static List<Notification> getByDemandIdTypeIdCustomerId( String strDemandId, String strDemandTypeId, String strCustomerId )
    {
        return _dao.loadByDemandIdTypeIdCustomerId( strDemandId, strDemandTypeId, strCustomerId );
    }
    
    /**
     * Find the notifications according to the filter
     * 
     * @param notificationFilter
     * @return the notification list
     */
    public static List<Notification> getByIds(List<Integer> listIds )
    {
        return _dao.loadByIds( listIds );
    }

    /**
     * Get distinct demand type ids list
     * 
     * @return the  list
     */
    public static ReferenceList getDemandTypeIds( )
    {
        List<String> strList = _dao.loadDistinctDemandTypeIds( );
        
        ReferenceList refList = new ReferenceList( );
        for (String strId : strList )
        {
            refList.addItem(strId, strId);
        }
        
        return refList;
    }
    
    /**
     * Create an instance of the Notification class
     * 
     * @param Notification
     *            The instance of the Notification which contains the informations to store
     * @return The instance of Notification which has been created with its primary key.
     */
    public static Notification create( Notification notification )
    {
        _dao.insert( notification );

        return notification;
    }

    /**
     * Remove the Notification whose identifier is specified in parameter
     * 
     * @param nKey
     *            The Notification Id
     */
    public static void remove( int nKey )
    {
        _dao.delete( nKey );
    }
    
    /**
     * Get last notification by demand id and demand type id
     * @param strDemandId
     * @param strDemandTypeId
     * @return last notification 
     */
    public static Notification getLastNotifByDemandIdAndDemandTypeId( String strDemandId, String strDemandTypeId )
    {
        return _dao.loadLastNotifByDemandIdAndDemandTypeId( strDemandId, strDemandTypeId );
    }
}