1 /* 2 * Redistribution and use of this software and associated documentation 3 * ("Software"), with or without modification, are permitted provided 4 * that the following conditions are met: 5 * 6 * 1. Redistributions of source code must retain copyright 7 * statements and notices. Redistributions must also contain a 8 * copy of this document. 9 * 10 * 2. Redistributions in binary form must reproduce the 11 * above copyright notice, this list of conditions and the 12 * following disclaimer in the documentation and/or other 13 * materials provided with the distribution. 14 * 15 * 3. The name "Exolab" must not be used to endorse or promote 16 * products derived from this Software without prior written 17 * permission of Intalio, Inc. For written permission, 18 * please contact info@exolab.org. 19 * 20 * 4. Products derived from this Software may not be called "Exolab" 21 * nor may "Exolab" appear in their names without prior written 22 * permission of Intalio, Inc. Exolab is a registered 23 * trademark of Intalio, Inc. 24 * 25 * 5. Due credit should be given to the Exolab Project 26 * (http://www.exolab.org/). 27 * 28 * THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS 29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT 30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 32 * INTALIO, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 39 * OF THE POSSIBILITY OF SUCH DAMAGE. 40 * 41 * Copyright 1999 (C) Intalio, Inc. All Rights Reserved. 42 * 43 * $Id$ 44 */ 45 package org.exolab.castor.builder.info; 46 47 /** 48 * A class to hold group information. 49 * 50 * @author <a href="mailto:kvisco@intalio.com">Keith Visco</a> 51 * @version $Revision$ $Date: 2003-03-03 00:05:44 -0700 (Mon, 03 Mar 2003) $ 52 */ 53 public final class GroupInfo { 54 /** 55 * The compositor value that indicates that all fields are required, but 56 * order is not important. <I>default</I> 57 */ 58 public static final int ALL = 0; 59 /** 60 * The compositor value that indicates that only one field may be present. 61 */ 62 public static final int CHOICE = 1; 63 /** 64 * The compositor value that indicates that all fields are required and 65 * order is important. 66 */ 67 public static final int SEQUENCE = 2; 68 69 /** A flag indicating if the object described by this XML info can appear more than once. */ 70 private boolean _multivalued = false; 71 /** indicates the XML object must appear at least once. */ 72 private boolean _required = false; 73 /** The compositor for this XMLInfo. */ 74 private int _compositor = ALL; 75 /** The minimum occurance for this group. */ 76 private int _minOccurs = 1; 77 /** The maximum occurance for this group. */ 78 private int _maxOccurs = 1; 79 80 /** 81 * Creates a new GroupInfo. 82 */ 83 public GroupInfo() { 84 super(); 85 } //-- GroupInfo 86 87 /** 88 * Returns the maximum occurance for this group. 89 * 90 * @return the maximum occurance for this group. 91 */ 92 public int getMaxOccurs() { 93 return _maxOccurs; 94 } //-- getMaxOccurs 95 96 /** 97 * Returns the minimum occurance for this group. 98 * 99 * @return the minimum occurance for this group. 100 */ 101 public int getMinOccurs() { 102 return _minOccurs; 103 } //-- getMinOccurs 104 105 /** 106 * Return whether or not the object described by this XMLInfo is 107 * multi-valued (appears more than once in the XML document). 108 * 109 * @return true if this object can appear more than once. 110 */ 111 public boolean isMultivalued() { 112 return _multivalued; 113 } //-- isMultivalued 114 115 /** 116 * Return true if the XML object described by this GroupInfo must appear at 117 * least once in the XML document (or object model). 118 * 119 * @return true if the XML object must appear at least once. 120 */ 121 public boolean isRequired() { 122 return _required; 123 } //-- isRequired 124 125 /** 126 * Returns true if the compositor of this GroupInfo is a choice. 127 * @return true if the compositor of this GroupInfo is a choice. 128 */ 129 public boolean isChoice() { 130 return (_compositor == CHOICE); 131 } //-- isChoice 132 133 /** 134 * Returns true if the compositor of this GroupInfo is a sequence. 135 * 136 * @return true if the compositor of this GroupInfo is a sequence. 137 */ 138 public boolean isSequence() { 139 return (_compositor == SEQUENCE); 140 } //-- isSequence 141 142 /** 143 * Sets the compositor for the fields of this group to be "all". 144 */ 145 public void setAsAll() { 146 this._compositor = ALL; 147 } //-- setAsAll 148 149 /** 150 * Sets the compositor for the fields of this group to be a choice. 151 */ 152 public void setAsChoice() { 153 this._compositor = CHOICE; 154 } //-- setAsChoice 155 156 /** 157 * Sets the compositor for the fields of this group to be a sequence. 158 */ 159 public void setAsSequence() { 160 this._compositor = SEQUENCE; 161 } //-- setAsSequence 162 163 /** 164 * Sets the maximum occurance for this group. 165 * 166 * @param maxOccurs the maximum occurance this group must appear 167 */ 168 public void setMaxOccurs(final int maxOccurs) { 169 _maxOccurs = (maxOccurs < 0) ? -1 : maxOccurs; 170 } //-- setMaxOccurs 171 172 /** 173 * Sets the minimum occurrence for this group. 174 * 175 * @param minOccurs the minimum occurance this group must appear 176 */ 177 public void setMinOccurs(final int minOccurs) { 178 _minOccurs = (minOccurs < 0) ? 1 : minOccurs; 179 } //-- setMinOccurs 180 181 /** 182 * Sets whether the XML object can appear more than once in the XML 183 * document. 184 * 185 * @param multivalued the boolean indicating whether or not the object can 186 * appear more than once 187 */ 188 public void setMultivalued(final boolean multivalued) { 189 this._multivalued = multivalued; 190 } //-- setMultivalued 191 192 /** 193 * Sets whether or not the XML object must appear at least once. 194 * 195 * @param required the flag indicating whether or not this XML object is 196 * required 197 */ 198 public void setRequired(final boolean required) { 199 this._required = required; 200 } //-- setRequired 201 202 } //-- GroupInfo