View Javadoc
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 }