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 */
14package org.jivesoftware.smackx.pubsub;
15
16import 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 */
24public 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