001: /*
002: * Copyright 2004-2007 the original author or authors.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: *
016: */
017:
018: package org.jpublish;
019:
020: import com.anthonyeden.lib.config.Configuration;
021: import com.anthonyeden.lib.config.ConfigurationException;
022: import org.jpublish.page.PageInstance;
023: import org.jpublish.util.vfs.VFSFile;
024:
025: import java.io.Reader;
026: import java.io.Writer;
027: import java.util.Iterator;
028:
029: /**
030: * The PageManager is a central access point for locating pages. Implementations of
031: * the PageManager interface will provide the page loading behavior.
032: *
033: * @author Anthony Eden
034: * @author Florin T.PATRASCU
035: */
036:
037: public interface PageManager {
038:
039: /**
040: * Set the SiteContext.
041: *
042: * @param siteContext The site context
043: */
044:
045: public void setSiteContext(SiteContext siteContext);
046:
047: /**
048: * Get a PageInstance from the given path. If no page can be found
049: * then this method will throw an Exception.
050: *
051: * @param path The page path
052: * @return The PageInstance
053: * @throws Exception Any Exception
054: */
055:
056: public PageInstance getPage(String path) throws Exception;
057:
058: /**
059: * Put the page instance into the location specified by the given
060: * path.
061: *
062: * @param path The page path
063: * @param page The PageInstance object
064: * @throws Exception
065: */
066:
067: public void putPage(String path, PageInstance page)
068: throws Exception;
069:
070: /**
071: * Remove the page at the specified path.
072: *
073: * @param path The page path
074: * @throws Exception
075: */
076:
077: public void removePage(String path) throws Exception;
078:
079: /**
080: * Make the directory for the specified path. Parent directories
081: * will also be created if they do not exist.
082: *
083: * @param path The directory path
084: */
085:
086: public void makeDirectory(String path);
087:
088: /**
089: * Remove the directory for the specified path. The directory
090: * must be empty.
091: *
092: * @param path The path
093: * @throws Exception
094: */
095:
096: public void removeDirectory(String path) throws Exception;
097:
098: /**
099: * Get an iterator which can be used to iterate through all pages
100: * known to the PageManager.
101: *
102: * @return An Iterator of Pages
103: * @throws Exception Any Exception
104: */
105:
106: public Iterator getPages() throws Exception;
107:
108: /**
109: * Get an iterator which can be used to iterate through all the
110: * pages at or below the specified path. If the path refers
111: * to a file, then the file's parent directory is used.
112: *
113: * @param path The base path
114: * @return An Iterator of Pages
115: * @throws Exception Any Exception
116: */
117:
118: public Iterator getPages(String path) throws Exception;
119:
120: /**
121: * Get the Virtual File System root file. The Virtual File System
122: * provides a datasource-independent way of navigating through all
123: * items known to the PageManager.
124: *
125: * @return The root VFSFile
126: * @throws Exception
127: */
128:
129: public VFSFile getVFSRoot() throws Exception;
130:
131: /**
132: * Load the PageManager's configuration.
133: *
134: * @param configuration The Configuration object
135: * @throws ConfigurationException
136: */
137:
138: public void loadConfiguration(Configuration configuration)
139: throws ConfigurationException;
140:
141: /**
142: * Get a page configuration reader for the page at the specified
143: * path. This method may throw an UnsupportedOperationException if
144: * the PageManager implementation does not allow for direct reading
145: * of a page's configuration.
146: *
147: * @param path The page path
148: * @return The Reader
149: * @throws Exception
150: */
151:
152: public Reader getPageConfigurationReader(String path)
153: throws Exception;
154:
155: /**
156: * Get a page configuration writer for the page at the specified
157: * path. This method may throw an UnsupportedOperationException if
158: * the PageManager implementation does not provide for updating
159: * a page's configuration.
160: *
161: * @param path The page path
162: * @return The Writer
163: * @throws Exception
164: */
165:
166: public Writer getPageConfigurationWriter(String path)
167: throws Exception;
168:
169: }
|