/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2008 jOpenDocument, by ILM Informatique. All rights reserved. * * The contents of this file are subject to the terms of the GNU * General Public License Version 3 only ("GPL"). * You may not use this file except in compliance with the License. * You can obtain a copy of the License at http://www.gnu.org/licenses/gpl-3.0.html * See the License for the specific language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each file. * */ package org.jopendocument.dom; import java.util.HashSet; import java.util.Set; /** * An XML document containing all of an office document, see section 2.1 of OpenDocument 1.1. * * @author Sylvain CUAZ 24 nov. 2004 */ public class ODSingleXMLDocument extends ODXMLDocument implements Cloneable, ODDocument { final static Set<String> DONT_PREFIX; static { DONT_PREFIX = new HashSet<>(); // don't touch to user fields and variables // we want them to be the same across the document DONT_PREFIX.add("user-field-decl"); DONT_PREFIX.add("user-field-get"); DONT_PREFIX.add("variable-get"); DONT_PREFIX.add("variable-decl"); DONT_PREFIX.add("variable-set"); } /** * fix bug when a SingleXMLDoc is used to create a document (for example with P2 and 1_P2), and * then create another instance s2 with the previous document and add a second file (also with * P2 and 1_P2) => s2 will contain P2, 1_P2, 1_P2, 1_1_P2. */ private static final String COUNT = "SingleXMLDocument_count"; /** Le nombre de fichiers concat */ private int numero; /** Les styles présent dans ce document */ private final Set<String> stylesNames; /** Les styles de liste présent dans ce document */ private final Set<String> listStylesNames; /** Les fichiers référencés par ce document */ private final ODPackage pkg; private final ODMeta meta; ODSingleXMLDocument(ODSingleXMLDocument doc, ODPackage p) { super(doc); this.stylesNames = new HashSet<>(doc.stylesNames); this.listStylesNames = new HashSet<>(doc.listStylesNames); this.pkg = p; this.meta = ODMeta.create(this); this.setNumero(doc.numero); } @Override public ODSingleXMLDocument clone() { final ODPackage copy = new ODPackage(this.pkg); return (ODSingleXMLDocument) copy.getContent(); } private void setNumero(int numero) { this.numero = numero; this.meta.getUserMeta(COUNT, true).setValue(this.numero); } @Override public ODPackage getPackage() { return this.pkg; } }