/*
* Copyright 2008 FatWire Corporation. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package tools.gsf.facade.uri;
import COM.FutureTense.Interfaces.ICS;
import com.fatwire.assetapi.data.AssetId;
import tools.gsf.facade.runtag.render.GetTemplateUrl;
/**
* @author Dolf Dijkstra
* @since Mar 13, 2011
*/
public class TemplateUriBuilder {
private final GetTemplateUrl tag = new GetTemplateUrl();
private String site;
/**
* Constructor with c and cid, with a wrapper .
*
* @param c current asset
* @param cid content id
* @param tname template name
* @param wrapper string value for wrapper
*/
public TemplateUriBuilder(final String c, final String cid, final String tname, final String wrapper) {
tag.setC(c);
tag.setCid(cid);
tag.setTname(tname);
tag.setWrapperpage(wrapper);
}
/**
* Constructor with c and cid, without a wrapper.
*
* @param c current asset
* @param cid content id
* @param tname template name
*/
public TemplateUriBuilder(final String c, final String cid, final String tname) {
tag.setC(c);
tag.setCid(cid);
tag.setTname(tname);
}
/**
* Constructor with AssetId and wrapper.
*
* @param id asset id
* @param tname template name
* @param wrapper string value for wrapper
*/
public TemplateUriBuilder(final AssetId id, final String tname, final String wrapper) {
this(id.getType(), Long.toString(id.getId()), tname, wrapper);
}
/**
* Constructor with AssetId, without a wrapper.
*
* @param id asset id
* @param tname template name
*/
public TemplateUriBuilder(final AssetId id, final String tname) {
this(id.getType(), Long.toString(id.getId()), tname);
}
/**
* Returns the uri to the asset rendered with the specified template and
* wrapper (if provided).
*
* @param ics Content Server context object
* @return the Content Server url.
* @see "tools.gsf.facade.runtag.AbstractTagRunner#execute(COM.FutureTense.Interfaces.ICS)"
*/
public String toURI(final ICS ics) {
tag.setContext("");
if (site == null) {
tag.setSite(ics.GetVar("site"));
}
tag.setSlotname("irrelevant__");
if (ics.GetVar("eid") != null) {
tag.setTid(ics.GetVar("eid"));
tag.setTtype("CSElement");
} else {
tag.setTid(ics.GetVar("tid"));
tag.setTtype("Template");
}
tag.setOutstr("uri__");
tag.execute(ics);
final String uri = ics.GetVar("uri__");
ics.RemoveVar("uri__");
return uri;
}
/**
* @param name argument name
* @param value argument value
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.TagRunnerWithArguments#setArgument(java.lang.String, java.lang.String)"
*/
public TemplateUriBuilder argument(final String name, final String value) {
tag.setArgument(name, value);
return this;
}
/**
* @param s string value for assembler
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setAssembler(java.lang.String)"
*/
public TemplateUriBuilder assembler(final String s) {
tag.setAssembler(s);
return this;
}
/**
* @param s string value for authority
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setAuthority(java.lang.String)"
*/
public TemplateUriBuilder authority(final String s) {
tag.setAuthority(s);
return this;
}
/**
* @param s string value for container
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setContainer(java.lang.String)"
*/
public TemplateUriBuilder container(final String s) {
tag.setContainer(s);
return this;
}
/**
* @param s flag for dynamic
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setDynamic(java.lang.String)"
*/
public TemplateUriBuilder dynamic(final boolean s) {
tag.setDynamic(s);
return this;
}
/**
* @param s string value for fragment
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setFragment(java.lang.String)"
*/
public TemplateUriBuilder fragment(final String s) {
tag.setFragment(s);
return this;
}
/**
* @param s string value for packed arguments
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setPackedargs(java.lang.String)"
*/
public TemplateUriBuilder packedargs(final String s) {
tag.setPackedargs(s);
return this;
}
/**
* @param s flag for satellite
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setSatellite(java.lang.String)"
*/
public TemplateUriBuilder satellite(final boolean s) {
tag.setSatellite(s);
return this;
}
/**
* @param s string value for scheme
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setScheme(java.lang.String)"
*/
public TemplateUriBuilder scheme(final String s) {
tag.setScheme(s);
return this;
}
/**
* @param s string value for site
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setSite(java.lang.String)"
*/
public TemplateUriBuilder site(final String s) {
site = s;
tag.setSite(s);
return this;
}
/**
* @param s string value for wrapper page
* @return this template uri builder
* @see "tools.gsf.facade.runtag.render.GetTemplateUrl#setWrapperpage(java.lang.String)"
*/
public TemplateUriBuilder wrapper(final String s) {
tag.setWrapperpage(s);
return this;
}
}