001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.shared.structure;
034:
035: import com.flexive.shared.SelectableObjectWithName;
036: import com.flexive.shared.value.FxString;
037:
038: import java.io.Serializable;
039: import java.util.List;
040:
041: /**
042: * Abstract base class for FxGroup and FxProperty
043: *
044: * @author Markus Plesser (markus.plesser@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
045: */
046: public abstract class FxStructureElement implements Serializable,
047: SelectableObjectWithName {
048: private static final long serialVersionUID = -5878281678610887810L;
049: private long id;
050: protected String name;
051: protected FxString label;
052: protected FxString hint;
053: protected FxMultiplicity multiplicity;
054: protected boolean overrideMultiplicity;
055: protected boolean referenced;
056: protected List<FxStructureOption> options;
057:
058: /**
059: * Constructor
060: *
061: * @param id id
062: * @param name name
063: * @param label label
064: * @param hint hint
065: * @param overrideMultiplicity may override base multiplicity
066: * @param multiplicity the multiplicity
067: * @param options options
068: */
069: protected FxStructureElement(long id, String name, FxString label,
070: FxString hint, boolean overrideMultiplicity,
071: FxMultiplicity multiplicity, List<FxStructureOption> options) {
072: this .id = id;
073: this .name = name;
074: this .label = label;
075: this .hint = hint;
076: this .overrideMultiplicity = overrideMultiplicity;
077: this .multiplicity = multiplicity;
078: this .referenced = false;
079: this .options = options;
080: if (this .options == null)
081: this .options = FxStructureOption.getEmptyOptionList(1);
082: }
083:
084: /**
085: * Internal id of this element
086: *
087: * @return internal id of this element
088: */
089: public long getId() {
090: return id;
091: }
092:
093: /**
094: * Name of this element (may be overriden with an alias)
095: *
096: * @return name of this element
097: */
098: public String getName() {
099: return name;
100: }
101:
102: /**
103: * Multilingual label of this element
104: *
105: * @return label of this element
106: */
107: public FxString getLabel() {
108: return label;
109: }
110:
111: /**
112: * Get hint text for UI
113: *
114: * @return hint text for UI
115: */
116: public FxString getHint() {
117: return hint;
118: }
119:
120: /**
121: * Indicate if assignments of this element may override the default multiplicity
122: *
123: * @return indicate if assignments of this element may override the default multiplicity
124: */
125: public boolean mayOverrideBaseMultiplicity() {
126: return overrideMultiplicity;
127: }
128:
129: /**
130: * (Base) multiplicity of this element, may be overriden in assignment depending on <code>mayOverrideMultiplicity</code>
131: *
132: * @return multiplicity of this element
133: * @see com.flexive.shared.structure.FxStructureElement#mayOverrideBaseMultiplicity()
134: */
135: public FxMultiplicity getMultiplicity() {
136: return multiplicity;
137: }
138:
139: /**
140: * Is this element referenced? (=in use)
141: *
142: * @return if this element is referenced
143: */
144: public boolean isReferenced() {
145: return referenced;
146: }
147:
148: /**
149: * Set if this element is referenced (not to be called 'by hand'!!!)
150: *
151: * @param referenced is referenced
152: */
153: public void setReferenced(boolean referenced) {
154: this .referenced = referenced;
155: }
156:
157: /**
158: * Check if an option is set for the requested key
159: *
160: * @param key option key
161: * @return if an option is set for the requested key
162: */
163: public boolean hasOption(String key) {
164: return FxStructureOption.hasOption(key, options);
165: }
166:
167: /**
168: * Get an option entry for the given key, if the key is invalid or not found a <code>FxStructureOption</code> object
169: * will be returned with <code>set</code> set to <code>false</code>, overrideable set to <code>false</code> and value
170: * set to an empty String.
171: *
172: * @param key option key
173: * @return the found option or an object that indicates that the option is not set
174: */
175: public FxStructureOption getOption(String key) {
176: return FxStructureOption.getOption(key, options);
177: }
178: }
|