Home | History | Annotate | Download | only in pubsub
      1 /**
      2  * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
      3  * you may not use this file except in compliance with the License.
      4  * You may obtain a copy of the License at
      5  *
      6  *     http://www.apache.org/licenses/LICENSE-2.0
      7  *
      8  * Unless required by applicable law or agreed to in writing, software
      9  * distributed under the License is distributed on an "AS IS" BASIS,
     10  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     11  * See the License for the specific language governing permissions and
     12  * limitations under the License.
     13  */
     14 package org.jivesoftware.smackx.pubsub;
     15 
     16 import java.util.Calendar;
     17 
     18 /**
     19  * Defines the possible field options for a subscribe options form as defined
     20  * by <a href="http://xmpp.org/extensions/xep-0060.html#registrar-formtypes-subscribe">Section 16.4.2</a>.
     21  *
     22  * @author Robin Collier
     23  */
     24 public enum SubscribeOptionFields
     25 {
     26 	/**
     27 	 * Whether an entity wants to receive or disable notifications
     28 	 *
     29 	 * <p><b>Value: boolean</b></p>
     30 	 */
     31 	deliver,
     32 
     33 	/**
     34 	 * Whether an entity wants to receive digests (aggregations) of
     35 	 * notifications or all notifications individually.
     36 	 *
     37 	 * <p><b>Value: boolean</b></p>
     38 	 */
     39 	digest,
     40 
     41 	/**
     42 	 * The minimum number of seconds between sending any two notifications digests
     43 	 *
     44 	 * <p><b>Value: int</b></p>
     45 	 */
     46 	digest_frequency,
     47 
     48 	/**
     49 	 * The DateTime at which a leased subsscription will end ro has ended.
     50 	 *
     51 	 * <p><b>Value: {@link Calendar}</b></p>
     52 	 */
     53 	expire,
     54 
     55 	/**
     56 	 * Whether an entity wants to receive an XMPP message body in addition to
     57 	 * the payload format.
     58 	 *
     59 	 * <p><b>Value: boolean</b></p>
     60 	 */
     61 	include_body,
     62 
     63 	/**
     64 	 * The presence states for which an entity wants to receive notifications.
     65 	 *
     66 	 * <p><b>Value: {@link PresenceState}</b></p>
     67 	 */
     68 	show_values,
     69 
     70 	/**
     71 	 *
     72 	 *
     73 	 * <p><b>Value: </b></p>
     74 	 */
     75 	subscription_type,
     76 
     77 	/**
     78 	 *
     79 	 * <p><b>Value: </b></p>
     80 	 */
     81 	subscription_depth;
     82 
     83 	public String getFieldName()
     84 	{
     85 		if (this == show_values)
     86 			return "pubsub#" + toString().replace('_', '-');
     87 		return "pubsub#" + toString();
     88 	}
     89 
     90 	static public SubscribeOptionFields valueOfFromElement(String elementName)
     91 	{
     92 		String portion = elementName.substring(elementName.lastIndexOf('#' + 1));
     93 
     94 		if ("show-values".equals(portion))
     95 			return show_values;
     96 		else
     97 			return valueOf(portion);
     98 	}
     99 }
    100