package org.openflexo.foundation.toc; import org.openflexo.foundation.DocType.DefaultDocType; import org.openflexo.foundation.cg.utils.DocConstants; import org.openflexo.foundation.xml.FlexoTOCBuilder; import org.openflexo.localization.FlexoLocalization; public class PredefinedSection extends TOCEntry { private static final String PROCESSES_DOC_TEMPLATE = "docx_tocentry_processes.xml.vm"; private static final String SCREENS_DOC_TEMPLATE = "docx_tocentry_screens.xml.vm"; private static final String DATA_MODEL_DOC_TEMPLATE = "docx_tocentry_datamodel.xml.vm"; private static final String DEFINITIONS_DOC_TEMPLATE = "docx_tocentry_definitions.xml.vm"; private static final String ROLES_DOC_TEMPLATE = "docx_tocentry_roles.xml.vm"; private static final String RACI_DOC_TEMPLATE = "docx_tocentry_raci_full.xml.vm"; private static final String VIEWS_DOC_TEMPLATE = "docx_tocentry_views.xml.vm"; private static final String DIAGRAMS_DOC_TEMPLATE = "docx_tocentry_diagram.xml.vm"; public static enum PredefinedSectionType { PROCESSES { @Override public int getPreferredLevel() { return 1; } @Override public boolean getIsReadOnly() { return true; } @Override public String getTitle() { return "Processes"; } @Override public String getDefaultTemplateName() { return PROCESSES_DOC_TEMPLATE; } }, VIEWS { @Override public int getPreferredLevel() { return 1; } @Override public boolean getIsReadOnly() { return true; } @Override public String getTitle() { return "Views"; } @Override public String getDefaultTemplateName() { return VIEWS_DOC_TEMPLATE; } }, ROLES { @Override public boolean getIsReadOnly() { return true; } @Override public String getTitle() { return "Roles"; } @Override public String getDefaultTemplateName() { return ROLES_DOC_TEMPLATE; } }, PURPOSE { @Override public String getTitle() { return "Purpose"; } @Override public String getDefaultContent(String docTypeName) { if (DefaultDocType.Business.name().equals(docTypeName)) { return DocConstants.PURPOSE_BUSINESS_CONTENT; } else if (DefaultDocType.Technical.name().equals(docTypeName)) { return DocConstants.PURPOSE_TECHNICAL_CONTENT; } else { return DocConstants.PURPOSE_DEFAULT_CONTENT; } } }, OBJECTIVES { @Override public String getTitle() { return "Objectives"; } }, SCOPE { @Override public String getTitle() { return "Scope"; } }, STAKEHOLDERS { @Override public String getTitle() { return "Stakeholders"; } }, SCREENS { @Override public int getPreferredLevel() { return 1; } @Override public boolean getIsReadOnly() { return true; } @Override public String getTitle() { return "Screens"; } @Override public String getDefaultTemplateName() { return SCREENS_DOC_TEMPLATE; } }, DATA_MODEL { @Override public int getPreferredLevel() { return 1; } @Override public boolean getIsReadOnly() { return true; } @Override public String getTitle() { return "Datamodel"; } @Override public String getDefaultTemplateName() { return DATA_MODEL_DOC_TEMPLATE; } }, DEFINITIONS { @Override public boolean getIsReadOnly() { return true; } @Override public String getTitle() { return "Definitions"; } @Override public String getDefaultTemplateName() { return DEFINITIONS_DOC_TEMPLATE; } }, READERS_GUIDE { @Override public int getPreferredLevel() { return 2; } @Override public boolean getIsReadOnly() { return true; } @Override public String getTitle() { return "Reader\'s guide"; } }, NOTES_QUESTIONS { @Override public String getTitle() { return "Notes and questions"; } }, PROJECT_CONTEXT { @Override public String getTitle() { return "Project context"; } }, SIPOC_LEVEL2 { @Override public boolean getIsReadOnly() { return true; } }, SIPOC_LEVEL3 { @Override public boolean getIsReadOnly() { return true; } }, ER_DIAGRAM { @Override public boolean getIsReadOnly() { return true; } @Override public String getDefaultTemplateName() { return DIAGRAMS_DOC_TEMPLATE; } }, RACI { @Override public boolean getIsReadOnly() { return true; } @Override public String getDefaultTemplateName() { return RACI_DOC_TEMPLATE; } }; public int getPreferredLevel() { return -1; } public String getLocalizedName() { return FlexoLocalization.localizedForKey(name().toLowerCase()); } public boolean getIsReadOnly() { return false; } public String getTitle() { return "Title"; } public String getDefaultContent(String docTypeName) { return null; } public String getDefaultTemplateName() { return null; } } private PredefinedSectionType type; public PredefinedSection(FlexoTOCBuilder builder) { this(builder.tocData); initializeDeserialization(builder); } public PredefinedSection(TOCData data) { super(data); } @Override public PredefinedSectionType getIdentifier() { return getType(); } public PredefinedSectionType getType() { return type; } public void setType(PredefinedSectionType type) { this.type = type; } @Override public String getDefaultTemplateName() { if (getType() != null) { return getType().getDefaultTemplateName(); } return null; } }