001: /*--
002:
003: Copyright (C) 2000-2003 Anthony Eden.
004: All rights reserved.
005:
006: Redistribution and use in source and binary forms, with or without
007: modification, are permitted provided that the following conditions
008: are met:
009:
010: 1. Redistributions of source code must retain the above copyright
011: notice, this list of conditions, and the following disclaimer.
012:
013: 2. Redistributions in binary form must reproduce the above copyright
014: notice, this list of conditions, and the disclaimer that follows
015: these conditions in the documentation and/or other materials
016: provided with the distribution.
017:
018: 3. The name "EdenLib" must not be used to endorse or promote products
019: derived from this software without prior written permission. For
020: written permission, please contact me@anthonyeden.com.
021:
022: 4. Products derived from this software may not be called "EdenLib", nor
023: may "EdenLib" appear in their name, without prior written permission
024: from Anthony Eden (me@anthonyeden.com).
025:
026: In addition, I request (but do not require) that you include in the
027: end-user documentation provided with the redistribution and/or in the
028: software itself an acknowledgement equivalent to the following:
029: "This product includes software developed by
030: Anthony Eden (http://www.anthonyeden.com/)."
031:
032: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
033: WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
034: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
035: DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
036: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
037: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
038: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
039: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
040: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
041: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
042: POSSIBILITY OF SUCH DAMAGE.
043:
044: For more information on EdenLib, please see <http://edenlib.sf.net/>.
045:
046: */
047:
048: package com.anthonyeden.lib.resource;
049:
050: import java.util.List;
051: import java.util.Iterator;
052: import java.util.ArrayList;
053:
054: /** Abstract implementation of the ResourceLoader interface. Provides
055: default implementations of some methods.
056:
057: @author Anthony Eden
058: */
059:
060: public abstract class AbstractResourceLoader implements ResourceLoader {
061:
062: /** The default delay time in milliseconds (5 seconds). */
063: public static final int DEFAULT_DELAY = 5000;
064:
065: private int delay = DEFAULT_DELAY;
066: private ArrayList monitors = new ArrayList();
067:
068: /** Load the resource specified by the given path. Calling this method will
069: cause the resource to be loaded and monitored.
070:
071: @param path The path
072: @param handler The ResourceReceipient callback
073: @throws ResourceException
074: */
075:
076: public void loadResource(String path, ResourceRecipient handler)
077: throws ResourceException {
078: loadResource(path, handler, true);
079: }
080:
081: /** Get the monitoring delay.
082:
083: @return The monitoring delay in milliseconds
084: */
085:
086: public int getDelay() {
087: return delay;
088: }
089:
090: /** Set the monitoring delay in milliseconds.
091:
092: @param delay The delay in milliseconds
093: */
094:
095: public void setDelay(int delay) {
096: this .delay = delay;
097: }
098:
099: /** Start all stopped ResourceMonitors. */
100:
101: public void startMonitors() {
102: Iterator iter = monitors.iterator();
103: while (iter.hasNext()) {
104: ResourceMonitor monitor = (ResourceMonitor) iter.next();
105: monitor.startMonitor();
106: }
107: }
108:
109: /** Stop all running ResourceMonitors. */
110:
111: public void stopMonitors() {
112: Iterator iter = monitors.iterator();
113: while (iter.hasNext()) {
114: ResourceMonitor monitor = (ResourceMonitor) iter.next();
115: monitor.stopMonitor();
116: }
117: }
118:
119: /** Get a List of all registered monitors.
120:
121: @return A List of monitors
122: */
123:
124: protected List getMonitors() {
125: return monitors;
126: }
127:
128: }
|