/*
* (c) Copyright 2010-2011 AgileBirds
*
* This file is part of OpenFlexo.
*
* OpenFlexo is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* OpenFlexo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openflexo.dg.docx;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public enum DocxTemplatesEnum {
RELS("docx_.rels.vm", "_rels/.rels", false), APP_XML("docx_app.xml.vm", "docProps/app.xml", false), CORE_XML("docx_core.xml.vm",
"docProps/core.xml", false), DOCUMENT_XML("docx_document.xml.vm", "word/document.xml", true), DOCUMENT_XML_RELS(
"docx_document.xml.rels.vm", "word/_rels/document.xml.rels", true), COMMENTS_XML("docx_comments.xml.vm", "word/comments.xml",
false), COMMENTS_XML_RELS("docx_comments.xml.rels.vm", "word/_rels/comments.xml.rels", false), ENDNOTES_XML(
"docx_endnotes.xml.vm", "word/endnotes.xml", false), ENDNOTES_XML_RELS("docx_endnotes.xml.rels.vm",
"word/_rels/endnotes.xml.rels", false), FOOTER1_XML("docx_footer1.xml.vm", "word/footer1.xml", false), FOOTER1_XML_RELS(
"docx_footer1.xml.rels.vm", "word/_rels/footer1.xml.rels", false), FOOTER2_XML("docx_footer2.xml.vm", "word/footer2.xml", false), FOOTER2_XML_RELS(
"docx_footer2.xml.rels.vm", "word/_rels/footer2.xml.rels", false), FOOTER3_XML("docx_footer3.xml.vm", "word/footer3.xml", false), FOOTER3_XML_RELS(
"docx_footer3.xml.rels.vm", "word/_rels/footer3.xml.rels", false), FONTTABLE_XML("docx_fontTable.xml.vm", "word/fontTable.xml",
false), FONTTABLE_XML_RELS("docx_fontTable.xml.rels.vm", "word/_rels/fontTable.xml.rels", false), FOOTNOTES_XML(
"docx_footnotes.xml.vm", "word/footnotes.xml", false), FOOTNOTES_XML_RELS("docx_footnotes.xml.rels.vm",
"word/_rels/footnotes.xml.rels", false), HEADER1_XML("docx_header1.xml.vm", "word/header1.xml", false), HEADER1_XML_RELS(
"docx_header1.xml.rels.vm", "word/_rels/header1.xml.rels", false), HEADER2_XML("docx_header2.xml.vm", "word/header2.xml", false), HEADER2_XML_RELS(
"docx_header2.xml.rels.vm", "word/_rels/header2.xml.rels", false), HEADER3_XML("docx_header3.xml.vm", "word/header3.xml", false), HEADER3_XML_RELS(
"docx_header3.xml.rels.vm", "word/_rels/header3.xml.rels", false), NUMBERING_XML("docx_numbering.xml.vm", "word/numbering.xml",
false), SETTINGS_XML("docx_settings.xml.vm", "word/settings.xml", false), WEBSETTINGS_XML("docx_websettings.xml.vm",
"word/webSettings.xml", false), STYLES_XML("docx_styles.xml.vm", "word/styles.xml", false), THEME1_XML("docx_theme1.xml.vm",
"word/theme/theme1.xml", false), THEME1_XML_RELS("docx_theme1.xml.rels.vm", "word/theme/_rels/theme1.xml.rels", false), FLEXONAMES_XML(
"docx_flexonames.xml.vm", "customXml/flexoNames.xml", false), EPIVALUES_XML("docx_editionpatterninstancevalues.xml.vm",
"customXml/edition_pattern_instance_values.xml", false), CONTENT_TYPES_XML("docx_content_types.xml.vm", "[Content_Types].xml",
false);
private static Map<String, List<DocxTemplatesEnum>> orderedTemplateListGroupedPerGenerator;
private String templatePath;
private String filePath;
private boolean isFullProjectDependent;
private DocxTemplatesEnum(String templatePath, String filePath, boolean isFullProjectDependent) {
this.templatePath = templatePath;
this.filePath = filePath;
this.isFullProjectDependent = isFullProjectDependent;
}
public String getTemplatePath() {
return templatePath;
}
public String getFilePath() {
return filePath;
}
public boolean getIsFullProjectDependent() {
return isFullProjectDependent;
}
public void setFullProjectDependent(boolean isFullProjectDependent) {
this.isFullProjectDependent = isFullProjectDependent;
}
public static Map<String, List<DocxTemplatesEnum>> getOrderedTemplateListGroupedPerGenerator() {
if (orderedTemplateListGroupedPerGenerator == null) {
orderedTemplateListGroupedPerGenerator = new HashMap<String, List<DocxTemplatesEnum>>();
List<DocxTemplatesEnum> orderedTemplateList = new ArrayList<DocxTemplatesEnum>();
// RELS can be generated alone
orderedTemplateList.add(RELS);
orderedTemplateListGroupedPerGenerator.put(RELS.toString(), orderedTemplateList);
// APP_XML can be generated alone
orderedTemplateList = new ArrayList<DocxTemplatesEnum>();
orderedTemplateList.add(APP_XML);
orderedTemplateListGroupedPerGenerator.put(APP_XML.toString(), orderedTemplateList);
// CORE_XML can be generated alone
orderedTemplateList = new ArrayList<DocxTemplatesEnum>();
orderedTemplateList.add(CORE_XML);
orderedTemplateListGroupedPerGenerator.put(CORE_XML.toString(), orderedTemplateList);
// CONTENT_TYPES_XML can be generated alone
orderedTemplateList = new ArrayList<DocxTemplatesEnum>();
orderedTemplateList.add(CONTENT_TYPES_XML);
orderedTemplateListGroupedPerGenerator.put(CONTENT_TYPES_XML.toString(), orderedTemplateList);
// All files here are interdependent. !!!! Order is important
// Main cause of this interdependency is that comments, numberings, endnotes and footnotes contents are dependents of other file
// contents
orderedTemplateList = new ArrayList<DocxTemplatesEnum>();
orderedTemplateList.add(DOCUMENT_XML);
orderedTemplateList.add(DOCUMENT_XML_RELS);
orderedTemplateList.add(HEADER1_XML);
orderedTemplateList.add(HEADER1_XML_RELS);
orderedTemplateList.add(HEADER2_XML);
orderedTemplateList.add(HEADER2_XML_RELS);
orderedTemplateList.add(HEADER3_XML);
orderedTemplateList.add(HEADER3_XML_RELS);
orderedTemplateList.add(FOOTER1_XML);
orderedTemplateList.add(FOOTER1_XML_RELS);
orderedTemplateList.add(FOOTER2_XML);
orderedTemplateList.add(FOOTER2_XML_RELS);
orderedTemplateList.add(FOOTER3_XML);
orderedTemplateList.add(FOOTER3_XML_RELS);
orderedTemplateList.add(COMMENTS_XML);
orderedTemplateList.add(COMMENTS_XML_RELS);
orderedTemplateList.add(FOOTNOTES_XML);
orderedTemplateList.add(FOOTNOTES_XML_RELS);
orderedTemplateList.add(ENDNOTES_XML);
orderedTemplateList.add(ENDNOTES_XML_RELS);
orderedTemplateList.add(NUMBERING_XML);
orderedTemplateList.add(FONTTABLE_XML);
orderedTemplateList.add(FONTTABLE_XML_RELS);
orderedTemplateList.add(FLEXONAMES_XML);
orderedTemplateList.add(EPIVALUES_XML);
orderedTemplateListGroupedPerGenerator.put(DOCUMENT_XML.toString(), orderedTemplateList);
// SETTINGS_XML can be generated alone
orderedTemplateList = new ArrayList<DocxTemplatesEnum>();
orderedTemplateList.add(SETTINGS_XML);
orderedTemplateListGroupedPerGenerator.put(SETTINGS_XML.toString(), orderedTemplateList);
orderedTemplateList = new ArrayList<DocxTemplatesEnum>();
orderedTemplateList.add(WEBSETTINGS_XML);
orderedTemplateListGroupedPerGenerator.put(WEBSETTINGS_XML.toString(), orderedTemplateList);
// STYLES_XML can be generated alone
orderedTemplateList = new ArrayList<DocxTemplatesEnum>();
orderedTemplateList.add(STYLES_XML);
orderedTemplateListGroupedPerGenerator.put(STYLES_XML.toString(), orderedTemplateList);
// THEME1_XML is only dependent with its RELS can be generated alone
orderedTemplateList = new ArrayList<DocxTemplatesEnum>();
orderedTemplateList.add(THEME1_XML);
orderedTemplateList.add(THEME1_XML_RELS);
orderedTemplateListGroupedPerGenerator.put(THEME1_XML.toString(), orderedTemplateList);
}
return orderedTemplateListGroupedPerGenerator;
}
}