01: /*
02: JSPWiki - a JSP-based WikiWiki clone.
03:
04: Copyright (C) 2001-2002 Janne Jalkanen (Janne.Jalkanen@iki.fi)
05:
06: This program is free software; you can redistribute it and/or modify
07: it under the terms of the GNU Lesser General Public License as published by
08: the Free Software Foundation; either version 2.1 of the License, or
09: (at your option) any later version.
10:
11: This program is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: GNU Lesser General Public License for more details.
15:
16: You should have received a copy of the GNU Lesser General Public License
17: along with this program; if not, write to the Free Software
18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: */
20: package com.ecyrd.jspwiki.dav.items;
21:
22: import java.io.InputStream;
23: import java.util.ArrayList;
24: import java.util.Collection;
25: import java.util.Iterator;
26:
27: import com.ecyrd.jspwiki.dav.DavPath;
28: import com.ecyrd.jspwiki.dav.DavProvider;
29:
30: /**
31: * @author jalkanen
32: *
33: * @since
34: */
35: public abstract class DavItem {
36: protected DavProvider m_provider;
37: protected ArrayList m_items = new ArrayList();
38: protected DavPath m_path;
39:
40: protected DavItem(DavProvider provider, DavPath path) {
41: m_provider = provider;
42: m_path = path;
43: }
44:
45: public DavPath getPath() {
46: return m_path;
47: }
48:
49: public abstract Collection getPropertySet();
50:
51: public abstract String getHref();
52:
53: public abstract InputStream getInputStream();
54:
55: public abstract long getLength();
56:
57: public abstract String getContentType();
58:
59: public Iterator iterator(int depth) {
60: ArrayList list = new ArrayList();
61:
62: if (depth == 0) {
63: list.add(this );
64: } else if (depth == 1) {
65: list.add(this );
66: list.addAll(m_items);
67: } else if (depth == -1) {
68: list.add(this );
69:
70: for (Iterator i = m_items.iterator(); i.hasNext();) {
71: DavItem di = (DavItem) i.next();
72:
73: for (Iterator j = di.iterator(-1); i.hasNext();) {
74: list.add(j.next());
75: }
76: }
77: }
78:
79: return list.iterator();
80: }
81: }
|