001: //
002: //Informa -- RSS Library for Java
003: //Copyright (c) 2002 by Niko Schmuck
004: //
005: //Niko Schmuck
006: //http://sourceforge.net/projects/informa
007: //mailto:niko_schmuck@users.sourceforge.net
008: //
009: //This library is free software.
010: //
011: //You may redistribute it and/or modify it under the terms of the GNU
012: //Lesser General Public License as published by the Free Software Foundation.
013: //
014: //Version 2.1 of the license should be included with this distribution in
015: //the file LICENSE. If the license is not included with this distribution,
016: //you may find a copy at the FSF web site at 'www.gnu.org' or 'www.fsf.org',
017: //or you may write to the Free Software Foundation, 675 Mass Ave, Cambridge,
018: //MA 02139 USA.
019: //
020: //This library is distributed in the hope that it will be useful,
021: //but WITHOUT ANY WARRANTY; without even the implied waranty of
022: //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
023: //Lesser General Public License for more details.
024: //
025: // $Id: CacheSettings.java,v 1.4 2004/06/22 18:52:30 jga Exp $
026:
027: package de.nava.informa.utils;
028:
029: import de.nava.informa.core.ChannelIF;
030: import de.nava.informa.core.ChannelFormat;
031:
032: /**
033: * delegation class for the various CacheSettingsIF implementation.
034: *
035: *
036: * default behavior : ttl (or update period) in feed is always respected.
037: * without such indication, the ttl specified by the informa user is used.
038: * @author Jean-Guy Avelin
039: */
040: public class CacheSettings implements CacheSettingsIF {
041:
042: static private CacheSettingsIF v_091;
043: static private CacheSettingsIF v_100;
044: static private CacheSettingsIF v_200;
045: static private CacheSettingsIF v_A030;
046: /* default settings */
047: /* can read properties file to instantiate alternative implementations*/
048: /* TODO : property file handling */
049: static {
050: v_091 = new RSS091Settings();
051: v_100 = new RSS100Settings();
052: v_200 = new RSS200Settings();
053: v_A030 = new Atom030Settings();
054: }
055:
056: /**
057: * determine ttl for the feed, depending on ttl specified by the
058: * feed producer and the ttl wanted by the informa user.
059: */
060: public long getTtl(ChannelIF channel, long ttl) {
061:
062: if (channel.getFormat().equals(ChannelFormat.RSS_0_91)
063: || channel.getFormat().equals(ChannelFormat.RSS_0_92)
064: || channel.getFormat().equals(ChannelFormat.RSS_0_93)
065: || channel.getFormat().equals(ChannelFormat.RSS_0_94)) {
066: return v_091.getTtl(channel, ttl);
067: } else if (channel.getFormat().equals(ChannelFormat.RSS_1_0)) {
068: return v_100.getTtl(channel, ttl);
069: } else if (channel.getFormat().equals(ChannelFormat.RSS_2_0)) {
070: return v_200.getTtl(channel, ttl);
071: } else if (channel.getFormat().equals(ChannelFormat.ATOM_0_3)) {
072: return v_A030.getTtl(channel, ttl);
073: }
074:
075: return CacheSettingsIF.DEFAULT_TTL;
076: }
077:
078: /**
079: * TODO : remove ?
080: */
081: public void setDefaultTtl(long defTtl) {
082: v_091.setDefaultTtl(defTtl);
083: v_100.setDefaultTtl(defTtl);
084: v_200.setDefaultTtl(defTtl);
085: v_A030.setDefaultTtl(defTtl);
086: }
087:
088: public void setDefaultTtl(String type, long defTtl) {
089: if (ChannelFormat.RSS_0_91.equals(type)
090: || ChannelFormat.RSS_0_92.equals(type)
091: || ChannelFormat.RSS_0_93.equals(type)
092: || ChannelFormat.RSS_0_94.equals(type)) {
093: v_091.setDefaultTtl(defTtl);
094: return;
095: }
096:
097: if (ChannelFormat.RSS_1_0.equals(type)) {
098: v_100.setDefaultTtl(defTtl);
099: return;
100: }
101:
102: if (ChannelFormat.RSS_2_0.equals(type)) {
103: v_200.setDefaultTtl(defTtl);
104: return;
105: }
106:
107: if (ChannelFormat.ATOM_0_3.equals(type)) {
108: v_A030.setDefaultTtl(defTtl);
109: return;
110: }
111:
112: }
113: }
|