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