1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License.
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *     http://www.apache.org/licenses/LICENSE-2.0
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS,
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License.
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smackx.pubsub;
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.ArrayList;
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.Collection;
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Represents a request to publish an item(s) to a specific node.
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Robin Collier
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class PublishItem <T extends Item> extends NodeExtension
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen{
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	protected Collection<T> items;
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	/**
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 * Construct a request to publish an item to a node.
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 *
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 * @param nodeId The node to publish to
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 * @param toPublish The {@link Item} to publish
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 */
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	public PublishItem(String nodeId, T toPublish)
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	{
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		super(PubSubElementType.PUBLISH, nodeId);
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		items = new ArrayList<T>(1);
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		items.add(toPublish);
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	}
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	/**
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 * Construct a request to publish multiple items to a node.
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 *
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 * @param nodeId The node to publish to
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 * @param toPublish The list of {@link Item} to publish
46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	 */
47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	public PublishItem(String nodeId, Collection<T> toPublish)
48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	{
49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		super(PubSubElementType.PUBLISH, nodeId);
50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		items = toPublish;
51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	}
52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	@Override
54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	public String toXML()
55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	{
56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		StringBuilder builder = new StringBuilder("<");
57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		builder.append(getElementName());
58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		builder.append(" node='");
59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		builder.append(getNode());
60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		builder.append("'>");
61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		for (Item item : items)
63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		{
64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen			builder.append(item.toXML());
65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		}
66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		builder.append("</publish>");
67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen		return builder.toString();
69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen	}
70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
71