1 package org.apache.turbine.modules.navigations;
2
3
4 /*
5 * Licensed to the Apache Software Foundation (ASF) under one
6 * or more contributor license agreements. See the NOTICE file
7 * distributed with this work for additional information
8 * regarding copyright ownership. The ASF licenses this file
9 * to you under the Apache License, Version 2.0 (the
10 * "License"); you may not use this file except in compliance
11 * with the License. You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing,
16 * software distributed under the License is distributed on an
17 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18 * KIND, either express or implied. See the License for the
19 * specific language governing permissions and limitations
20 * under the License.
21 */
22
23
24 import org.apache.ecs.ConcreteElement;
25 import org.apache.ecs.StringElement;
26 import org.apache.turbine.modules.Navigation;
27 import org.apache.turbine.pipeline.PipelineData;
28 import org.apache.turbine.services.template.TurbineTemplate;
29 import org.apache.turbine.services.velocity.TurbineVelocity;
30 import org.apache.turbine.util.RunData;
31 import org.apache.velocity.context.Context;
32
33 /**
34 * VelocityNavigation. This screen relies on the VelocityPage
35 * being set as the default page. The doBuildTemplate() assumes the
36 * user has put the template filename in the RunData parameter and set
37 * it to the value of the template file to execute. Specialized
38 * Navigations screens should extend this class and override the
39 * doBuildTemplate( data , context) method.
40 *
41 * @author <a href="mailto:mbryson@mont.mindspring.com">Dave Bryson</a>
42 * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
43 * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
44 * @version $Id: VelocityNavigation.java 1078552 2011-03-06 19:58:46Z tv $
45 */
46 public class VelocityNavigation
47 extends TemplateNavigation
48 {
49 /** The prefix for lookup up navigation pages */
50 private final String prefix = Navigation.PREFIX + "/";
51
52 /**
53 * Velocity Navigations extending this class should overide this
54 * method to perform any particular business logic and add
55 * information to the context.
56 *
57 * @deprecated Use PipelineData version instead.
58 * @param data Turbine information.
59 * @param context Context for web pages.
60 * @exception Exception, a generic exception.
61 */
62 @Deprecated
63 protected void doBuildTemplate(RunData data,
64 Context context)
65 throws Exception
66 {
67 // empty
68 }
69
70 /**
71 * Velocity Navigations extending this class should overide this
72 * method to perform any particular business logic and add
73 * information to the context.
74 *
75 * @param data Turbine information.
76 * @param context Context for web pages.
77 * @exception Exception, a generic exception.
78 */
79 protected void doBuildTemplate(PipelineData pipelineData,
80 Context context)
81 throws Exception
82 {
83 // empty
84 }
85
86 /**
87 * Needs to be implemented to make TemplateNavigation like us.
88 * The actual method that you should override is the one with the
89 * context in the parameter list.
90 *
91 * @deprecated Use PipelineData version instead.
92 * @param data Turbine information.
93 * @exception Exception, a generic exception.
94 */
95 @Deprecated
96 @Override
97 protected void doBuildTemplate(RunData data)
98 throws Exception
99 {
100 doBuildTemplate(data, TurbineVelocity.getContext(data));
101 }
102
103
104 /**
105 * Needs to be implemented to make TemplateNavigation like us.
106 * The actual method that you should override is the one with the
107 * context in the parameter list.
108 *
109 * @param pipelineData Turbine information.
110 * @exception Exception, a generic exception.
111 */
112 @Override
113 protected void doBuildTemplate(PipelineData pipelineData)
114 throws Exception
115 {
116 doBuildTemplate(pipelineData, TurbineVelocity.getContext(pipelineData));
117 }
118
119 /**
120 * This Builds the Velocity template.
121 *
122 * @deprecated Use PipelineData version instead.
123 * @param data Turbine information.
124 * @return A ConcreteElement.
125 * @exception Exception, a generic exception.
126 */
127 @Deprecated
128 @Override
129 public ConcreteElement buildTemplate(RunData data)
130 throws Exception
131 {
132 Context context = TurbineVelocity.getContext(data);
133
134 String navigationTemplate = data.getTemplateInfo().getNavigationTemplate();
135 String templateName
136 = TurbineTemplate.getNavigationTemplateName(navigationTemplate);
137
138 StringElement output = new StringElement();
139 output.setFilterState(false);
140 output.addElement(TurbineVelocity
141 .handleRequest(context, prefix + templateName));
142 return output;
143 }
144
145 /**
146 * This Builds the Velocity template.
147 *
148 * @param data Turbine information.
149 * @return A ConcreteElement.
150 * @exception Exception, a generic exception.
151 */
152 @Override
153 public ConcreteElement buildTemplate(PipelineData pipelineData)
154 throws Exception
155 {
156 RunData data = getRunData(pipelineData);
157 Context context = TurbineVelocity.getContext(pipelineData);
158
159 String navigationTemplate = data.getTemplateInfo().getNavigationTemplate();
160 String templateName
161 = TurbineTemplate.getNavigationTemplateName(navigationTemplate);
162
163 StringElement output = new StringElement();
164 output.setFilterState(false);
165 output.addElement(TurbineVelocity
166 .handleRequest(context, prefix + templateName));
167 return output;
168 }
169
170
171 }