001 /*
002 // $Id: MetadataElement.java 482 2012-01-05 23:27:27Z jhyde $
003 //
004 // Licensed to Julian Hyde under one or more contributor license
005 // agreements. See the NOTICE file distributed with this work for
006 // additional information regarding copyright ownership.
007 //
008 // Julian Hyde licenses this file to you under the Apache License,
009 // Version 2.0 (the "License"); you may not use this file except in
010 // compliance with the License. You may obtain a copy of the License at:
011 //
012 // http://www.apache.org/licenses/LICENSE-2.0
013 //
014 // Unless required by applicable law or agreed to in writing, software
015 // distributed under the License is distributed on an "AS IS" BASIS,
016 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017 // See the License for the specific language governing permissions and
018 // limitations under the License.
019 */
020 package org.olap4j.metadata;
021
022 /**
023 * An element which describes the structure of an OLAP schema.
024 *
025 * @author jhyde
026 * @version $Id: MetadataElement.java 482 2012-01-05 23:27:27Z jhyde $
027 * @since Oct 13, 2006
028 */
029 public interface MetadataElement {
030 /**
031 * Returns the name of this element.
032 *
033 * <p>Name is never null. Unlike {@link #getCaption() caption} and
034 * {@link #getDescription() description}, an element's name is the same in
035 * every {@link java.util.Locale}.
036 *
037 * @return name of this element
038 */
039 String getName();
040
041 /**
042 * Returns the unique name of this element within its schema.
043 *
044 * <p>The unique name is never null, and is unique among all elements in
045 * this {@link Schema}.
046 *
047 * <p>Unlike {@link #getCaption() caption} and
048 * {@link #getDescription() description}, an element's unique name is the
049 * same in every {@link java.util.Locale}.
050 *
051 * <p>The structure of the unique name is provider-specific and subject to
052 * change between provider versions. Applications should not attempt to
053 * reverse-engineer the structure of the name.
054 *
055 * @return unique name of this element
056 */
057 String getUniqueName();
058
059 /**
060 * Returns the caption of this element in the current connection's
061 * {@link java.util.Locale}.
062 *
063 * <p>This method may return the empty string, but never returns null.
064 * The rules for deriving an element's caption are provider-specific,
065 * but generally if no caption is defined for the element in a given locale,
066 * returns the name of the element.</p>
067 *
068 * @return caption of this element in the current locale; never null.
069 *
070 * @see org.olap4j.OlapConnection#getLocale()
071 */
072 String getCaption();
073
074 /**
075 * Returns the description of this element in the current connection's
076 * {@link java.util.Locale}.
077 *
078 * <p>This method may return the empty string, but never returns null.
079 * The rules for deriving an element's description are provider-specific,
080 * but generally if no description is defined
081 * for the element in a given locale, returns the description in base
082 * locale.</p>
083 *
084 * @return description of this element in the current locale; never null.
085 *
086 * @see org.olap4j.OlapConnection#getLocale()
087 */
088 String getDescription();
089
090 /**
091 * Returns whether this element is visible to end-users.
092 *
093 * <p>Visibility is a hint for client applications. An element's visibility
094 * does not affect how it is treated when MDX queries are evaluated.
095 *
096 * <p>If you wish to hide an MDX element at a deeper level, consider two
097 * OLAP concepts that sound similar to visibility but have different
098 * semantics:
099 *
100 * <ul>
101 * <li>{@link Member#isHidden Hidden members} in ragged hierarchies;</li>
102 * <li>{@link org.olap4j.OlapConnection#getRoleName Access control}</li>
103 * </ul>
104 *
105 * @return Whether this element is visible
106 */
107 boolean isVisible();
108 }
109
110 // End MetadataElement.java