1 /*
2 * Copyright 2008 FatWire Corporation. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 package tools.gsf.facade.uri;
18
19 import COM.FutureTense.Interfaces.ICS;
20 import com.fatwire.assetapi.data.AssetId;
21 import tools.gsf.facade.runtag.render.GetTemplateUrl;
22
23 /**
24 * @author Dolf Dijkstra
25 * @since Mar 13, 2011
26 */
27 public class TemplateUriBuilder {
28
29 private final GetTemplateUrl tag = new GetTemplateUrl();
30
31 private String site;
32
33 /**
34 * Constructor with c and cid, with a wrapper .
35 *
36 * @param c current asset
37 * @param cid content id
38 * @param tname template name
39 * @param wrapper string value for wrapper
40 */
41 public TemplateUriBuilder(final String c, final String cid, final String tname, final String wrapper) {
42 tag.setC(c);
43 tag.setCid(cid);
44 tag.setTname(tname);
45 tag.setWrapperpage(wrapper);
46 }
47
48 /**
49 * Constructor with c and cid, without a wrapper.
50 *
51 * @param c current asset
52 * @param cid content id
53 * @param tname template name
54 */
55 public TemplateUriBuilder(final String c, final String cid, final String tname) {
56 tag.setC(c);
57 tag.setCid(cid);
58 tag.setTname(tname);
59
60 }
61
62 /**
63 * Constructor with AssetId and wrapper.
64 *
65 * @param id asset id
66 * @param tname template name
67 * @param wrapper string value for wrapper
68 */
69 public TemplateUriBuilder(final AssetId id, final String tname, final String wrapper) {
70 this(id.getType(), Long.toString(id.getId()), tname, wrapper);
71 }
72
73 /**
74 * Constructor with AssetId, without a wrapper.
75 *
76 * @param id asset id
77 * @param tname template name
78 */
79 public TemplateUriBuilder(final AssetId id, final String tname) {
80 this(id.getType(), Long.toString(id.getId()), tname);
81 }
82
83 /**
84 * Returns the uri to the asset rendered with the specified template and
85 * wrapper (if provided).
86 *
87 * @param ics Content Server context object
88 * @return the Content Server url.
89 * @see "tools.gsf.facade.runtag.AbstractTagRunner#execute(COM.FutureTense.Interfaces.ICS)"
90 */
91 public String toURI(final ICS ics) {
92 tag.setContext("");
93 if (site == null) {
94 tag.setSite(ics.GetVar("site"));
95 }
96 tag.setSlotname("irrelevant__");
97 if (ics.GetVar("eid") != null) {
98 tag.setTid(ics.GetVar("eid"));
99 tag.setTtype("CSElement");
100 } else {
101 tag.setTid(ics.GetVar("tid"));
102 tag.setTtype("Template");
103
104 }
105 tag.setOutstr("uri__");
106 tag.execute(ics);
107 final String uri = ics.GetVar("uri__");
108 ics.RemoveVar("uri__");
109 return uri;
110 }
111
112 /**
113 * @param name argument name
114 * @param value argument value
115 * @return this template uri builder
116 * @see "tools.gsf.facade.runtag.render.TagRunnerWithArguments#setArgument(java.lang.String, java.lang.String)"
117 */
118 public TemplateUriBuilder argument(final String name, final String value) {
119 tag.setArgument(name, value);
120 return this;
121 }
122
123 /**
124 * @param s string value for assembler
125 * @return this template uri builder
126 * @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setAssembler(java.lang.String)"
127 */
128 public TemplateUriBuilder assembler(final String s) {
129 tag.setAssembler(s);
130 return this;
131 }
132
133 /**
134 * @param s string value for authority
135 * @return this template uri builder
136 * @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setAuthority(java.lang.String)"
137 */
138 public TemplateUriBuilder authority(final String s) {
139 tag.setAuthority(s);
140 return this;
141 }
142
143 /**
144 * @param s string value for container
145 * @return this template uri builder
146 * @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setContainer(java.lang.String)"
147 */
148 public TemplateUriBuilder container(final String s) {
149 tag.setContainer(s);
150 return this;
151 }
152
153 /**
154 * @param s flag for dynamic
155 * @return this template uri builder
156 * @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setDynamic(java.lang.String)"
157 */
158 public TemplateUriBuilder dynamic(final boolean s) {
159 tag.setDynamic(s);
160 return this;
161 }
162
163 /**
164 * @param s string value for fragment
165 * @return this template uri builder
166 * @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setFragment(java.lang.String)"
167 */
168 public TemplateUriBuilder fragment(final String s) {
169 tag.setFragment(s);
170 return this;
171 }
172
173 /**
174 * @param s string value for packed arguments
175 * @return this template uri builder
176 * @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setPackedargs(java.lang.String)"
177 */
178 public TemplateUriBuilder packedargs(final String s) {
179 tag.setPackedargs(s);
180 return this;
181 }
182
183 /**
184 * @param s flag for satellite
185 * @return this template uri builder
186 * @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setSatellite(java.lang.String)"
187 */
188 public TemplateUriBuilder satellite(final boolean s) {
189 tag.setSatellite(s);
190 return this;
191 }
192
193 /**
194 * @param s string value for scheme
195 * @return this template uri builder
196 * @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setScheme(java.lang.String)"
197 */
198 public TemplateUriBuilder scheme(final String s) {
199 tag.setScheme(s);
200 return this;
201 }
202
203 /**
204 * @param s string value for site
205 * @return this template uri builder
206 * @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setSite(java.lang.String)"
207 */
208 public TemplateUriBuilder site(final String s) {
209 site = s;
210 tag.setSite(s);
211 return this;
212 }
213
214 /**
215 * @param s string value for wrapper page
216 * @return this template uri builder
217 * @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setWrapperpage(java.lang.String)"
218 */
219 public TemplateUriBuilder wrapper(final String s) {
220 tag.setWrapperpage(s);
221 return this;
222 }
223
224 }