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.site;
019:
020: import org.apache.lenya.cms.publication.Document;
021: import org.apache.lenya.cms.publication.Publication;
022: import org.apache.lenya.cms.repository.Node;
023: import org.apache.lenya.cms.repository.RepositoryItem;
024:
025: /**
026: * Object to hold a site structure information.
027: *
028: * @version $Id: SiteStructure.java 487598 2006-12-15 17:01:14Z andreas $
029: */
030: public interface SiteStructure extends RepositoryItem {
031:
032: /**
033: * @return The repository node the site structure is stored in.
034: */
035: Node getRepositoryNode();
036:
037: /**
038: * @return The publication.
039: */
040: Publication getPublication();
041:
042: /**
043: * @return The area.
044: */
045: String getArea();
046:
047: /**
048: * @return All nodes in this structure.
049: */
050: SiteNode[] getNodes();
051:
052: /**
053: * @param path The path.
054: * @return A site node.
055: * @throws SiteException if no node is contained for the path.
056: */
057: SiteNode getNode(String path) throws SiteException;
058:
059: /**
060: * Checks if a node is contained for a certain path.
061: * @param path The path.
062: * @return A boolean value.
063: */
064: boolean contains(String path);
065:
066: /**
067: * Checks if a link is contained for a certain path and language.
068: * @param path The path.
069: * @param language The language.
070: * @return A boolean value.
071: */
072: boolean contains(String path, String language);
073:
074: /**
075: * Checks if the structure contains a link with a certain UUID and language.
076: * @param uuid The UUID.
077: * @param language The language.
078: * @return A boolean value.
079: */
080: boolean containsByUuid(String uuid, String language);
081:
082: /**
083: * Checks if the structure contains any language version of a document.
084: * @param uuid The uuid.
085: * @return A boolean value.
086: */
087: boolean containsInAnyLanguage(String uuid);
088:
089: /**
090: * Returns a node for a certain UUID.
091: * @param uuid The UUID.
092: * @param language The language.
093: * @return a link.
094: * @throws SiteException if no node is contained for the UUID.
095: */
096: Link getByUuid(String uuid, String language) throws SiteException;
097:
098: /**
099: * Adds a link to a document.
100: * @param path The path.
101: * @param doc The document.
102: * @return A link.
103: * @throws SiteException if the document is already contained or the node
104: * for this path already contains a link for this language.
105: */
106: Link add(String path, Document doc) throws SiteException;
107:
108: /**
109: * Adds a site node.
110: * @param path The path.
111: * @return A site node.
112: * @throws SiteException if the path is already contained.
113: */
114: SiteNode add(String path) throws SiteException;
115:
116: /**
117: * Adds a site node before a specific other node.
118: * @param path The path.
119: * @param followingSiblingPath The path of the node which will be the
120: * following sibling of the node to insert.
121: * @return A site node.
122: * @throws SiteException if the path is already contained.
123: */
124: SiteNode add(String path, String followingSiblingPath)
125: throws SiteException;
126:
127: /**
128: * @return The top level nodes.
129: */
130: SiteNode[] getTopLevelNodes();
131:
132: }
|