01: //
02: // Informa -- RSS Library for Java
03: // Copyright (c) 2002 by Niko Schmuck
04: //
05: // Niko Schmuck
06: // http://sourceforge.net/projects/informa
07: // mailto:niko_schmuck@users.sourceforge.net
08: //
09: // This library is free software.
10: //
11: // You may redistribute it and/or modify it under the terms of the GNU
12: // Lesser General Public License as published by the Free Software Foundation.
13: //
14: // Version 2.1 of the license should be included with this distribution in
15: // the file LICENSE. If the license is not included with this distribution,
16: // you may find a copy at the FSF web site at 'www.gnu.org' or 'www.fsf.org',
17: // or you may write to the Free Software Foundation, 675 Mass Ave, Cambridge,
18: // MA 02139 USA.
19: //
20: // This library is distributed in the hope that it will be useful,
21: // but WITHOUT ANY WARRANTY; without even the implied waranty of
22: // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23: // Lesser General Public License for more details.
24:
25: // $Id: RSS100Settings.java,v 1.5 2006/12/04 23:43:27 italobb Exp $
26:
27: package de.nava.informa.utils;
28:
29: import de.nava.informa.core.ChannelIF;
30: import de.nava.informa.core.ChannelUpdatePeriod;
31:
32: /**
33: * @author Jean-Guy Avelin
34: */
35: public class RSS100Settings implements CacheSettingsIF {
36:
37: //private static Log logger = LogFactory.getLog(RSS100Settings.class);
38:
39: private long defaultTtl = DEFAULT_TTL;
40:
41: public void setDefaultTtl(long defaultTtl) {
42: this .defaultTtl = defaultTtl;
43: }
44:
45: /**
46: * Returns the ttl (in order of preference) feed producer ttl (if exists)
47: * wantedTtl (if exists) defaultTtl (if exists).
48: */
49: public long getTtl(ChannelIF channel, long ttlInMs) {
50: ChannelUpdatePeriod updatePeriod = channel.getUpdatePeriod();
51: int updateFrequency = channel.getUpdateFrequency();
52:
53: if (updatePeriod == null) {
54: if (ttlInMs > MINIMAL_TTL)
55: return ttlInMs;
56: return this .defaultTtl;
57: }
58:
59: if (updateFrequency < 0) {
60: updateFrequency = 1;
61: }
62:
63: long timeToExpire = updatePeriod.getMsInPeriod()
64: / updateFrequency;
65:
66: if (ttlInMs > timeToExpire) {
67: return ttlInMs;
68: }
69: return timeToExpire;
70: }
71:
72: }
|