001: /*
002: * Created on Jan 31, 2005
003: *
004: */
005: package net.sf.thingamablog.generator;
006:
007: import java.util.Date;
008: import java.util.Enumeration;
009: import java.util.Hashtable;
010: import java.util.List;
011: import java.util.Vector;
012:
013: import net.sf.thingamablog.TBGlobals;
014: import net.sf.thingamablog.blog.TBWeblog;
015:
016: /**
017: * @author Bob Tantlinger
018: *
019: */
020: public class BlogPageContainer implements TemplateContainer {
021: public static final String NAME = "BlogPage";
022: private Hashtable tagValues = new Hashtable();
023: private Hashtable customTags = new Hashtable();
024: private Vector containers = new Vector();
025: private TBWeblog blog;
026:
027: private String pageTitle = "";
028: private String charSet = "UTF-8";
029:
030: public BlogPageContainer(TBWeblog b, String pageTitle,
031: String charSet) {
032: blog = b;
033: this .pageTitle = pageTitle;
034: this .charSet = charSet;
035: }
036:
037: public void addContainer(TemplateContainer tc) {
038: if (!containers.contains(tc))
039: containers.add(tc);
040: }
041:
042: public void addCustomTag(CustomTag t) {
043: customTags.put(t, t.getValue());
044: }
045:
046: /* (non-Javadoc)
047: * @see net.sf.thingamablog.generator1.TemplateContainer#init(java.util.Hashtable)
048: */
049: public void initialize(Hashtable attribs) {
050: DateTag curDateTag = new DateTag("CurrentDate");
051: curDateTag.setLocale(blog.getLocale());
052:
053: tagValues.put(new TextTag("Charset"), charSet);
054: tagValues.put(new TextTag("Lang"), blog.getLocale()
055: .getLanguage());
056: tagValues.put(new TextTag("Country"), blog.getLocale()
057: .getCountry());
058: tagValues.put(new TextTag("BlogTitle"), blog.getTitle());
059: tagValues.put(new HyperTextTag("BlogDescription"), blog
060: .getDescription());
061: tagValues.put(new TextTag("FrontPageLink"), blog.getBaseUrl()
062: + blog.getFrontPageFileName());
063: tagValues.put(new TextTag("RssLink"), blog.getBaseUrl()
064: + blog.getRssFileName());
065: tagValues.put(new TextTag("IndexPageLink"), blog.getBaseUrl()
066: + blog.getArchiveIndexFileName());
067: tagValues.put(curDateTag, new Date());
068: tagValues.put(new TextTag("PageTitle"), pageTitle);
069: tagValues.put(new TextTag("AppName"), TBGlobals.APP_NAME);
070: tagValues.put(new TextTag("AppVersion"), TBGlobals.VERSION);
071: tagValues.put(new TextTag("AppLink"), TBGlobals.APP_URL);
072: tagValues.put(new TextTag("BaseURL"), blog.getBaseUrl());
073: }
074:
075: /* (non-Javadoc)
076: * @see net.sf.thingamablog.generator1.TemplateContainer#getValueForTag(net.sf.thingamablog.generator1.TemplateTag)
077: */
078: public Object getValueForTag(TemplateTag t) {
079: Object o = customTags.get(t);
080: if (o != null)
081: return o;
082:
083: return tagValues.get(t);
084: }
085:
086: /* (non-Javadoc)
087: * @see net.sf.thingamablog.generator1.TemplateContainer#getTags()
088: */
089: public List getTags() {
090: Vector tags = new Vector();
091: //add customtags so they are processed first
092: for (Enumeration e = customTags.keys(); e.hasMoreElements();)
093: tags.add(e.nextElement());
094:
095: for (Enumeration e = tagValues.keys(); e.hasMoreElements();)
096: tags.add(e.nextElement());
097: return tags;
098: }
099:
100: /* (non-Javadoc)
101: * @see net.sf.thingamablog.generator1.TemplateContainer#getContainers()
102: */
103: public List getContainers() {
104: return containers;
105: }
106:
107: /* (non-Javadoc)
108: * @see net.sf.thingamablog.generator1.TemplateContainer#processAgain()
109: */
110: public boolean processAgain() {
111: return false;
112: }
113:
114: /* (non-Javadoc)
115: * @see net.sf.thingamablog.generator1.TemplateContainer#prefix()
116: */
117: public String prefix() {
118: return null;
119: }
120:
121: /* (non-Javadoc)
122: * @see net.sf.thingamablog.generator1.TemplateContainer#postfix()
123: */
124: public String postfix() {
125: return null;
126: }
127:
128: /* (non-Javadoc)
129: * @see net.sf.thingamablog.generator1.TemplateElement#getName()
130: */
131: public String getName() {
132: return NAME;
133: }
134:
135: /* (non-Javadoc)
136: * @see net.sf.thingamablog.generator1.TemplateElement#getDefaultAttributes()
137: */
138: public Hashtable getDefaultAttributes() {
139: return null;
140: }
141:
142: public boolean isVisible() {
143: return true;
144: }
145: }
|