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 com.fatwire.gst.foundation.facade.uri;
18
19 import COM.FutureTense.Interfaces.ICS;
20
21 import com.fatwire.assetapi.data.AssetId;
22 import com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl;
23
24 /**
25 * @author Dolf Dijkstra
26 * @since Mar 13, 2011
27 */
28 public class TemplateUriBuilder {
29
30 private final GetTemplateUrl tag = new GetTemplateUrl();
31
32 private String site;
33
34 /**
35 * Constructor with c and cid, with a wrapper .
36 *
37 * @param c
38 * @param cid
39 * @param tname
40 * @param wrapper
41 */
42 public TemplateUriBuilder(final String c, final String cid, final String tname, final String wrapper) {
43 tag.setC(c);
44 tag.setCid(cid);
45 tag.setTname(tname);
46 tag.setWrapperpage(wrapper);
47 }
48
49 /**
50 * Constructor with c and cid, without a wrapper.
51 *
52 * @param c
53 * @param cid
54 * @param tname
55 */
56 public TemplateUriBuilder(final String c, final String cid, final String tname) {
57 tag.setC(c);
58 tag.setCid(cid);
59 tag.setTname(tname);
60
61 }
62
63 /**
64 * Constructor with AssetId and wrapper.
65 *
66 * @param id
67 * @param tname
68 * @param wrapper
69 */
70 public TemplateUriBuilder(final AssetId id, final String tname, final String wrapper) {
71 this(id.getType(), Long.toString(id.getId()), tname, wrapper);
72 }
73
74 /**
75 * Constructor with AssetId, without a wrapper.
76 *
77 * @param id
78 * @param tname
79 */
80 public TemplateUriBuilder(final AssetId id, final String tname) {
81 this(id.getType(), Long.toString(id.getId()), tname);
82 }
83
84 /**
85 * Returns the uri to the asset rendered with the specified template and
86 * wrapper (if provided).
87 *
88 * @param ics
89 * @return the Content Server url.
90 * @see com.fatwire.gst.foundation.facade.runtag.AbstractTagRunner#execute(COM.FutureTense.Interfaces.ICS)
91 */
92 public String toURI(final ICS ics) {
93 tag.setContext("");
94 if (site == null) {
95 tag.setSite(ics.GetVar("site"));
96 }
97 tag.setSlotname("irrelevant__");
98 if (ics.GetVar("eid") != null) {
99 tag.setTid(ics.GetVar("eid"));
100 tag.setTtype("CSElement");
101 } else {
102 tag.setTid(ics.GetVar("tid"));
103 tag.setTtype("Template");
104
105 }
106 tag.setOutstr("uri__");
107 tag.execute(ics);
108 final String uri = ics.GetVar("uri__");
109 ics.RemoveVar("uri__");
110 return uri;
111 }
112
113 /**
114 * @param name
115 * @param value
116 * @see com.fatwire.gst.foundation.facade.runtag.render.TagRunnerWithArguments#setArgument(java.lang.String,
117 * java.lang.String)
118 */
119 public TemplateUriBuilder argument(final String name, final String value) {
120 tag.setArgument(name, value);
121 return this;
122 }
123
124 /**
125 * @param s
126 * @see com.fatwire.gst.foundation.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
135 * @see com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setAuthority(java.lang.String)
136 */
137 public TemplateUriBuilder authority(final String s) {
138 tag.setAuthority(s);
139 return this;
140 }
141
142 /**
143 * @param s
144 * @see com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setContainer(java.lang.String)
145 */
146 public TemplateUriBuilder container(final String s) {
147 tag.setContainer(s);
148 return this;
149 }
150
151 /**
152 * @param s
153 * @see com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setDynamic(java.lang.String)
154 */
155 public TemplateUriBuilder dynamic(final boolean s) {
156 tag.setDynamic(s);
157 return this;
158 }
159
160 /**
161 * @param s
162 * @see com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setFragment(java.lang.String)
163 */
164 public TemplateUriBuilder fragment(final String s) {
165 tag.setFragment(s);
166 return this;
167 }
168
169 /**
170 * @param s
171 * @see com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setPackedargs(java.lang.String)
172 */
173 public TemplateUriBuilder packedargs(final String s) {
174 tag.setPackedargs(s);
175 return this;
176 }
177
178 /**
179 * @param s
180 * @see com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setSatellite(java.lang.String)
181 */
182 public TemplateUriBuilder satellite(final boolean s) {
183 tag.setSatellite(s);
184 return this;
185 }
186
187 /**
188 * @param s
189 * @see com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setScheme(java.lang.String)
190 */
191 public TemplateUriBuilder scheme(final String s) {
192 tag.setScheme(s);
193 return this;
194 }
195
196 /**
197 * @param s
198 * @see com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setSite(java.lang.String)
199 */
200 public TemplateUriBuilder site(final String s) {
201 site = s;
202 tag.setSite(s);
203 return this;
204 }
205
206 /**
207 * @param s
208 * @see com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setWrapperpage(java.lang.String)
209 */
210 public TemplateUriBuilder wrapper(final String s) {
211 tag.setWrapperpage(s);
212 return this;
213 }
214
215 }