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.net.URL;
     17 
     18 import org.jivesoftware.smackx.Form;
     19 
     20 /**
     21  * This enumeration represents all the fields of a node configuration form.  This enumeration
     22  * is not required when using the {@link ConfigureForm} to configure nodes, but may be helpful
     23  * for generic UI's using only a {@link Form} for configuration.
     24  *
     25  * @author Robin Collier
     26  */
     27 public enum ConfigureNodeFields
     28 {
     29 	/**
     30 	 * Determines who may subscribe and retrieve items
     31 	 *
     32 	 * <p><b>Value: {@link AccessModel}</b></p>
     33 	 */
     34 	access_model,
     35 
     36 	/**
     37 	 * The URL of an XSL transformation which can be applied to
     38 	 * payloads in order to generate an appropriate message
     39 	 * body element
     40 	 *
     41 	 * <p><b>Value: {@link URL}</b></p>
     42 	 */
     43 	body_xslt,
     44 
     45 	/**
     46 	 * The collection with which a node is affiliated
     47 	 *
     48 	 * <p><b>Value: String</b></p>
     49 	 */
     50 	collection,
     51 
     52 	/**
     53 	 * The URL of an XSL transformation which can be applied to
     54 	 * payload format in order to generate a valid Data Forms result
     55 	 * that the client could display using a generic Data Forms
     56 	 * rendering engine body element.
     57 	 *
     58 	 * <p><b>Value: {@link URL}</b></p>
     59 	 */
     60 	dataform_xslt,
     61 
     62 	/**
     63 	 * Whether to deliver payloads with event notifications
     64 	 *
     65 	 * <p><b>Value: boolean</b></p>
     66 	 */
     67 	deliver_payloads,
     68 
     69 	/**
     70 	 * Whether owners or publisher should receive replies to items
     71 	 *
     72 	 * <p><b>Value: {@link ItemReply}</b></p>
     73 	 */
     74 	itemreply,
     75 
     76 	/**
     77 	 * Who may associate leaf nodes with a collection
     78 	 *
     79 	 * <p><b>Value: {@link ChildrenAssociationPolicy}</b></p>
     80 	 */
     81 	children_association_policy,
     82 
     83 	/**
     84 	 * The list of JIDs that may associate leaf nodes with a
     85 	 * collection
     86 	 *
     87 	 * <p><b>Value: List of JIDs as Strings</b></p>
     88 	 */
     89 	children_association_whitelist,
     90 
     91 	/**
     92 	 * The child nodes (leaf or collection) associated with a collection
     93 	 *
     94 	 * <p><b>Value: List of Strings</b></p>
     95 	 */
     96 	children,
     97 
     98 	/**
     99 	 * The maximum number of child nodes that can be associated with a
    100 	 * collection
    101 	 *
    102 	 * <p><b>Value: int</b></p>
    103 	 */
    104 	children_max,
    105 
    106 	/**
    107 	 * The maximum number of items to persist
    108 	 *
    109 	 * <p><b>Value: int</b></p>
    110 	 */
    111 	max_items,
    112 
    113 	/**
    114 	 * The maximum payload size in bytes
    115 	 *
    116 	 * <p><b>Value: int</b></p>
    117 	 */
    118 	max_payload_size,
    119 
    120 	/**
    121 	 * Whether the node is a leaf (default) or collection
    122 	 *
    123 	 * <p><b>Value: {@link NodeType}</b></p>
    124 	 */
    125 	node_type,
    126 
    127 	/**
    128 	 * Whether to notify subscribers when the node configuration changes
    129 	 *
    130 	 * <p><b>Value: boolean</b></p>
    131 	 */
    132 	notify_config,
    133 
    134 	/**
    135 	 * Whether to notify subscribers when the node is deleted
    136 	 *
    137 	 * <p><b>Value: boolean</b></p>
    138 	 */
    139 	notify_delete,
    140 
    141 	/**
    142 	 * Whether to notify subscribers when items are removed from the node
    143 	 *
    144 	 * <p><b>Value: boolean</b></p>
    145 	 */
    146 	notify_retract,
    147 
    148 	/**
    149 	 * Whether to persist items to storage.  This is required to have multiple
    150 	 * items in the node.
    151 	 *
    152 	 * <p><b>Value: boolean</b></p>
    153 	 */
    154 	persist_items,
    155 
    156 	/**
    157 	 * Whether to deliver notifications to available users only
    158 	 *
    159 	 * <p><b>Value: boolean</b></p>
    160 	 */
    161 	presence_based_delivery,
    162 
    163 	/**
    164 	 * Defines who can publish to the node
    165 	 *
    166 	 * <p><b>Value: {@link PublishModel}</b></p>
    167 	 */
    168 	publish_model,
    169 
    170 	/**
    171 	 * The specific multi-user chat rooms to specify for replyroom
    172 	 *
    173 	 * <p><b>Value: List of JIDs as Strings</b></p>
    174 	 */
    175 	replyroom,
    176 
    177 	/**
    178 	 * The specific JID(s) to specify for replyto
    179 	 *
    180 	 * <p><b>Value: List of JIDs as Strings</b></p>
    181 	 */
    182 	replyto,
    183 
    184 	/**
    185 	 * The roster group(s) allowed to subscribe and retrieve items
    186 	 *
    187 	 * <p><b>Value: List of strings</b></p>
    188 	 */
    189 	roster_groups_allowed,
    190 
    191 	/**
    192 	 * Whether to allow subscriptions
    193 	 *
    194 	 * <p><b>Value: boolean</b></p>
    195 	 */
    196 	subscribe,
    197 
    198 	/**
    199 	 * A friendly name for the node
    200 	 *
    201 	 * <p><b>Value: String</b></p>
    202 	 */
    203 	title,
    204 
    205 	/**
    206 	 * The type of node data, ussually specified by the namespace
    207 	 * of the payload(if any);MAY be a list-single rather than a
    208 	 * text single
    209 	 *
    210 	 * <p><b>Value: String</b></p>
    211 	 */
    212 	type;
    213 
    214 	public String getFieldName()
    215 	{
    216 		return "pubsub#" + toString();
    217 	}
    218 }
    219