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: /**
021: * A node in the site structure.
022: */
023: public interface SiteNode {
024:
025: /**
026: * @return The site structure this node belongs to.
027: */
028: SiteStructure getStructure();
029:
030: /**
031: * @return The path.
032: */
033: String getPath();
034:
035: /**
036: * @return The parent node.
037: * @throws SiteException If the node has no parent.
038: */
039: SiteNode getParent() throws SiteException;
040:
041: /**
042: * @return If this is a top level node. Top level nodes have no parents.
043: */
044: boolean isTopLevel();
045:
046: /**
047: * @return The languages of this node.
048: */
049: String[] getLanguages();
050:
051: /**
052: * @param language The language.
053: * @return The link for the language.
054: * @throws SiteException if no link is contained for the language.
055: */
056: Link getLink(String language) throws SiteException;
057:
058: /**
059: * @return The UUID of this node.
060: */
061: String getUuid();
062:
063: /**
064: * Checks if a link for a certain language is contained.
065: * @param language The language.
066: * @return A boolean value.
067: */
068: boolean hasLink(String language);
069:
070: /**
071: * @return The name, i.e. the last path element.
072: */
073: String getName();
074:
075: /**
076: * @return if the node is visible in the navigation.
077: */
078: boolean isVisible();
079:
080: /**
081: * Sets the node visibility in the navigation.
082: * @param visibleInNav if the node should be visible.
083: */
084: void setVisible(boolean visibleInNav);
085:
086: /**
087: * Deletes this node.
088: */
089: void delete();
090:
091: /**
092: * @return The children of this node.
093: */
094: SiteNode[] getChildren();
095:
096: /**
097: * @return if the node has an external link.
098: */
099: boolean hasLink();
100:
101: /**
102: * @return The external link.
103: */
104: String getHref();
105:
106: /**
107: * @return The suffix.
108: */
109: String getSuffix();
110:
111: }
|