001: /*
002: Copyright (c) 2004-2005, Dennis M. Sosnoski
003: All rights reserved.
004:
005: Redistribution and use in source and binary forms, with or without modification,
006: are permitted provided that the following conditions are met:
007:
008: * Redistributions of source code must retain the above copyright notice, this
009: list of conditions and the following disclaimer.
010: * Redistributions in binary form must reproduce the above copyright notice,
011: this list of conditions and the following disclaimer in the documentation
012: and/or other materials provided with the distribution.
013: * Neither the name of JiBX nor the names of its contributors may be used
014: to endorse or promote products derived from this software without specific
015: prior written permission.
016:
017: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
018: ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
019: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
020: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
021: ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
022: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
023: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
024: ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
025: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
026: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
027: */
028:
029: package org.jibx.binding.model;
030:
031: /**
032: * Model component for <b>template</b> element of binding definition.
033: *
034: * @author Dennis M. Sosnoski
035: * @version 1.0
036: */
037:
038: public class TemplateElement extends TemplateElementBase {
039: /** Template label. */
040: private String m_label;
041:
042: /** Default template for type flag. */
043: private boolean m_isDefault;
044:
045: /** Schema type name for xsi:type. */
046: private NameAttributes m_typeNameAttrs;
047:
048: /** Base schema type name for xsi:type. */
049: private NameAttributes m_baseNameAttrs;
050:
051: /** Base template extended by this one. */
052: private TemplateElement m_extendsMapping;
053:
054: /**
055: * Default constructor.
056: */
057: public TemplateElement() {
058: super (TEMPLATE_ELEMENT);
059: m_typeNameAttrs = new NameAttributes();
060: }
061:
062: /**
063: * Get template label.
064: *
065: * @return template label (<code>null</code> if none)
066: */
067: public String getLabel() {
068: return m_label;
069: }
070:
071: /**
072: * Set template label.
073: *
074: * @param label template label (<code>null</code> if none)
075: */
076: public void setLabel(String label) {
077: m_label = label;
078: }
079:
080: /**
081: * Check if default template for type.
082: *
083: * @return <code>true</code> if default for type, <code>false</code> if not
084: */
085: public boolean isDefaultTemplate() {
086: return m_isDefault;
087: }
088:
089: /**
090: * Set default template for type flag.
091: *
092: * @param dflt <code>true</code> if default for type, <code>false</code> if
093: * not
094: */
095: public void setDefaultTemplate(boolean dflt) {
096: m_isDefault = dflt;
097: }
098:
099: //
100: // Type name attribute delegate methods
101:
102: /**
103: * Get type name.
104: *
105: * @return type name text
106: */
107: public String getTypeName() {
108: return m_typeNameAttrs.getName();
109: }
110:
111: /**
112: * Set type name.
113: *
114: * @param name text for type name
115: */
116: public void setTypeName(String name) {
117: m_typeNameAttrs.setName(name);
118: }
119:
120: /**
121: * Get namespace URI specified for type.
122: *
123: * @return type namespace URI (<code>null</code> if not set)
124: */
125: public String getTypeUri() {
126: return m_typeNameAttrs.getUri();
127: }
128:
129: /**
130: * Set type namespace URI.
131: *
132: * @param uri type namespace URI (<code>null</code> if not set)
133: */
134: public void setTypeUri(String uri) {
135: m_typeNameAttrs.setUri(uri);
136: }
137:
138: /**
139: * Get namespace prefix specified for type.
140: *
141: * @return type namespace prefix (<code>null</code> if not set)
142: */
143: public String getTypePrefix() {
144: return m_typeNameAttrs.getPrefix();
145: }
146:
147: /**
148: * Set type namespace prefix.
149: *
150: * @param type prefix namespace prefix (<code>null</code> if not set)
151: */
152: public void setTypePrefix(String prefix) {
153: m_typeNameAttrs.setPrefix(prefix);
154: }
155:
156: /**
157: * Get effective namespace information for type. This call is only
158: * meaningful after validation.
159: *
160: * @return effective namespace information
161: */
162: public NamespaceElement getTypeNamespace() {
163: return m_typeNameAttrs.getNamespace();
164: }
165:
166: /**
167: * Get template extended by this one.
168: *
169: * @return template extended by this one
170: */
171: public TemplateElement getExtendsMapping() {
172: return m_extendsMapping;
173: }
174:
175: //
176: // Base type name attribute delegate methods
177:
178: /**
179: * Get base type name.
180: *
181: * @return base type name text
182: */
183: public String getBaseName() {
184: return m_baseNameAttrs.getName();
185: }
186:
187: /**
188: * Set base type name.
189: *
190: * @param name text for base type name
191: */
192: public void setBaseName(String name) {
193: m_baseNameAttrs.setName(name);
194: }
195:
196: /**
197: * Get namespace URI specified for base type.
198: *
199: * @return base type namespace URI (<code>null</code> if not set)
200: */
201: public String getBaseUri() {
202: return m_baseNameAttrs.getUri();
203: }
204:
205: /**
206: * Set base type namespace URI.
207: *
208: * @param uri base type namespace URI (<code>null</code> if if not set)
209: */
210: public void setBaseUri(String uri) {
211: m_baseNameAttrs.setUri(uri);
212: }
213:
214: /**
215: * Get namespace URI specified for base type.
216: *
217: * @return base type namespace prefix (<code>null</code> if not set)
218: */
219: public String getBasePrefix() {
220: return m_baseNameAttrs.getPrefix();
221: }
222:
223: /**
224: * Set base type namespace prefix.
225: *
226: * @param type base type namespace prefix (<code>null</code> if not set)
227: */
228: public void setBasePrefix(String prefix) {
229: m_baseNameAttrs.setPrefix(prefix);
230: }
231:
232: /**
233: * Get effective namespace information for base type. This call is only
234: * meaningful after validation.
235: *
236: * @return effective namespace information
237: */
238: public NamespaceElement getBaseNamespace() {
239: return m_typeNameAttrs.getNamespace();
240: }
241:
242: //
243: // Validation methods
244:
245: /**
246: * Prevalidate attributes of element in isolation.
247: *
248: * @param vctx validation context
249: */
250: public void prevalidate(ValidationContext vctx) {
251: m_typeNameAttrs.prevalidate(vctx);
252: super.prevalidate(vctx);
253: }
254: }
|