001: /*
002: * Created on 19 Sep 2006
003: */
004: package uk.org.ponder.rsf.templateresolver;
005:
006: import uk.org.ponder.rsf.viewstate.ContextURLProvider;
007: import uk.org.ponder.rsf.viewstate.ViewParameters;
008: import uk.org.ponder.stringutil.StringList;
009:
010: /**
011: * A simple TemplateResolverStrategy that follows a static strategy guided by
012: * field values.
013: *
014: * @author Antranig Basman (antranig@caret.cam.ac.uk)
015: */
016:
017: public class StaticTemplateResolverStrategy implements RootAwareTRS,
018: MultipleTemplateResolverStrategy,
019: BaseAwareTemplateResolverStrategy, ForceContributingTRS,
020: ExpectedTRS {
021: private String templateResourceBase = "/";
022: private int rootResolverPriority = 1;
023: private String names;
024: private ContextURLProvider cup;
025: private String externalURLbase;
026: private String basedir = "";
027: private boolean ismultiple = true;
028: private boolean expected;
029: private boolean mustcontribute;
030:
031: // Should be null, if this is a local resolver
032: public void setContextURLProvider(ContextURLProvider cup) {
033: this .cup = cup;
034: }
035:
036: /** Set a comma-separated list of template names to be returned */
037: public void setTemplateNames(String names) {
038: this .names = names;
039: }
040:
041: public void setRootResolverPriority(int rootResolverPriority) {
042: this .rootResolverPriority = rootResolverPriority;
043: }
044:
045: public void setMultiple(boolean ismultiple) {
046: this .ismultiple = ismultiple;
047: }
048:
049: public boolean isMultiple() {
050: return ismultiple;
051: }
052:
053: public void setMustContribute(boolean mustcontribute) {
054: this .mustcontribute = mustcontribute;
055: }
056:
057: public boolean getMustContribute() {
058: return mustcontribute;
059: }
060:
061: /** Set the base directory in which templates will be found * */
062: public void setBaseDirectory(String basedir) {
063: this .basedir = basedir;
064: }
065:
066: public StringList resolveTemplatePath(ViewParameters viewparams) {
067: StringList togo = StringList.fromString(names);
068: for (int i = 0; i < togo.size(); ++i) {
069: togo.set(i, basedir + togo.get(i));
070: }
071: return togo;
072: }
073:
074: public void setExternalURLBase(String externalURLBase) {
075: this .externalURLbase = externalURLBase;
076: }
077:
078: public String getExternalURLBase() {
079: return externalURLbase == null ? cup == null ? "" : cup
080: .getContextBaseURL() : externalURLbase;
081: }
082:
083: public void setTemplateResourceBase(String templateResourceBase) {
084: this .templateResourceBase = templateResourceBase;
085: if (this .templateResourceBase.startsWith("..")) {
086: this .templateResourceBase = "/" + templateResourceBase;
087: }
088: }
089:
090: public String getTemplateResourceBase() {
091: return templateResourceBase;
092: }
093:
094: public int getRootResolverPriority() {
095: return rootResolverPriority;
096: }
097:
098: public void setExpected(boolean expected) {
099: this .expected = expected;
100: }
101:
102: public boolean isExpected() {
103: return expected;
104: }
105:
106: public boolean isStatic() {
107: return true;
108: }
109:
110: }
|