libreccm-legacy/ccm-docrepo/src/com/arsdigita/docrepo/Resource.java

125 lines
3.4 KiB
Java

/*
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.docrepo;
import java.math.BigDecimal;
import java.net.URL;
/**
* This interface describes the functionality common to operations
* on files and folders in the document repository application.
*
* Concrete implementations of this interface may vary in the
* implementation of the data store. For example, persistent data for
* resource might be stored in a file system or a database.
*
* @author Stefan Deusch (stefan@arsdigita.com)
* @version $Id: Resource.java pboy $
*/
public interface Resource {
/**
* The path-separator character, represented as a string for convenience.
*/
final static String SEPARATOR = "/";
/**
* The path-separator character.
*/
final static char SEPARATOR_CHAR = SEPARATOR.charAt(0);
/**
* Returns the name of the file or folder corresponding to this
* resource.
*/
String getName();
/**
* Returns a description of the resource, or null if no
* description has been provided.
*/
String getDescription();
/**
* Returns the path name of this resource's parent, or null if
* this resource does not have a parent.
*/
Resource getParent();
/**
* Converts this resource into a pathname string.
*/
String getPath();
/**
* Tests whether this resource is a folder.
*/
boolean isFolder();
/**
* Tests whether this resource is a file.
*/
boolean isFile();
/**
* Copies the resource into another location. Preserves the
* original name of the resource but places the copy inside a new
* parent resource.
*
* @param parent the parent of the copy
* @return a copy of the original resource
*/
Resource copyTo(Resource parent) throws ResourceExistsException;
/**
* Copies the resource into another location with a new name.
*
* @param name the name of the copy
* @param parent the parent of the copy
* @return a copy of the original resource.
*/
Resource copyTo(String name, Resource parent) throws ResourceExistsException;
/**
* Copies the resource into the same location (same parent) with a
* new name.
*
* @param name the name of the copy
* @return a copy of the original resource.
*/
Resource copyTo(String name) throws ResourceExistsException;
/**
* Returns the pathname string of this resource.
*/
String toString();
/**
* Returns the URL corresponding to this resource.
*/
URL toURL();
/**
* Returns a unique identifier for this resource.
*/
BigDecimal getID();
}