001: /*
002: * File : $Source: /usr/local/cvs/opencms/src/org/opencms/loader/CmsTemplateLoaderFacade.java,v $
003: * Date : $Date: 2008-02-27 12:05:32 $
004: * Version: $Revision: 1.11 $
005: *
006: * This library is part of OpenCms -
007: * the Open Source Content Management System
008: *
009: * Copyright (c) 2002 - 2008 Alkacon Software GmbH (http://www.alkacon.com)
010: *
011: * This library is free software; you can redistribute it and/or
012: * modify it under the terms of the GNU Lesser General Public
013: * License as published by the Free Software Foundation; either
014: * version 2.1 of the License, or (at your option) any later version.
015: *
016: * This library is distributed in the hope that it will be useful,
017: * but WITHOUT ANY WARRANTY; without even the implied warranty of
018: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: * Lesser General Public License for more details.
020: *
021: * For further information about Alkacon Software GmbH, please see the
022: * company website: http://www.alkacon.com
023: *
024: * For further information about OpenCms, please see the
025: * project website: http://www.opencms.org
026: *
027: * You should have received a copy of the GNU Lesser General Public
028: * License along with this library; if not, write to the Free Software
029: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
030: */
031:
032: package org.opencms.loader;
033:
034: import org.opencms.file.CmsResource;
035:
036: /**
037: * Facade object that provides access to the template loader for a resource.<p>
038: *
039: * Some resource types are actually not loadable themself but require a template
040: * to be processed. This template is attached using the <code>template</code> property.
041: * Depending on the resource type of the template itself, a loader is then selected that
042: * processed the requested resource. The processing itself might start on the template,
043: * or on the requested resource (this will depend on the loader and the resource type implementation).<p>
044: *
045: * @author Alexander Kandzior
046: *
047: * @version $Revision: 1.11 $
048: *
049: * @since 6.0.0
050: */
051: public class CmsTemplateLoaderFacade {
052:
053: /** The resource loader. */
054: private I_CmsResourceLoader m_loader;
055:
056: /** The resource requested by the user. */
057: private CmsResource m_resource;
058:
059: /** The template file attached to the resource. */
060: private CmsResource m_template;
061:
062: /**
063: * Creates a new template loader facade.<p>
064: *
065: * Some resource types are actually not loadable themself but require a template
066: * to be processed. This template is attached using the <code>template</code> property.
067: * Depending on the resource type of the template itself, a loader is then selected that
068: * processed the requested resource. The processing itself might start on the template,
069: * or on the requested resource (this will depend on the loader and the resource type implementation).<p>
070: *
071: * @param loader the loader to use
072: * @param resource the file to use
073: * @param template the template to use (ignored if null)
074: * @throws CmsLoaderException in case the template file does not use a loader that actually supports templates
075: */
076: public CmsTemplateLoaderFacade(I_CmsResourceLoader loader,
077: CmsResource resource, CmsResource template)
078: throws CmsLoaderException {
079:
080: if (!loader.isUsableForTemplates()) {
081: throw new CmsLoaderException(Messages.get().container(
082: Messages.ERR_LOADER_NOT_TEMPLATE_ENABLED_0));
083: }
084: m_loader = loader;
085: m_resource = resource;
086: m_template = template;
087: }
088:
089: /**
090: * Returns the loader.<p>
091: *
092: * @return the loader
093: */
094: public I_CmsResourceLoader getLoader() {
095:
096: return m_loader;
097: }
098:
099: /**
100: * Returns the loaders start resource.<p>
101: *
102: * @return the loaders start resource
103: */
104: public CmsResource getLoaderStartResource() {
105:
106: if (m_loader.isUsingUriWhenLoadingTemplate()) {
107: return m_resource;
108: } else {
109: return m_template;
110: }
111: }
112:
113: /**
114: * Returns the resource.<p>
115: *
116: * @return the resource
117: */
118: public CmsResource getResource() {
119:
120: return m_resource;
121: }
122:
123: /**
124: * Returns the template.<p>
125: *
126: * @return the template
127: */
128: public CmsResource getTemplate() {
129:
130: return m_template;
131: }
132:
133: }
|