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