blob: dfca6016fd1c87d55cd94636d33f3f8a8c94bcf2 [file] [log] [blame]
Shuyi Chend7955ce2013-05-22 14:51:55 -07001/**
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}