001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: */
018: package org.apache.lenya.cms.publication;
019:
020: import org.apache.lenya.cms.repository.RepositoryItemFactory;
021: import org.apache.lenya.cms.repository.Session;
022:
023: /**
024: * A DocumentIdentityMap avoids the multiple instanciation of a document object.
025: *
026: * @version $Id: DocumentFactory.java 569341 2007-08-24 10:47:38Z andreas $
027: */
028: public interface DocumentFactory extends RepositoryItemFactory {
029:
030: /**
031: * Returns a document.
032: * @param identifier The identifier of the document.
033: * @return A document.
034: * @throws DocumentBuildException if the document does not exist.
035: */
036: Document get(DocumentIdentifier identifier)
037: throws DocumentBuildException;
038:
039: /**
040: * Returns a document.
041: * @param publication The publication.
042: * @param area The area.
043: * @param uuid The document ID.
044: * @param language The language.
045: * @return A document.
046: * @throws DocumentBuildException if the document does not exist.
047: */
048: Document get(Publication publication, String area, String uuid,
049: String language) throws DocumentBuildException;
050:
051: /**
052: * Returns a revision of a document.
053: * @param publication The publication.
054: * @param area The area.
055: * @param uuid The document ID.
056: * @param language The language.
057: * @param revision The revision..
058: * @return A document.
059: * @throws DocumentBuildException if the document does not exist.
060: */
061: Document get(Publication publication, String area, String uuid,
062: String language, int revision)
063: throws DocumentBuildException;
064:
065: /**
066: * Returns the document identified by a certain web application URL.
067: * @param webappUrl The web application URL.
068: * @return A document.
069: * @throws DocumentBuildException if an error occurs.
070: */
071: Document getFromURL(String webappUrl) throws DocumentBuildException;
072:
073: /**
074: * Builds a clone of a document for another language.
075: * @param document The document to clone.
076: * @param language The language of the target document.
077: * @return A document.
078: * @throws DocumentBuildException if an error occurs.
079: * @deprecated use {@link DocumentLocator#getLanguageVersion(String)} instead.
080: */
081: Document getLanguageVersion(Document document, String language)
082: throws DocumentBuildException;
083:
084: /**
085: * Builds a clone of a document for another area.
086: * @param document The document to clone.
087: * @param area The area of the target document.
088: * @return A document.
089: * @throws DocumentBuildException if an error occurs.
090: * @deprecated use {@link DocumentLocator#getAreaVersion(String)} instead.
091: */
092: Document getAreaVersion(Document document, String area)
093: throws DocumentBuildException;
094:
095: /**
096: * Builds a document for the default language.
097: * @param publication The publication.
098: * @param area The area.
099: * @param uuid The document UUID.
100: * @return A document.
101: * @throws DocumentBuildException if an error occurs.
102: */
103: Document get(Publication publication, String area, String uuid)
104: throws DocumentBuildException;
105:
106: /**
107: * Checks if a webapp URL represents a document.
108: * @param webappUrl A web application URL.
109: * @return A boolean value.
110: * @throws DocumentBuildException if an error occurs.
111: */
112: boolean isDocument(String webappUrl) throws DocumentBuildException;
113:
114: /**
115: * @return The session.
116: */
117: Session getSession();
118:
119: /**
120: * @param locator The locator.
121: * @return A document.
122: * @throws DocumentBuildException if an error occurs.
123: */
124: Document get(DocumentLocator locator) throws DocumentBuildException;
125:
126: /**
127: * @param id The publication ID.
128: * @return A publication.
129: * @throws PublicationException if the publication does not exist.
130: */
131: Publication getPublication(String id) throws PublicationException;
132:
133: /**
134: * @return All publications.
135: */
136: Publication[] getPublications();
137:
138: /**
139: * @param id The publication ID.
140: * @return If a publication with this ID exists.
141: */
142: boolean existsPublication(String id);
143: }
|