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