001: package com.ibm.webdav;
002:
003: /*
004: * (C) Copyright IBM Corp. 2000 All rights reserved.
005: *
006: * The program is provided "AS IS" without any warranty express or
007: * implied, including the warranty of non-infringement and the implied
008: * warranties of merchantibility and fitness for a particular purpose.
009: * IBM will not be liable for any damages suffered by you as a result
010: * of using the Program. In no event will IBM be liable for any
011: * special, indirect or consequential damages or lost profits even if
012: * IBM has been advised of the possibility of their occurrence. IBM
013: * will not be liable for any third party claims against you.
014: */
015:
016: /** A CollectionMember encapsulates a Resource in a collection along with
017: * a number of live properties that might be useful to client applications.
018: * Since WebDAV requires the use of a Collection's properties to determine
019: * the members of a collection, we might as well make use of the properties returned
020: * so that clients don't have to make a lot of unnecessary server requests. The
021: * properties collected in the CollectionMember are those used by the WebDAV
022: * Explorer.
023: * @author Jim Amsden <jamsden@us.ibm.com>
024: */
025: public class CollectionMember implements java.io.Serializable {
026: private Collection parent = null;
027: private Resource resource = null;
028: private MultiStatus properties = null;
029: private String name = null; // the name relative to the parent
030:
031: /** Create a CollectionMember for a resource. Include it parent and some
032: * convenient DAV properties.
033: * @param parent the parent collection
034: * @param resource the member resource of the parent
035: * @param initialProperties a MultiStatus containing some useful DAV properties
036: */
037: public CollectionMember(Collection parent, Resource resource,
038: MultiStatus initialProperties) throws WebDAVException {
039: this .parent = parent;
040: this .resource = resource;
041: this .properties = initialProperties;
042: String parentURI = parent.getURL().getFile();
043: String memberURI = resource.getURL().getFile();
044: name = memberURI.substring(parentURI.length());
045: // in case the parent collection didn't end with a /
046: if (name.startsWith("/")) {
047: name = name.substring(1);
048: }
049: }
050:
051: /** Create a CollectionMember for a resource. The resource is
052: * a root collection that has no parent or properties
053: * @param resource the member resource
054: */
055: public CollectionMember(Resource resource) throws WebDAVException {
056: this .parent = null;
057: this .properties = null;
058: this .resource = resource;
059: name = resource.getURL().toString();
060: }
061:
062: /** Return the name of the Resource in this CollectionMember relative to its parent. Use
063: * getResource().getURL().toString() to get the full URL.
064: * @return the name of this member relative to its parent collection
065: */
066: public String getName() {
067: return name;
068: }
069:
070: /** Return the parent of this CollectionMember. i.e., the Collection
071: * it's associated Resource is contained in.
072: * @return the parent collection
073: */
074: public Collection getParent() {
075: return parent;
076: }
077:
078: /** Return the properties of the Resource in this CollectionMember. These
079: * properties are retained only for convenience of client applications. The
080: * properties can always be obtained using getProperties().
081: * @return A PropertyResponse containing some useful DAV properties
082: * @see com.ibm.webdav.Resource#getProperties
083: */
084: public PropertyResponse getProperties() {
085: PropertyResponse response = (PropertyResponse) properties
086: .getResponses().nextElement();
087: return response;
088: }
089:
090: /** Return the Resource represented by this CollectionMember.
091: * @return the resource associted with this CollectionMember
092: */
093: public Resource getResource() {
094: return resource;
095: }
096:
097: /** Return a String representation of this CollectionMember.
098: * @return the name of the CollectionMember
099: * @see com.ibm.webdav.CollectionMember#getName
100: */
101: public String toString() {
102: return getName();
103: }
104: }
|