################################################################## | |
## | |
## 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 manifest 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 = $manifestmodel.getAttribute($context)) | |
#set ($NS = "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0") | |
#set($NS = ${attribute.getNamespace()}) | |
#set($localname = ${manifestmodel.extractLocalname($attribute)}) | |
#set($classname = "${manifestmodel.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.pkg.manifest; | |
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.pkg.${parent.getNamespace()}.${manifestmodel.camelCase($parent)}Element; | |
#end | |
#end | |
#end | |
/** | |
* Manifest implementation of OpenDocument attribute {@odf.attribute ${attribute.getQName()}}. | |
* | |
*/ | |
public class $classname extends OdfAttribute { | |
public static final OdfName ATTRIBUTE_NAME = OdfName.newName("${NS}", "manifest:${attribute}"); | |
#if ($hasDefaultValue) | |
#if ($defaultValueSet.size()>1) | |
#foreach ($defaultValue in $defaultValueSet) | |
#set ($constant = $manifestmodel.constantCase($defaultValue)) | |
#if (($defaultValue=="true" or $defaultValue=="false") and $enum == false) | |
public static final String DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)}= "$defaultValue"; | |
#else | |
public static final String DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)}= Value.${manifestmodel.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 = $manifestmodel.constantCase($value)) | |
#end${separator}${manifestmodel.escapeKeyword($constant)}("${manifestmodel.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${manifestmodel.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${manifestmodel.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 ${manifestmodel.camelCase($parent)}Element) { | |
defaultValue = "${manifestmodel.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $parent))}"; | |
} | |
#end | |
#end | |
#else | |
defaultValue = "${manifestmodel.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 | |
} | |
} |