001    /**
002     * Copyright 2005-2014 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.ken.api.notification;
017    
018    import org.joda.time.DateTime;
019    import org.kuali.rice.core.api.mo.common.GloballyUnique;
020    import org.kuali.rice.core.api.mo.common.Versioned;
021    import org.kuali.rice.ken.api.common.KenIdentifiable;
022    
023    import java.util.List;
024    
025    public interface NotificationContract extends KenIdentifiable, Versioned, GloballyUnique {
026    
027        /**
028         * This is the namespace code for the Group.
029         *
030         * <p>
031         * This is a namespace code assigned to a Group.  Together with name, it makes up another unique identifier for Group
032         * </p>
033         *
034         * @return namespaceCode
035         */
036        DateTime getCreationDateTime();
037    
038        List<? extends NotificationRecipientContract> getRecipients();
039    
040        List<? extends NotificationSenderContract> getSenders();
041    
042        DateTime getAutoRemoveDateTime();
043    
044        NotificationChannelContract getChannel();
045    
046        String getContent();
047    
048        NotificationContentTypeContract getContentType();
049    
050        String getDeliveryType();
051    
052        NotificationPriorityContract getPriority();
053    
054        NotificationProducerContract getProducer();
055        
056        DateTime getSendDateTime();
057    
058        String getProcessingFlag();
059    
060        DateTime getLockedDate();
061    
062        String getTitle();
063    
064        String getContentMessage();
065    
066        /**
067         * Gets the custom document type name
068         *
069         * <p>
070         * If null, the system will use the default {@code KualiNotification} document type when routing the notification
071         * </p>
072         *
073         * @return the custom document type name for this Notification, or null if undefined
074         * @since 2.3.1
075         */
076        String getDocTypeName();
077    }