mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2025-09-10 18:59:41 +02:00
SMACK-272 Add support for XEP-0060 (pubsub)
git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@11346 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
parent
92ba2d7f33
commit
f7a1c750ad
73 changed files with 7214 additions and 0 deletions
123
source/org/jivesoftware/smackx/pubsub/ItemPublishEvent.java
Normal file
123
source/org/jivesoftware/smackx/pubsub/ItemPublishEvent.java
Normal file
|
@ -0,0 +1,123 @@
|
|||
/**
|
||||
* All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.jivesoftware.smackx.pubsub;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Represents an event generated by an item(s) being published to a node.
|
||||
*
|
||||
* @author Robin Collier
|
||||
*/
|
||||
public class ItemPublishEvent <T extends Item> extends SubscriptionEvent
|
||||
{
|
||||
private List<T> items;
|
||||
private Date originalDate;
|
||||
|
||||
/**
|
||||
* Constructs an <tt>ItemPublishEvent</tt> with the provided list
|
||||
* of {@link Item} that were published.
|
||||
*
|
||||
* @param nodeId The id of the node the event came from
|
||||
* @param eventItems The list of {@link Item} that were published
|
||||
*/
|
||||
public ItemPublishEvent(String nodeId, List<T> eventItems)
|
||||
{
|
||||
super(nodeId);
|
||||
items = eventItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs an <tt>ItemPublishEvent</tt> with the provided list
|
||||
* of {@link Item} that were published. The list of subscription ids
|
||||
* represents the subscriptions that matched the event, in the case
|
||||
* of the user having multiple subscriptions.
|
||||
*
|
||||
* @param nodeId The id of the node the event came from
|
||||
* @param eventItems The list of {@link Item} that were published
|
||||
* @param subscriptionIds The list of subscriptionIds
|
||||
*/
|
||||
public ItemPublishEvent(String nodeId, List<T> eventItems, List<String> subscriptionIds)
|
||||
{
|
||||
super(nodeId, subscriptionIds);
|
||||
items = eventItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs an <tt>ItemPublishEvent</tt> with the provided list
|
||||
* of {@link Item} that were published in the past. The published
|
||||
* date signifies that this is delayed event. The list of subscription ids
|
||||
* represents the subscriptions that matched the event, in the case
|
||||
* of the user having multiple subscriptions.
|
||||
*
|
||||
* @param nodeId The id of the node the event came from
|
||||
* @param eventItems The list of {@link Item} that were published
|
||||
* @param subscriptionIds The list of subscriptionIds
|
||||
* @param publishedDate The original publishing date of the events
|
||||
*/
|
||||
public ItemPublishEvent(String nodeId, List<T> eventItems, List<String> subscriptionIds, Date publishedDate)
|
||||
{
|
||||
super(nodeId, subscriptionIds);
|
||||
items = eventItems;
|
||||
|
||||
if (publishedDate != null)
|
||||
originalDate = publishedDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of {@link Item} that were published.
|
||||
*
|
||||
* @return The list of published {@link Item}
|
||||
*/
|
||||
public List<T> getItems()
|
||||
{
|
||||
return Collections.unmodifiableList(items);
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether this event was delayed. That is, the items
|
||||
* were published to the node at some time in the past. This will
|
||||
* typically happen if there is an item already published to the node
|
||||
* before a user subscribes to it. In this case, when the user
|
||||
* subscribes, the server may send the last item published to the node
|
||||
* with a delay date showing its time of original publication.
|
||||
*
|
||||
* @return true if the items are delayed, false otherwise.
|
||||
*/
|
||||
public boolean isDelayed()
|
||||
{
|
||||
return (originalDate != null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the original date the items were published. This is only
|
||||
* valid if {@link #isDelayed()} is true.
|
||||
*
|
||||
* @return Date items were published if {@link #isDelayed()} is true, null otherwise.
|
||||
*/
|
||||
public Date getPublishedDate()
|
||||
{
|
||||
return originalDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return getClass().getName() + " [subscriptions: " + getSubscriptions() + "], [Delayed: " +
|
||||
(isDelayed() ? originalDate.toString() : "false") + ']';
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue