001: /*
002: * Helma License Notice
003: *
004: * The contents of this file are subject to the Helma License
005: * Version 2.0 (the "License"). You may not use this file except in
006: * compliance with the License. A copy of the License is available at
007: * http://adele.helma.org/download/helma/license.txt
008: *
009: * Copyright 1998-2003 Helma Software. All Rights Reserved.
010: *
011: * $RCSfile$
012: * $Author: root $
013: * $Revision: 8604 $
014: * $Date: 2007-09-28 15:16:38 +0200 (Fre, 28 Sep 2007) $
015: */
016:
017: package helma.framework.repository;
018:
019: import java.util.List;
020: import java.util.Iterator;
021: import java.io.IOException;
022:
023: /**
024: * Repository represents an abstract container of resources (e.g. code, skins, ...).
025: * In addition to resources, repositories may contain other repositories, building
026: * a hierarchical structure.
027: */
028: public interface Repository {
029:
030: /**
031: * Checksum of the repository and all its content. Implementations
032: * should make sure
033: *
034: * @return checksum
035: * @throws IOException
036: */
037: public long getChecksum() throws IOException;
038:
039: /**
040: * Returns the date the repository was last modified.
041: *
042: * @return last modified date
043: * @throws IOException
044: */
045: public long lastModified() throws IOException;
046:
047: /**
048: * Returns a specific direct resource of the repository
049: *
050: * @param resourceName name of the child resource to return
051: * @return specified child resource
052: */
053: public Resource getResource(String resourceName);
054:
055: /**
056: * Returns all direct resources
057: *
058: * @return direct resources
059: * @throws IOException
060: */
061: public Iterator getResources() throws IOException;
062:
063: /**
064: * Returns all direct and indirect resources
065: *
066: * @return resources recursive
067: * @throws IOException
068: */
069: public List getAllResources() throws IOException;
070:
071: /**
072: * Returns this repository's direct child repositories
073: *
074: * @return direct repositories
075: * @throws IOException
076: */
077: public Repository[] getRepositories() throws IOException;
078:
079: /**
080: * Checks wether the repository actually (or still) exists
081: *
082: * @return true if the repository exists
083: * @throws IOException
084: */
085: public boolean exists() throws IOException;
086:
087: /**
088: * Creates the repository if does not exist yet
089: *
090: * @throws IOException
091: */
092: public void create() throws IOException;
093:
094: /**
095: * Checks wether the repository is to be considered a top-level
096: * repository from a scripting point of view. For example, a zip
097: * file within a file repository is not a root repository from
098: * a physical point of view, but from the scripting point of view it is.
099: *
100: * @return true if the repository is to be considered a top-level script repository
101: */
102: public boolean isScriptRoot();
103:
104: /**
105: * Returns this repository's parent repository.
106: * Returns null if this repository already is the top-level repository
107: *
108: * @return the parent repository
109: */
110: public Repository getParentRepository();
111:
112: /**
113: * Get this repository's logical script root repository.
114: *
115: * @see {isScriptRoot()}
116: * @return top-level repository
117: */
118: public Repository getRootRepository();
119:
120: /**
121: * Returns the name of the repository; this is a full name including all
122: * parent repositories.
123: *
124: * @return full name of the repository
125: */
126: public String getName();
127:
128: /**
129: * Returns the name of the repository.
130: *
131: * @return name of the repository
132: */
133: public String getShortName();
134:
135: }
|