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.packet; 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.util.Date; 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jivesoftware.smack.util.StringUtils; 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * A decorator for the {@link DelayInformation} class to transparently support 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * both the new <b>Delay Delivery</b> specification <a href="http://xmpp.org/extensions/xep-0203.html">XEP-0203</a> and 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * the old one <a href="http://xmpp.org/extensions/xep-0091.html">XEP-0091</a>. 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Existing code can be backward compatible. 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Robin Collier 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class DelayInfo extends DelayInformation 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen{ 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen DelayInformation wrappedInfo; 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Creates a new instance with given delay information. 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @param delay the delay information 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public DelayInfo(DelayInformation delay) 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen super(delay.getStamp()); 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen wrappedInfo = delay; 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen @Override 45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getFrom() 46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return wrappedInfo.getFrom(); 48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen @Override 51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getReason() 52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return wrappedInfo.getReason(); 54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen @Override 57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public Date getStamp() 58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return wrappedInfo.getStamp(); 60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen @Override 63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setFrom(String from) 64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen wrappedInfo.setFrom(from); 66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen @Override 69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public void setReason(String reason) 70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen wrappedInfo.setReason(reason); 72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen @Override 75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getElementName() 76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return "delay"; 78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen @Override 81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String getNamespace() 82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen { 83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return "urn:xmpp:delay"; 84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen @Override 87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public String toXML() { 88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen StringBuilder buf = new StringBuilder(); 89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("<").append(getElementName()).append(" xmlns=\"").append(getNamespace()).append( 90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen "\""); 91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" stamp=\""); 92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(StringUtils.formatXEP0082Date(getStamp())); 93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("\""); 94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getFrom() != null && getFrom().length() > 0) { 95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(" from=\"").append(getFrom()).append("\""); 96d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 97d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(">"); 98d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (getReason() != null && getReason().length() > 0) { 99d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append(getReason()); 100d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 101d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen buf.append("</").append(getElementName()).append(">"); 102d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return buf.toString(); 103d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 104d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 105d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 106