/* * Copyright 2010 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 com.fatwire.gst.foundation.wra; import COM.FutureTense.Interfaces.ICS; import com.fatwire.assetapi.data.AssetId; import com.fatwire.gst.foundation.facade.runtag.asset.AssetList; import com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl; import org.apache.commons.lang3.StringUtils; /** * @author Dolf Dijkstra * @since Mar 13, 2011 * * @deprecated as of release 12.x, replace with WCS 12c's native vanity URLs support. */ @Deprecated public class WraUriBuilder { private final GetTemplateUrl tag = new GetTemplateUrl(); private String tid = null; private String slotname = null; private String site = null; /** * Constructor with AssetId and default wrapper (GST/Dispatcher). * * @param id asset id */ public WraUriBuilder(AssetId id) { this(id, "GST/Dispatcher"); } /** * Constructor with AssetId and wrapper. * * @param id asset id * @param wrapper */ private WraUriBuilder(AssetId id, String wrapper) { tag.setWrapperpage(wrapper); tag.setC(id.getType()); tag.setCid(Long.toString(id.getId())); tag.setAssembler("wrapath"); } public WraUriBuilder(VanityAsset wra, String wrapper) { this(wra.getId(), wrapper); if (StringUtils.isBlank(wra.getTemplate())) throw new IllegalArgumentException("The template attribute for asset " + wra.getId().getType() + ":" + wra.getId().getId() + " is not provided."); tag.setTname(wra.getTemplate()); } /** * Returns the uri to the asset rendered with the specified template and * wrapper (if provided). * * @param ics Content Server context object * @return the URI as a String for this WRA * @see "com.fatwire.gst.foundation.facade.runtag.AbstractTagRunner#execute(COM.FutureTense.Interfaces.ICS)" */ public String toURI(ICS ics) { ensureTid(ics); ensureSlotname(); ensureSite(ics); ics.RemoveVar("uri__"); tag.setOutstr("uri__"); tag.execute(ics); String uri = ics.GetVar("uri__"); ics.RemoveVar("uri__"); return uri; } private void ensureTid(ICS ics) { String _ttype = null; String _tid = null; if (tid == null) { _ttype = "Template"; _tid = ics.GetVar("tid"); if (!AssetList.assetExists(ics, _ttype, _tid)) { _ttype = "CSElement"; _tid = ics.GetVar("eid"); if (!AssetList.assetExists(ics, _ttype, _tid)) { throw new IllegalArgumentException( "tid was not specified and neither tid nor eid were found valid in the variable scope"); } } } ttype(_ttype); tid(_tid); } private void ensureSlotname() { if (slotname == null) { // The user has not specified slotname. // This implies that the link has no special characteristics // therefore other usages of this non-special link can be re-used // so we can re-use slot by giving it a constant name. slotname("WraUriBuilderLink"); } } private void ensureSite(ICS ics) { if (site == null) { site(ics.GetVar("site")); } } /** * @param name argument name * @param value argument value * @see "com.fatwire.gst.foundation.facade.runtag.render.TagRunnerWithArguments#setArgument(java.lang.String, java.lang.String)" * @return this wra uri builder */ public WraUriBuilder argument(String name, String value) { tag.setArgument(name, value); return this; } /** * @param s string value for assembler * @see "com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setAssembler(java.lang.String)" * @return this wra uri builder */ public WraUriBuilder assembler(String s) { tag.setAssembler(s); return this; } /** * @param s string value to set Authority * @see "com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setAuthority(java.lang.String)" * @return this wra uri builder */ public WraUriBuilder authority(String s) { tag.setAuthority(s); return this; } /** * @param s string value to assign to container * @see "com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setContainer(java.lang.String)" * @return this wra uri builder */ public WraUriBuilder container(String s) { tag.setContainer(s); return this; } /** * @param s boolean value to setDynamic * @see "com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setDynamic(java.lang.String)" * @return this wra uri builder */ public WraUriBuilder dynamic(boolean s) { tag.setDynamic(s); return this; } /** * @param s string value for fragment * @see "com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setFragment(java.lang.String)" * @return this wra uri builder */ public WraUriBuilder fragment(String s) { tag.setFragment(s); return this; } /** * @param s string value to setPackedargs * @see "com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setPackedargs(java.lang.String)" * @return this wra uri builder */ public WraUriBuilder packedargs(String s) { tag.setPackedargs(s); return this; } /** * @param s set Satellite value true or false, catches on true - ignores case, all other inputs are false * @see "com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setSatellite(java.lang.String)" * @return this wra uri builder */ public WraUriBuilder satellite(String s) { tag.setSatellite("TRUE".equalsIgnoreCase(s)); return this; } /** * @param s string representing the scheme * @see "com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setScheme(java.lang.String)" * @return this wra uri builder */ public WraUriBuilder scheme(String s) { tag.setScheme(s); return this; } /** * @param s string representing the wrapper page * @see "com.fatwire.gst.foundation.facade.runtag.render.GetTemplateUrl#setWrapperpage(java.lang.String)" * @return this wra uri builder */ public WraUriBuilder wrapper(String s) { tag.setWrapperpage(s); return this; } public WraUriBuilder template(String template) { tag.setTname(template); return this; } public WraUriBuilder tid(String tid) { this.tid = tid; tag.setTid(tid); return this; } public WraUriBuilder ttype(String ttype) { tag.setTtype(ttype); return this; } public WraUriBuilder slotname(String slotname) { this.slotname = slotname; tag.setSlotname(slotname); return this; } public WraUriBuilder site(String site) { this.site = site; tag.setSite(site); return this; } }