| ################################################################## |
| ## |
| ## Licensed to the Apache Software Foundation (ASF) under one |
| ## or more contributor license agreements. See the NOTICE file |
| ## distributed with this work for additional information |
| ## regarding copyright ownership. The ASF licenses this file |
| ## to you under the Apache License, Version 2.0 (the |
| ## "License"); you may not use this file except in compliance |
| ## with the License. You may obtain a copy of the License at |
| ## |
| ## http://www.apache.org/licenses/LICENSE-2.0 |
| ## |
| ## Unless required by applicable law or agreed to in writing, |
| ## software distributed under the License is distributed on an |
| ## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ## KIND, either express or implied. See the License for the |
| ## specific language governing permissions and limitations |
| ## under the License. |
| ## |
| ################################################################## |
| |
| ## Template to create the list of artefacts which are to be generated |
| ## |
| ## Documentation of template development can be found in local file |
| ## TemplateHelp.html. |
| ## |
| ## Returns PuzzleComponent covering a PuzzlePiece or PuzzlePieceSet dependent if attribute is multiple times defined |
| #set($attribute = $model.getAttribute($context)) |
| #set($NS = $attribute.getNamespace()) |
| #set($localname = ${model.extractLocalname($attribute)}) |
| #set($classname = "${model.camelCase($attribute)}Attribute") |
| #set ($valueobject = "String") |
| ## |
| #set($datatypes = ${attribute.getDatatypes().withoutMultiples()}) |
| #if ($datatypes.size() > 0) |
| #set ($hasdatatype = true) |
| #else |
| #set ($hasdatatype = false) |
| #end |
| ## |
| ##2DO: Svante - getValues() vs. getValueLiterals() - only literals / constants for attribute values are taken |
| #set($values = ${attribute.getValues().withoutMultiples()}) |
| #if ($values.size() > 0) |
| #if ($values.size() ==2 && $hasdatatype == false) |
| #set ($trueFlag = false) |
| #set ($falseFlag = false) |
| #foreach ($value in $values) |
| #if ($value==true) |
| #set ($trueFlag = true) |
| #end |
| #if ($value==false) |
| #set ($falseFlag = true) |
| #end |
| #end |
| #if ($trueFlag and $falseFlag) |
| #set ($hasdatatype = true) |
| #set ($valueobject = "Boolean") |
| #end |
| #end |
| #set ($enum = true) |
| #if ($valueobject == "Boolean") |
| #set ($enum = false) |
| #end |
| #else |
| #set ($enum = false) |
| #end |
| ## |
| ## Check whether the attribute has default value. |
| ## |
| #set ($hasDefaultValue = false) |
| #foreach ($parent in ${attribute.getParents().withoutMultiples()}) |
| #if (${odfmodel.getDefaultAttributeValue($attribute, $parent)}) |
| #set ($hasDefaultValue = true) |
| #end |
| #end |
| ## |
| #set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute)) |
| #if ($hasDefaultValue and $defaultValueSet.size() == 1) |
| #foreach ($value in $defaultValueSet) |
| #set ($uniqueDefaultValue = $value) |
| #end |
| #end |
| ## |
| #include('copyright.txt') |
| /* |
| * This file is automatically generated. |
| * Don't edit manually. |
| */ |
| package org.odftoolkit.odfdom.dom.attribute.${NS}; |
| |
| import org.odftoolkit.odfdom.dom.OdfDocumentNamespace; |
| import org.odftoolkit.odfdom.pkg.OdfAttribute; |
| #if ($hasDefaultValue) |
| import org.odftoolkit.odfdom.pkg.OdfElement; |
| #end |
| import org.odftoolkit.odfdom.pkg.OdfFileDom; |
| import org.odftoolkit.odfdom.pkg.OdfName; |
| |
| #if ($hasDefaultValue and $defaultValueSet.size()>1) |
| #foreach ($parent in ${attribute.getParents().withoutMultiples()}) |
| #if ($odfmodel.getDefaultAttributeValue($attribute, $parent)) |
| import org.odftoolkit.odfdom.dom.element.${parent.getNamespace()}.${model.camelCase($parent)}Element; |
| #end |
| #end |
| #end |
| /** |
| * DOM implementation of OpenDocument attribute {@odf.attribute ${attribute.getQName()}}. |
| * |
| */ |
| public class $classname extends OdfAttribute { |
| |
| public static final OdfName ATTRIBUTE_NAME = OdfName.newName(OdfDocumentNamespace.${NS.toUpperCase()}, "$localname"); |
| #if ($hasDefaultValue) |
| #if ($defaultValueSet.size()>1) |
| #foreach ($defaultValue in $defaultValueSet) |
| #set ($constant = $model.constantCase($defaultValue)) |
| #if (($defaultValue=="true" or $defaultValue=="false") and $enum == false) |
| public static final String DEFAULT_VALUE_${model.escapeKeyword($constant)}= "$defaultValue"; |
| #else |
| public static final String DEFAULT_VALUE_${model.escapeKeyword($constant)}= Value.${model.escapeKeyword($constant)}.toString(); |
| #end |
| #end |
| #else |
| #if ($uniqueDefaultValue==""") |
| public static final String DEFAULT_VALUE = "\${uniqueDefaultValue}"; |
| #else |
| public static final String DEFAULT_VALUE = "$uniqueDefaultValue"; |
| #end |
| #end |
| #end |
| |
| /** |
| * Create the instance of OpenDocument attribute {@odf.attribute ${attribute}}. |
| * |
| * @param ownerDocument The type is <code>OdfFileDom</code> |
| */ |
| public $classname(OdfFileDom ownerDocument) { |
| super(ownerDocument, ATTRIBUTE_NAME); |
| } |
| |
| /** |
| * Returns the attribute name. |
| * |
| * @return the <code>OdfName</code> for {@odf.attribute ${attribute}}. |
| */ |
| @Override |
| public OdfName getOdfName() { |
| return ATTRIBUTE_NAME; |
| } |
| |
| /** |
| * @return Returns the name of this attribute. |
| */ |
| @Override |
| public String getName() { |
| return ATTRIBUTE_NAME.getLocalName(); |
| } |
| ## |
| #if ($enum) |
| |
| /** |
| * The value set of {@odf.attribute ${attribute}}. |
| */ |
| public enum Value { |
| #set ($separator=" ") |
| #foreach($value in $values) |
| #if (${value.toString().length()} == 1) |
| #set ($constant = $value) |
| #else |
| #set ($constant = $model.constantCase($value)) |
| #end${separator}${model.escapeKeyword($constant)}("${model.escapeLiteral($value)}")#set ($separator=", ") |
| #end ; |
| |
| private String mValue; |
| |
| Value(String value) { |
| mValue = value; |
| } |
| |
| @Override |
| public String toString() { |
| return mValue; |
| } |
| |
| public static Value enumValueOf(String value) { |
| for(Value aIter : values()) { |
| if (value.equals(aIter.toString())) { |
| return aIter; |
| } |
| } |
| return null; |
| } |
| } |
| |
| /** |
| * @param attrValue The <code>Enum</code> value of the attribute. |
| */ |
| public void setEnumValue(Value attrValue) { |
| setValue(attrValue.toString()); |
| } |
| |
| /** |
| * @return Returns the <code>Enum</code> value of the attribute |
| */ |
| public Value getEnumValue() { |
| return Value.enumValueOf(this.getValue()); |
| } |
| #end |
| ## |
| ## Handle Non-String-Attributes |
| #set ($valuetypes = ${javamodel.getValuetypes($datatypes)}) |
| #if ($valueobject != "Boolean") |
| #foreach ($valuetype in $valuetypes) |
| #set ($valueobject = $valuetype) |
| #end |
| #end |
| #if ($valueobject != "String" && $valueobject != "Double" && $valueobject != "Integer" && $valueobject != "Boolean") |
| #set ($valueobject = "String") |
| #end |
| #if ($valueobject != "String") |
| #set ($simplevalue = ${javamodel.getPrimitiveType($valueobject)}) |
| ## |
| |
| /** |
| * @param value The <code>${simplevalue}</code> value of the attribute. |
| */ |
| public void set${model.camelCase($simplevalue)}Value(${simplevalue} value) { |
| super.setValue(String.valueOf(value)); |
| } |
| |
| /** |
| * @return Returns the <code>${simplevalue}</code> value of the attribute |
| */ |
| public ${simplevalue} ${simplevalue}Value() { |
| String val = super.getValue(); |
| try { |
| return ${valueobject}.parse${model.camelCase($simplevalue)}(val); |
| } catch (NumberFormatException e) { |
| // TODO: validation handling/logging |
| throw (e); |
| } |
| } |
| #end |
| ## |
| |
| /** |
| * @param attrValue The <code>String</code> value of the attribute. |
| * @throws IllegalArgumentException If the provided attribute value is invalid |
| */ |
| @Override |
| public void setValue(String attrValue) { |
| #if ($enum) |
| #if ($hasdatatype) |
| ## enum and datatype |
| // Since we have not only enumValues, but also a DataType, we use String as common base and don't validate. |
| super.setValue(attrValue); |
| #else |
| ## enum and no datatype |
| try { |
| super.setValue(Value.enumValueOf(attrValue).toString()); |
| } catch (NullPointerException e) { |
| throw new IllegalArgumentException(e); |
| } |
| #end |
| #else |
| try { |
| super.setValue(attrValue); |
| } catch (NullPointerException e) { |
| // TODO: validation handling/logging |
| throw new IllegalArgumentException(e); |
| } catch (IllegalArgumentException e) { |
| // TODO: validation handling/logging |
| throw (e); |
| } |
| #end |
| } |
| |
| /** |
| * @return Returns the <code>String</code> value of the attribute |
| */ |
| @Override |
| public String getValue() { |
| #if ($enum) |
| #if ($hasdatatype) |
| ## enum and datatype |
| // Since we have not only enumValues, but also a DataType, we use String as common base and don't validate. |
| return super.getValue(); |
| #else |
| ## enum and no datatype |
| try { |
| return Value.enumValueOf(super.getValue()).toString(); |
| } catch (NullPointerException e) { |
| throw new IllegalArgumentException("the value of ${attribute} is not valid"); |
| } |
| #end |
| #else |
| try { |
| return super.getValue(); |
| } catch (IllegalArgumentException e) { |
| // TODO: validation handling/logging |
| throw new NumberFormatException("the value of ${attribute} is not valid"); |
| } |
| #end |
| } |
| |
| #if ($hasDefaultValue) |
| /** |
| * Returns the default value of {@odf.attribute ${attribute}}. |
| * |
| * @return the default value as <code>String</code> dependent of its element name |
| * return <code>null</code> if the default value does not exist |
| */ |
| @Override |
| public String getDefault() { |
| OdfElement parentElement = (OdfElement)getOwnerElement(); |
| String defaultValue = null; |
| if (parentElement != null) { |
| #if ($defaultValueSet.size()>1) |
| #foreach ($parent in ${attribute.getParents().withoutMultiples()}) |
| #if ($odfmodel.getDefaultAttributeValue($attribute, $parent)) |
| if (parentElement instanceof ${model.camelCase($parent)}Element) { |
| defaultValue = "${model.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $parent))}"; |
| } |
| #end |
| #end |
| #else |
| defaultValue = "${model.escapeLiteral($uniqueDefaultValue)}"; |
| #end |
| } |
| return defaultValue; |
| } |
| |
| /** |
| * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists. |
| * |
| * @return <code>true</code> if {@odf.attribute ${attribute}} has an element parent |
| * otherwise return <code>false</code> as undefined. |
| */ |
| @Override |
| public boolean hasDefault() { |
| return getOwnerElement() == null ? false : true; |
| } |
| #else |
| /** |
| * Returns the default value of {@odf.attribute ${attribute}}. |
| * |
| * @return the default value as <code>String</code> dependent of its element name |
| * return <code>null</code> if the default value does not exist |
| */ |
| @Override |
| public String getDefault() { |
| return null; |
| } |
| |
| /** |
| * Default value indicator. As the attribute default value is dependent from its element, the attribute has only a default, when a parent element exists. |
| * |
| * @return <code>true</code> if {@odf.attribute ${attribute}} has an element parent |
| * otherwise return <code>false</code> as undefined. |
| */ |
| @Override |
| public boolean hasDefault() { |
| return false; |
| } |
| #end |
| |
| /** |
| * @return Returns whether this attribute is known to be of type ID (i.e. xml:id ?) |
| */ |
| @Override |
| public boolean isId() { |
| #if ($hasdatatype and $datatypes.size() > 0) |
| #set ($datatype="") |
| #foreach($value in $datatypes) |
| #set ($datatype=$value) |
| #end |
| #if ($datatype == "ID") |
| return true; |
| #else |
| return false; |
| #end |
| #else |
| return false; |
| #end |
| } |
| } |