001/**
002 *
003 * Copyright the original author or authors
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 *     http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.jivesoftware.smackx.pubsub;
018
019import java.net.URL;
020
021import org.jivesoftware.smackx.xdata.Form;
022
023/**
024 * This enumeration represents all the fields of a node configuration form.  This enumeration
025 * is not required when using the {@link ConfigureForm} to configure nodes, but may be helpful
026 * for generic UI's using only a {@link Form} for configuration.
027 * 
028 * @author Robin Collier
029 */
030public enum ConfigureNodeFields
031{
032    /**
033     * Determines who may subscribe and retrieve items.
034     * 
035     * <p><b>Value: {@link AccessModel}</b></p>
036     */
037    access_model,
038
039    /**
040     * The URL of an XSL transformation which can be applied to 
041     * payloads in order to generate an appropriate message
042     * body element.
043     * 
044     * <p><b>Value: {@link URL}</b></p>
045     */
046    body_xslt,
047
048    /**
049     * The collection with which a node is affiliated.
050     * 
051     * <p><b>Value: String</b></p>
052     */
053    collection,
054
055    /**
056     * The URL of an XSL transformation which can be applied to 
057     * payload format in order to generate a valid Data Forms result 
058     * that the client could display using a generic Data Forms 
059     * rendering engine body element.
060     * 
061     * <p><b>Value: {@link URL}</b></p>
062     */
063    dataform_xslt,
064
065    /**
066     * Whether to deliver payloads with event notifications.
067     *
068     * <p><b>Value: boolean</b></p>
069     */
070    deliver_payloads,
071
072    /**
073     * Whether owners or publisher should receive replies to items.
074     *
075     * <p><b>Value: {@link ItemReply}</b></p>
076     */
077    itemreply,
078
079    /**
080     * Who may associate leaf nodes with a collection.
081     * 
082     * <p><b>Value: {@link ChildrenAssociationPolicy}</b></p>
083     */
084    children_association_policy,
085
086    /**
087     * The list of JIDs that may associate leaf nodes with a 
088     * collection.
089     * 
090     * <p><b>Value: List of JIDs as Strings</b></p>
091     */
092    children_association_whitelist,
093
094    /**
095     * The child nodes (leaf or collection) associated with a collection.
096     * 
097     * <p><b>Value: List of Strings</b></p>
098     */
099    children,
100
101    /**
102     * The maximum number of child nodes that can be associated with a 
103     * collection.
104     * 
105     * <p><b>Value: int</b></p>
106     */
107    children_max,
108
109    /**
110     * The maximum number of items to persist.
111     * 
112     * <p><b>Value: int</b></p>
113     */
114    max_items,
115
116    /**
117     * The maximum payload size in bytes.
118     * 
119     * <p><b>Value: int</b></p>
120     */
121    max_payload_size,
122
123    /**
124     * Whether the node is a leaf (default) or collection.
125     * 
126     * <p><b>Value: {@link NodeType}</b></p>
127     */
128    node_type,
129
130    /**
131     * Whether to notify subscribers when the node configuration changes.
132     * 
133     * <p><b>Value: boolean</b></p>
134     */
135    notify_config,
136
137    /**
138     * Whether to notify subscribers when the node is deleted.
139     * 
140     * <p><b>Value: boolean</b></p>
141     */
142    notify_delete,
143
144    /**
145     * Whether to notify subscribers when items are removed from the node.
146     * 
147     * <p><b>Value: boolean</b></p>
148     */
149    notify_retract,
150
151    /**
152     * Whether to persist items to storage.  This is required to have. multiple 
153     * items in the node. 
154     * 
155     * <p><b>Value: boolean</b></p>
156     */
157    persist_items,
158
159    /**
160     * Whether to deliver notifications to available users only.
161     * 
162     * <p><b>Value: boolean</b></p>
163     */
164    presence_based_delivery,
165
166    /**
167     * Defines who can publish to the node.
168     * 
169     * <p><b>Value: {@link PublishModel}</b></p>
170     */
171    publish_model,
172
173    /**
174     * The specific multi-user chat rooms to specify for replyroom.
175     * 
176     * <p><b>Value: List of JIDs as Strings</b></p>
177     */
178    replyroom,
179
180    /**
181     * The specific JID(s) to specify for replyto.
182     * 
183     * <p><b>Value: List of JIDs as Strings</b></p>
184     */
185    replyto,
186
187    /**
188     * The roster group(s) allowed to subscribe and retrieve items.
189     * 
190     * <p><b>Value: List of strings</b></p>
191     */
192    roster_groups_allowed,
193
194    /**
195     * Whether to allow subscriptions.
196     * 
197     * <p><b>Value: boolean</b></p>
198     */
199    subscribe,
200
201    /**
202     * A friendly name for the node.
203     * 
204     * <p><b>Value: String</b></p>
205     */
206    title,
207
208    /**
209     * The type of node data, ussually specified by the namespace 
210     * of the payload(if any);MAY be a list-single rather than a 
211     * text single.
212     * 
213     * <p><b>Value: String</b></p>
214     */
215    type;
216
217    public String getFieldName()
218    {
219        return "pubsub#" + toString();
220    }
221}