################################################################## ## ## 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 Java class representing an ODF manifest element ## ## Documentation of template development can be found in local file ## TemplateHelp.html. ## #set ($element = ${manifestmodel.getElement($context)}) #set ($oldelement = ${oldmodel.getElement($context)}) ###set ($NS = ${element.getNamespace()}) #set ($classname = "${manifestmodel.camelCase($element)}Element") ## ## Set child element and child attributes #set ($children = ${element.getChildElements().withoutMultiples()}) #set ($attributes = ${element.getAttributes().withoutMultiples()}) ## #set ($baseclassname = "OdfElement") #set ($baseHasMandatoryAttr = false) ## ## Test if this element has mandatory (non optional) attributes #set ($hasMandatoryAttr = false) #foreach ($attribute in $attributes) #if (${element.isMandatory($attribute)}) #set ($hasMandatoryAttr = true) #set ($mandatoryAttr = $attribute) #end #end ## ## Begin Code #include('copyright.txt') /* * This file is automatically generated. * Don't edit manually. */ package org.odftoolkit.odfdom.pkg.manifest; ## ## --------------------------------------------------- ## Imports ## --------------------------------------------------- ## import org.odftoolkit.odfdom.pkg.OdfElement; import org.odftoolkit.odfdom.pkg.OdfFileDom; import org.odftoolkit.odfdom.pkg.OdfName; ## ## --------------------------------------------------- ## Class ## --------------------------------------------------- ## /** * Manifest implementation of OpenDocument element {@odf.element manifest:${context}}. * #if ($anychild) * This class can have any org.w3c.dom.Element child element. #end #if ($anyattribute) * This class can have any org.w3c.dom.Attribute attribute. #end */ public class $classname extends $baseclassname { public static final OdfName ELEMENT_NAME = OdfName.newName("urn:oasis:names:tc:opendocument:xmlns:manifest:1.0", "manifest:${element}"); /** * Create the instance of $classname * * @param ownerDoc The type is OdfFileDom */ public $classname(OdfFileDom ownerDoc) { super(ownerDoc, ELEMENT_NAME); } /** * Get the element name * * @return return OdfName the name of element {@odf.element manifest:${context}}. */ public OdfName getOdfName() { return ELEMENT_NAME; } ## ## --------------------------------------------------- ## Add init method if this element or the base ## element has mandatory attributes ## TODO: NO caller use this method. ## --------------------------------------------------- ## ## --------------------------------------------------- ## Attribute getters and setters ## --------------------------------------------------- ## #foreach ($attr in $attributes) #set($attri = ${manifestmodel.getAttribute($attr.getQName())}) #set ($valueObject = "String") #set ($simpleValue = "") #set ($dataTypes = ${attri.getDatatypes().withoutMultiples()}) #set ($valueTypes = ${javamodel.getValuetypes($dataTypes)}) #foreach ($valueType in $valueTypes) #set ($valueObject = $valueType) #end ## use attri get all of the values. #set($values = ${attri.getValues().withoutMultiples()}) #if ($values.size() ==2 && $dataTypes.size()==0) #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 #if ($valueObject != "String" && $valueObject != "Double" && $valueObject != "Integer" && $valueObject != "Boolean") #set ($valueObject = "String") #end #if ($valueObject != "String") #set ($simpleValue = ${javamodel.getPrimitiveType($valueObject)}) #end #if ($attr != "*") #set ($attribute = ${attr.withMultiples()}) #set ($aNS = ${attribute.getNamespace()}) #set ($aClassname = "${manifestmodel.camelCase($attribute)}Attribute") #set ($aParam = "${manifestmodel.javaCase($attribute)}Value") /** * Receives the value of the ODFDOM attribute representation $aClassname , See {@odf.attribute manifest:${attribute.getQName()}} * #if (${element.isMandatory($attribute)}) * Attribute is mandatory. * #end * @return - the $valueObject , the value or null, if the attribute is not set and no default value defined. */ public $valueObject get${aClassname}() { $aClassname attr = ($aClassname) getOdfAttribute(${aClassname}.ATTRIBUTE_NAME); if (attr != null) { #if ($simpleValue!="") return ${valueObject}.valueOf(attr.${simpleValue}Value()); #else return ${valueObject}.valueOf(attr.getValue()); #end } #if ($odfmodel.getDefaultAttributeValue($attribute, $element)) #set ($defaultValue = ${manifestmodel.escapeLiteral($odfmodel.getDefaultAttributeValue($attribute, $element))}) #set ($defaultValueSet = $odfmodel.getDefaultAttributeValues($attribute)) #if ($defaultValueSet.size()>1) #set ($constant = $manifestmodel.constantCase($defaultValue)) #if ($valueObject == "String") return ${aClassname}.DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)}; #else return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE_${manifestmodel.escapeKeyword($constant)}); #end #else #if ($valueObject == "String") return ${aClassname}.DEFAULT_VALUE; #else return ${valueObject}.valueOf(${aClassname}.DEFAULT_VALUE); #end #end #else return null; #end } /** * Sets the value of ODFDOM attribute representation $aClassname , See {@odf.attribute manifest:${attribute.getQName()}} * * @param $aParam The type is $valueObject */ public void set${aClassname}($valueObject $aParam) { $aClassname attr = new ${aClassname}((OdfFileDom) this.ownerDocument); setOdfAttribute(attr); #if ($valueObject == "String") attr.setValue($aParam); #else attr.set${manifestmodel.camelCase($simpleValue)}Value($aParam.${simpleValue}Value()); #end } #end #end ## ## --------------------------------------------------- ## Methods for child element creation ## --------------------------------------------------- ## #foreach($ch in $children) #if ($ch != "*") #set ($child = ${ch.withMultiples()}) #set ($cClassname = "${manifestmodel.camelCase($child)}Element") #set ($cVar = ${manifestmodel.javaCase($child)}) #set ($ch_attributes = ${child.getAttributes().withoutMultiples()}) ##set has parameter flag #set ($hasParams = false) #foreach ($ch_attribute in $ch_attributes) #if (${child.isMandatory($ch_attribute)}) #set ($hasParams = true) #end #end #if ($hasParams) /** * Create child element {@odf.element manifest:${child}}. * #set ($seperateFlag="") #set ($params="") #foreach ($ch_attr in $ch_attributes) #if (${child.isMandatory($ch_attr)}) #set($ch_attri = ${manifestmodel.getAttribute($ch_attr.getQName())}) #set ($ch_ValueObject = "String") #set ($ch_SimpleValue = "") #set ($ch_DataTypes = ${ch_attri.getDatatypes().withoutMultiples()}) #set ($ch_ValueTypes = ${javamodel.getValuetypes($ch_DataTypes)}) #foreach ($ch_ValueType in $ch_ValueTypes) #set ($ch_ValueObject = $ch_ValueType) #end ## use ch_attri get all of the values. #set($ch_Values = ${ch_attri.getValues().withoutMultiples()}) #if ($ch_Values.size() ==2 && $ch_DataTypes.size()==0) #set ($trueFlag = false) #set ($falseFlag = false) #foreach ($ch_Value in $ch_Values) #if ($ch_Value==true) #set ($trueFlag = true) #end #if ($ch_Value==false) #set ($falseFlag = true) #end #end #if ($trueFlag and $falseFlag) #set ($ch_Hasdatatype = true) #set ($ch_ValueObject = "Boolean") #end #end #if ($ch_ValueObject != "String" && $ch_ValueObject != "Double" && $ch_ValueObject != "Integer" && $ch_ValueObject != "Boolean") #set ($ch_ValueObject = "String") #end #if ($ch_ValueObject != "String") #set ($ch_SimpleValue = ${javamodel.getPrimitiveType($ch_ValueObject)}) #end #if ($ch_attr != "*") #set ($attribute = ${ch_attr.withMultiples()}) #set ($aNS = ${attribute.getNamespace()}) #set ($aClassname = "${manifestmodel.camelCase($attribute)}Attribute") #set ($aParam = "${manifestmodel.javaCase($attribute)}Value") * @param $aParam the $ch_ValueObject value of $aClassname, see {@odf.attribute manifest:${attribute.getQName()}} at specification #if ($ch_SimpleValue!="") #set ($params="${params}${seperateFlag}${ch_SimpleValue} ${aParam}") #else #set ($params="${params}${seperateFlag}${ch_ValueObject} ${aParam}") #end #set ($seperateFlag=", ") #end #end #end ## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions) ## but we can compare by name #if (!$oldelement || !${oldelement.getChildElements().containsName($child)}) * Child element is new in Odf 1.2 * #end #if (${element.isMandatory($child)}) * Child element is mandatory. * #end * @return the element {@odf.element manifest:${child}} */ public $cClassname new${cClassname}($params) { $cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class); #foreach ($ch_attr in $ch_attributes) #if ($ch_attr != "*" && ${child.isMandatory($ch_attr)}) #set ($aClassname = "${manifestmodel.camelCase($ch_attr)}Attribute") #set ($aParam = "${manifestmodel.javaCase($ch_attr)}Value") ${cVar}.set$aClassname($aParam); #end #end this.appendChild($cVar); return $cVar; } #else /** * Create child element {@odf.element manifest:${child}}. * ## Compare element from old and new Spec. A direct comparison is not possible (both encapsulate different RelaxNG Expressions) ## but we can compare by name #if (!$oldelement || !${oldelement.getChildElements().containsName($child)}) * Child element is new in Odf 1.2 * #end #if (${element.isMandatory($child)}) * Child element is mandatory. * #end * @return the element {@odf.element manifest:${child}} */ public $cClassname new${cClassname}() { $cClassname $cVar = ((OdfFileDom) this.ownerDocument).newOdfElement(${cClassname}.class); this.appendChild($cVar); return $cVar; } #end #end #end ## ## ----------------------------------------------------- ## New: newTextNode ## ----------------------------------------------------- ## #if ($element.canHaveText()) /** * Add text content. Only elements which are allowed to have text content offer this method. */ public void newTextNode(String content) { if (content != null && !content.equals("")) { this.appendChild(this.getOwnerDocument().createTextNode(content)); } } #end }