| /************************************************************************ |
| * |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER |
| * |
| * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. |
| * |
| * Use is subject to license terms. |
| * |
| * Licensed 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. You can also |
| * obtain a copy of the License at http://odftoolkit.org/docs/license.txt |
| * |
| * 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. |
| * |
| ************************************************************************/ |
| package org.odftoolkit.simple.meta; |
| |
| import java.text.SimpleDateFormat; |
| import java.util.ArrayList; |
| import java.util.Calendar; |
| import java.util.Date; |
| import java.util.List; |
| |
| import org.odftoolkit.odfdom.dom.element.dc.DcCreatorElement; |
| import org.odftoolkit.odfdom.dom.element.dc.DcDateElement; |
| import org.odftoolkit.odfdom.dom.element.dc.DcDescriptionElement; |
| import org.odftoolkit.odfdom.dom.element.dc.DcLanguageElement; |
| import org.odftoolkit.odfdom.dom.element.dc.DcSubjectElement; |
| import org.odftoolkit.odfdom.dom.element.dc.DcTitleElement; |
| import org.odftoolkit.odfdom.dom.element.meta.MetaCreationDateElement; |
| import org.odftoolkit.odfdom.dom.element.meta.MetaDocumentStatisticElement; |
| import org.odftoolkit.odfdom.dom.element.meta.MetaEditingCyclesElement; |
| import org.odftoolkit.odfdom.dom.element.meta.MetaEditingDurationElement; |
| import org.odftoolkit.odfdom.dom.element.meta.MetaGeneratorElement; |
| import org.odftoolkit.odfdom.dom.element.meta.MetaInitialCreatorElement; |
| import org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement; |
| import org.odftoolkit.odfdom.dom.element.meta.MetaPrintDateElement; |
| import org.odftoolkit.odfdom.dom.element.meta.MetaPrintedByElement; |
| import org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement; |
| import org.odftoolkit.odfdom.dom.element.office.OfficeDocumentMetaElement; |
| import org.odftoolkit.odfdom.dom.element.office.OfficeMetaElement; |
| import org.odftoolkit.odfdom.pkg.OdfElement; |
| import org.odftoolkit.odfdom.pkg.OdfFileDom; |
| import org.odftoolkit.odfdom.type.Duration; |
| |
| /** |
| * <code>Meta</code> represent the meta data feature in the ODF document. |
| * <p> |
| * It provides convenient method to get meta data info. |
| * |
| */ |
| public class Meta { |
| |
| private OfficeMetaElement mOfficeMetaElement; |
| |
| /** |
| * Constructor of <code>Meta</code> feature. |
| * |
| * @param metaDom the file DOM element of meta.xml |
| */ |
| public Meta(OdfFileDom metaDom) { |
| OfficeDocumentMetaElement metaEle = OdfElement.findFirstChildNode(OfficeDocumentMetaElement.class, metaDom); |
| mOfficeMetaElement = OdfElement.findFirstChildNode(OfficeMetaElement.class, metaEle); |
| } |
| |
| /** |
| * Get the instance of <code>OfficeMetaElement</code> which represents this feature. |
| * |
| * @return the instance of OfficeMetaElement |
| */ |
| public OfficeMetaElement getOfficeMetaElement() { |
| return mOfficeMetaElement; |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>MetaGeneratorElement</code>. |
| * |
| * @return the generator info of the current document. |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaGeneratorElement. |
| */ |
| public String getGenerator() { |
| MetaGeneratorElement metaGenerator = OdfElement.findFirstChildNode( |
| MetaGeneratorElement.class, mOfficeMetaElement); |
| if (metaGenerator != null) { |
| return metaGenerator.getTextContent(); |
| } |
| return null; |
| |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>MetaGeneratorElement</code>. |
| * |
| * @param generator set the specified document generator. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaGeneratorElement. |
| */ |
| public void setGenerator(String generator) { |
| MetaGeneratorElement metaGenerator = OdfElement.findFirstChildNode( |
| MetaGeneratorElement.class, mOfficeMetaElement); |
| if (metaGenerator == null) { |
| metaGenerator = mOfficeMetaElement.newMetaGeneratorElement(); |
| } |
| metaGenerator.setTextContent(generator); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>DcTitleElement</code>. |
| * |
| * @return the title of the current document. |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcTitleElement. |
| */ |
| public String getTitle() { |
| |
| DcTitleElement titleEle = OdfElement.findFirstChildNode( |
| DcTitleElement.class, mOfficeMetaElement); |
| if (titleEle != null) { |
| return titleEle.getTextContent(); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>DcTitleElement</code>. |
| * |
| * @param title set the specified document title |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcTitleElement. |
| */ |
| public void setTitle(String title) { |
| DcTitleElement titleEle = OdfElement.findFirstChildNode( |
| DcTitleElement.class, mOfficeMetaElement); |
| if (titleEle == null) { |
| titleEle = mOfficeMetaElement.newDcTitleElement(); |
| } |
| titleEle.setTextContent(title); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>DcDescriptionElement</code>. |
| * |
| * @return the description of the current document; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcDescriptionElement. |
| */ |
| public String getDescription() { |
| DcDescriptionElement descEle = OdfElement.findFirstChildNode( |
| DcDescriptionElement.class, mOfficeMetaElement); |
| if (descEle != null) { |
| return descEle.getTextContent(); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>DcDescriptionElement</code>. |
| * |
| * @param description set the specified document description |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcDescriptionElement. |
| */ |
| public void setDescription(String description) { |
| DcDescriptionElement descEle = OdfElement.findFirstChildNode( |
| DcDescriptionElement.class, mOfficeMetaElement); |
| if (descEle == null) { |
| descEle = mOfficeMetaElement.newDcDescriptionElement(); |
| } |
| descEle.setTextContent(description); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>DcSubjectElement</code>. |
| * |
| * @return the subject of the current document. |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcSubjectElement. |
| */ |
| public String getSubject() { |
| DcSubjectElement subjectEle = OdfElement.findFirstChildNode( |
| DcSubjectElement.class, mOfficeMetaElement); |
| if (subjectEle != null) { |
| return subjectEle.getTextContent(); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>DcSubjectElement</code>. |
| * |
| * @param subject set the specified document subject. |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcSubjectElement. |
| */ |
| public void setSubject(String subject) { |
| DcSubjectElement subjectEle = OdfElement.findFirstChildNode( |
| DcSubjectElement.class, mOfficeMetaElement); |
| if (subjectEle == null) { |
| subjectEle = mOfficeMetaElement.newDcSubjectElement(); |
| } |
| subjectEle.setTextContent(subject); |
| } |
| |
| /** |
| * Receives the list value of the odf dom element representation |
| * <code>MetaKeywordElement</code>. |
| * |
| * @return the keywords of the current document. |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement. |
| */ |
| public List<String> getKeywords() { |
| List<String> keywords = new ArrayList<String>(); |
| MetaKeywordElement keywordEle = OdfElement.findFirstChildNode( |
| MetaKeywordElement.class, mOfficeMetaElement); |
| if (keywordEle != null) { |
| keywords.add(keywordEle.getTextContent()); |
| MetaKeywordElement keywordNext; |
| while ((keywordNext = OdfElement.findNextChildNode( |
| MetaKeywordElement.class, keywordEle)) != null) { |
| keywords.add(keywordNext.getTextContent()); |
| keywordEle = keywordNext; |
| } |
| return keywords; |
| } else { |
| return null; |
| } |
| |
| } |
| |
| /** |
| * Sets the list value of the odf dom element representation |
| * <code>MetaKeywordElement</code>. |
| * |
| * @param keyList set the specified list of keywords. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement. |
| */ |
| public void setKeywords(List<String> keyList) { |
| MetaKeywordElement keywordEle = OdfElement.findFirstChildNode( |
| MetaKeywordElement.class, mOfficeMetaElement); |
| List<MetaKeywordElement> toBeDeleted = new ArrayList<MetaKeywordElement>(); |
| if (keywordEle != null) { |
| MetaKeywordElement keywordTmp; |
| toBeDeleted.add(keywordEle); |
| while ((keywordTmp = OdfElement.findNextChildNode( |
| MetaKeywordElement.class, keywordEle)) != null) { |
| keywordEle = keywordTmp; |
| toBeDeleted.add(keywordTmp); |
| } |
| |
| } |
| |
| // remove the original |
| for (MetaKeywordElement keyele : toBeDeleted) { |
| mOfficeMetaElement.removeChild(keyele); |
| } |
| // add new |
| for (int i = 0; i < keyList.size(); i++) { |
| MetaKeywordElement keywordElement = mOfficeMetaElement.newMetaKeywordElement(); |
| keywordElement.setTextContent(keyList.get(i)); |
| } |
| |
| } |
| |
| /** |
| * Add the keyword to the current document. |
| * Create child element <code>MetaKeywordElement</code>. |
| * |
| * @param keyword the value of child element <code>MetaKeywordElement</code>. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaKeywordElement. |
| */ |
| public void addKeyword(String keyword) { |
| MetaKeywordElement keywordElement = mOfficeMetaElement.newMetaKeywordElement(); |
| keywordElement.setTextContent(keyword); |
| } |
| |
| /** |
| * Receives the list value of the odf dom element representation |
| * <code>MetaUserDefinedElement</code>. |
| * |
| * @return get the list of user-defined metadata names; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement. |
| */ |
| public List<String> getUserDefinedDataNames() { |
| List<String> definedNames = new ArrayList<String>(); |
| MetaUserDefinedElement definedEle = OdfElement.findFirstChildNode( |
| MetaUserDefinedElement.class, mOfficeMetaElement); |
| if (definedEle != null) { |
| |
| definedNames.add(definedEle.getMetaNameAttribute()); |
| MetaUserDefinedElement definedNext; |
| while ((definedNext = OdfElement.findNextChildNode( |
| MetaUserDefinedElement.class, definedEle)) != null) { |
| |
| definedNames.add(definedNext.getMetaNameAttribute()); |
| |
| definedEle = definedNext; |
| } |
| return definedNames; |
| } else { |
| return null; |
| } |
| } |
| |
| /** |
| * Receives the odf dom element representation |
| * <code>MetaUserDefinedElement</code> by attribute name. |
| * |
| * @param name the name of the user-defined metadata |
| * @return the <code>MetaUserDefinedElement</code> which is identified by the specified name; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement. |
| */ |
| public MetaUserDefinedElement getUserDefinedElementByAttributeName( |
| String name) { |
| MetaUserDefinedElement definedEle = OdfElement.findFirstChildNode( |
| MetaUserDefinedElement.class, mOfficeMetaElement); |
| if (definedEle != null) { |
| if (definedEle.getMetaNameAttribute().equals(name)) { |
| return definedEle; |
| } |
| MetaUserDefinedElement definedNext; |
| while ((definedNext = OdfElement.findNextChildNode( |
| MetaUserDefinedElement.class, definedEle)) != null) { |
| |
| if (definedNext.getMetaNameAttribute().equals(name)) { |
| return definedNext; |
| } |
| |
| definedEle = definedNext; |
| } |
| return null; |
| } else { |
| return null; |
| } |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>MetaUserDefinedElement</code> by attribute name. |
| * |
| * @param name the name of the user-defined metadata |
| * @return the value of the user-defined metadata with the specified name; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement. |
| */ |
| public String getUserDefinedDataValue(String name) { |
| MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name); |
| if (definedElement != null) { |
| return definedElement.getTextContent(); |
| } |
| return null; |
| } |
| |
| /** |
| * Receives the data type of the odf dom element representation |
| * <code>MetaUserDefinedElement</code> by attribute name. |
| * |
| * @param name the name of the user-defined metadata |
| * @return the data type of the user-defined metadata with the specified name; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement. |
| */ |
| public String getUserDefinedDataType(String name) { |
| MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name); |
| if (definedElement != null) { |
| return definedElement.getMetaValueTypeAttribute(); |
| } |
| return null; |
| } |
| |
| /** |
| * Remove the odf dom element representation |
| * <code>MetaUserDefinedElement</code> by attribute name. |
| * |
| * @param name the name of the user-defined metadata |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement. |
| */ |
| public void removeUserDefinedDataByName(String name) { |
| MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name); |
| if (definedElement != null) { |
| mOfficeMetaElement.removeChild(definedElement); |
| } |
| |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>MetaUserDefinedElement</code> by attribute name. |
| * |
| * @param name the name need to set for the user-defined metadata |
| * @param value the value need to set for the user-defined metadata |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement. |
| */ |
| public void setUserDefinedDataValue(String name, String value) { |
| MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name); |
| if (definedElement != null) { |
| definedElement.setTextContent(value); |
| } |
| |
| } |
| |
| /** |
| * Sets the data type of the odf dom element representation |
| * <code>MetaUserDefinedElement</code> by attribute name. |
| * |
| * @param name the name need to set for the user-defined metadata |
| * @param value the value need to set for the user-defined metadata |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement. |
| */ |
| public void setUserDefinedDataType(String name, String value) { |
| MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name); |
| if (definedElement != null) { |
| definedElement.setMetaValueTypeAttribute(value); |
| } |
| |
| } |
| |
| /** |
| * Sets the odf dom element representation |
| * <code>MetaUserDefinedElement</code>, if the element with the attribute name exists,then |
| * update;or create a new element if type or value is null,the original will |
| * not be updated. |
| * |
| * @param name the name need to set for the user-defined metadata |
| * @param type the data type need to set for the user-defined metadata |
| * @param value the value need to set for the user-defined metadata |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaUserDefinedElement. |
| */ |
| public void setUserDefinedData(String name, String type, String value) { |
| // test if name exists |
| MetaUserDefinedElement definedElement = getUserDefinedElementByAttributeName(name); |
| // if exists, then update,if parameter is null, then don't change |
| if (definedElement != null) { |
| if (type != null) { |
| definedElement.setMetaValueTypeAttribute(type); |
| } |
| if (value != null) { |
| definedElement.setTextContent(value); |
| } |
| } else { |
| // if not exists, add |
| definedElement = mOfficeMetaElement.newMetaUserDefinedElement(name, |
| type); |
| definedElement.setTextContent(value); |
| |
| } |
| |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>MetaInitialCreatorElement</code>. |
| * |
| * @return get the initial creator of the current document; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaInitialCreatorElement. |
| */ |
| public String getInitialCreator() { |
| MetaInitialCreatorElement iniCreatorEle = OdfElement.findFirstChildNode(MetaInitialCreatorElement.class, |
| mOfficeMetaElement); |
| if (iniCreatorEle != null) { |
| return iniCreatorEle.getTextContent(); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>MetaInitialCreatorElement</code>. |
| * |
| * @param initialCreator set the specified initial creator |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaInitialCreatorElement. |
| */ |
| public void setInitialCreator(String initialCreator) { |
| MetaInitialCreatorElement iniCreatorEle = OdfElement.findFirstChildNode(MetaInitialCreatorElement.class, |
| mOfficeMetaElement); |
| if (iniCreatorEle == null) { |
| iniCreatorEle = mOfficeMetaElement.newMetaInitialCreatorElement(); |
| } |
| iniCreatorEle.setTextContent(initialCreator); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>DcCreatorElement</code>. |
| * |
| * @return the creator of the current document; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcCreatorElement. |
| */ |
| public String getCreator() { |
| DcCreatorElement creatorEle = OdfElement.findFirstChildNode( |
| DcCreatorElement.class, mOfficeMetaElement); |
| if (creatorEle != null) { |
| return creatorEle.getTextContent(); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>DcCreatorElement</code>. |
| * |
| * @param creator set the specified creator |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcCreatorElement. |
| */ |
| public void setCreator(String creator) { |
| DcCreatorElement creatorEle = OdfElement.findFirstChildNode( |
| DcCreatorElement.class, mOfficeMetaElement); |
| if (creatorEle == null) { |
| creatorEle = mOfficeMetaElement.newDcCreatorElement(); |
| } |
| creatorEle.setTextContent(creator); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>MetaPrintedByElement</code> |
| * |
| * @return the name of the last person who printed the current document; |
| * <p> |
| * <code>null</code>, if element is not set |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaPrintedByElement. |
| */ |
| public String getPrintedBy() { |
| MetaPrintedByElement printedByEle = OdfElement.findFirstChildNode( |
| MetaPrintedByElement.class, mOfficeMetaElement); |
| if (printedByEle != null) { |
| return printedByEle.getTextContent(); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>MetaPrintedByElement</code>. |
| * |
| * @param printedBy the name need to set for the last person who printed the current document |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaPrintedByElement. |
| */ |
| public void setPrintedBy(String printedBy) { |
| MetaPrintedByElement printedByEle = OdfElement.findFirstChildNode( |
| MetaPrintedByElement.class, mOfficeMetaElement); |
| if (printedByEle == null) { |
| printedByEle = mOfficeMetaElement.newMetaPrintedByElement(); |
| } |
| printedByEle.setTextContent(printedBy); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>MetaCreationDateElement</code> |
| * |
| * @return the date and time when the document was created initially; |
| * <p> |
| * <code>null</code>, if element is not set |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaCreationDateElement. |
| */ |
| public Calendar getCreationDate() { |
| MetaCreationDateElement creationDateEle = OdfElement.findFirstChildNode(MetaCreationDateElement.class, |
| mOfficeMetaElement); |
| if (creationDateEle != null) { |
| return stringToCalendar(creationDateEle.getTextContent()); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>MetaCreationDateElement</code> . |
| * |
| * @param creationDate the date and time need to set |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaCreationDateElement. |
| */ |
| public void setCreationDate(Calendar creationDate) { |
| MetaCreationDateElement creationDateEle = OdfElement.findFirstChildNode(MetaCreationDateElement.class, |
| mOfficeMetaElement); |
| if (creationDateEle == null) { |
| creationDateEle = mOfficeMetaElement.newMetaCreationDateElement(); |
| } |
| creationDateEle.setTextContent(calendarToString(creationDate)); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>DcDateElement</code>. |
| * |
| * @return the date and time when the document was last modified; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcDateElement. |
| */ |
| public Calendar getDcdate() { |
| DcDateElement dcDateEle = OdfElement.findFirstChildNode( |
| DcDateElement.class, mOfficeMetaElement); |
| if (dcDateEle != null) { |
| return stringToCalendar(dcDateEle.getTextContent()); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>DcDateElement</code>. |
| * |
| * @param dcdate the date and time need to set |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcDateElement. |
| */ |
| public void setDcdate(Calendar dcdate) { |
| DcDateElement dcDateEle = OdfElement.findFirstChildNode( |
| DcDateElement.class, mOfficeMetaElement); |
| if (dcDateEle == null) { |
| dcDateEle = mOfficeMetaElement.newDcDateElement(); |
| } |
| dcDateEle.setTextContent(calendarToString(dcdate)); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>MetaPrintDateElement</code>. |
| * |
| * @return the date and time when the document was last printed; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaPrintDateElement |
| */ |
| public Calendar getPrintDate() { |
| MetaPrintDateElement printDateEle = OdfElement.findFirstChildNode( |
| MetaPrintDateElement.class, mOfficeMetaElement); |
| if (printDateEle != null) { |
| return stringToCalendar(printDateEle.getTextContent()); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>MetaPrintDateElement</code>. |
| * |
| * @param printDate the date and time need to set |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaPrintDateElement |
| */ |
| public void setPrintDate(Calendar printDate) { |
| MetaPrintDateElement printDateEle = OdfElement.findFirstChildNode( |
| MetaPrintDateElement.class, mOfficeMetaElement); |
| if (printDateEle == null) { |
| printDateEle = mOfficeMetaElement.newMetaPrintDateElement(); |
| } |
| printDateEle.setTextContent(calendarToString(printDate)); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>DcLanguageElement</code>. |
| * |
| * @return the default language of the document; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcLanguageElement |
| */ |
| public String getLanguage() { |
| DcLanguageElement languageEle = OdfElement.findFirstChildNode( |
| DcLanguageElement.class, mOfficeMetaElement); |
| if (languageEle != null) { |
| return languageEle.getTextContent(); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>DcLanguageElement</code>. |
| * |
| * @param language the default language need to set fo the current document |
| * @see org.odftoolkit.odfdom.dom.element.meta.DcLanguageElement |
| */ |
| public void setLanguage(String language) { |
| DcLanguageElement languageEle = OdfElement.findFirstChildNode( |
| DcLanguageElement.class, mOfficeMetaElement); |
| if (languageEle == null) { |
| languageEle = mOfficeMetaElement.newDcLanguageElement(); |
| } |
| languageEle.setTextContent(language); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>MetaEditingCyclesElement</code> . |
| * |
| * @return the number of times that the document has been edited; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaEditingCyclesElement |
| */ |
| public Integer getEditingCycles() { |
| MetaEditingCyclesElement editingCyclesEle = OdfElement.findFirstChildNode(MetaEditingCyclesElement.class, |
| mOfficeMetaElement); |
| if (editingCyclesEle != null) { |
| return Integer.valueOf(editingCyclesEle.getTextContent()); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>MetaEditingCyclesElement</code> . |
| * |
| * @param editingCycles set the specified edit times |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaEditingCyclesElement |
| */ |
| public void setEditingCycles(Integer editingCycles) { |
| MetaEditingCyclesElement editingCyclesEle = OdfElement.findFirstChildNode(MetaEditingCyclesElement.class, |
| mOfficeMetaElement); |
| if (editingCyclesEle == null) { |
| editingCyclesEle = mOfficeMetaElement.newMetaEditingCyclesElement(); |
| } |
| editingCyclesEle.setTextContent(String.valueOf(editingCycles)); |
| } |
| |
| /** |
| * Receives the value of the odf dom element representation |
| * <code>MetaEditingDurationElement</code>. |
| * |
| * @return the total time spent editing the document; |
| * <p> |
| * <code>null</code>, if the element is not set. |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaEditingDurationElement |
| */ |
| public Duration getEditingDuration() { |
| MetaEditingDurationElement editiingDurationEle = OdfElement.findFirstChildNode(MetaEditingDurationElement.class, |
| mOfficeMetaElement); |
| if (editiingDurationEle != null) { |
| return Duration.valueOf(editiingDurationEle.getTextContent()); |
| } |
| return null; |
| } |
| |
| /** |
| * Sets the value of the odf dom element representation |
| * <code>MetaEditingDurationElement</code>. |
| * |
| * @param editingDuration the time need to set |
| * @see org.odftoolkit.odfdom.dom.element.meta.MetaEditingDurationElement |
| */ |
| public void setEditingDuration(Duration editingDuration) { |
| MetaEditingDurationElement editiingDurationEle = OdfElement.findFirstChildNode(MetaEditingDurationElement.class, |
| mOfficeMetaElement); |
| if (editiingDurationEle == null) { |
| editiingDurationEle = mOfficeMetaElement.newMetaEditingDurationElement(); |
| } |
| editiingDurationEle.setTextContent(editingDuration.toString()); |
| |
| } |
| |
| /** |
| * Receives the sub feature of DocumentStatistic. |
| * |
| * @return the statistics about the document which can be represented by |
| * <code>DocumentStatistic</code> feature; |
| * <p> |
| * <code>null</code>, if the feature is not exist. |
| * @see org.odftoolkit.odfdom.dom.element.meta.DocumentStatistic |
| */ |
| public DocumentStatistic getDocumentStatistic() { |
| MetaDocumentStatisticElement element = getDocumentStatisticElement(); |
| if (element != null) { |
| return new DocumentStatistic(element); |
| } else { |
| return null; |
| } |
| } |
| |
| private MetaDocumentStatisticElement getDocumentStatisticElement() { |
| return OdfElement.findFirstChildNode( |
| MetaDocumentStatisticElement.class, mOfficeMetaElement); |
| } |
| |
| /** |
| * Change valid string of calendar to Calendar type. |
| * |
| * @param baseDate the string of a calender |
| * @return the object of Calender |
| */ |
| private Calendar stringToCalendar(String baseDate) { |
| // Calendar calendar=new GregorianCalendar(); |
| Calendar calendar = Calendar.getInstance(); |
| Date d1 = null; |
| SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); |
| |
| try { |
| d1 = sdf.parse(baseDate); |
| } catch (Exception e) { |
| // invalid format or null value in meta.xml |
| // d1=new Date(); |
| } |
| |
| calendar.setTime(d1); |
| return calendar; |
| } |
| |
| /** |
| * Convert a <code>Canlender</code> object to <code>String</code> object. |
| * @param calendar an instanceof <code>Canlender</code> |
| * @return the String format(yyyy-MM-dd'T'HH:mm:ss) of Calendar. |
| */ |
| private String calendarToString(Calendar calendar) { |
| return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(calendar.getTime()); |
| } |
| } |