/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs.layout; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @since 1.12 */ public abstract class LayoutSupport<T extends LayoutTemplate> { private Logger log = LoggerFactory.getLogger(getClass()); protected String defaultLayoutFormat; protected List<T> layoutTemplates; protected List<String> specialTokens; /** * @return Returns the layoutTemplates. */ public List<T> getLayoutTemplates() { return layoutTemplates; } /** * @param layoutTemplates The layoutTemplates to set. */ public void setLayoutTemplates(List<T> layoutTemplates) { this.layoutTemplates = layoutTemplates; } /** * @return Returns the defaultLayoutTemplate. */ public T getDefaultLayoutTemplate() { return getLayoutTemplateByName(getDefaultLayoutFormat()); } public T getLayoutTemplateByName(String templateName) { log.debug("looking for template name: " + templateName); if (this.layoutTemplates != null && templateName != null) { T ret = null; for (T at : this.layoutTemplates) { if (at != null && (templateName.equalsIgnoreCase(at.getDisplayName()) || templateName.equalsIgnoreCase(at.getCodeName()) || templateName.equalsIgnoreCase(at .getCountry()))) { ret = at; log.debug("Found Layout Template named " + at.getDisplayName()); } } return ret; } else { log.debug("No Layout Templates defined"); return null; } } public T getLayoutTemplateByCodeName(String templateName) { if (this.layoutTemplates != null && templateName != null) { T ret = null; for (T at : this.layoutTemplates) { if (at != null && templateName.equalsIgnoreCase(at.getCodeName())) { ret = at; log.debug("Found Layout Template named " + at.getDisplayName()); } } return ret; } else { log.debug("No Layout Templates defined"); return null; } } public T getLayoutTemplateByCountry(String templateName) { if (this.layoutTemplates != null && templateName != null) { T ret = null; for (T at : this.layoutTemplates) { if (at != null && templateName.equalsIgnoreCase(at.getCountry())) { ret = at; log.debug("Found Layout Template named " + at.getDisplayName()); } } return ret; } else { log.debug("No Layout Templates defined"); return null; } } public T getLayoutTemplateByDisplayName(String templateName) { if (this.layoutTemplates != null && templateName != null) { T ret = null; for (T at : this.layoutTemplates) { if (at != null && templateName.equalsIgnoreCase(at.getDisplayName())) { ret = at; log.debug("Found Layout Template named " + at.getDisplayName()); } } return ret; } else { log.debug("No Layout Templates defined"); return null; } } /** * @return Returns the specialTokens. */ public List<String> getSpecialTokens() { return specialTokens; } /** * @param specialTokens The specialTokens to set. */ public void setSpecialTokens(List<String> specialTokens) { this.specialTokens = specialTokens; } /** * @return Returns the defaultLayoutFormat. */ public abstract String getDefaultLayoutFormat(); /** * @param defaultLayoutFormat The defaultLayoutFormat to set. */ public void setDefaultLayoutFormat(String defaultLayoutFormat) { this.defaultLayoutFormat = defaultLayoutFormat; } }