001/**
002 * Copyright 2005-2016 The Kuali Foundation
003 *
004 * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php
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 */
016package org.kuali.rice.krms.api.repository.type;
017
018import org.kuali.rice.core.api.mo.common.Identifiable;
019import org.kuali.rice.core.api.mo.common.Versioned;
020import org.kuali.rice.core.api.mo.common.active.Inactivatable;
021
022/**
023 * Defines the contract for a KRMS Attribute Definition. An attribute definition contract
024 * describes an attribute and how to find the attribute for krad purposes.
025 * It has a name, namespace, label, description and associated ui component.
026 */
027public interface KrmsAttributeDefinitionContract extends Identifiable, Inactivatable, Versioned {
028
029        /**
030         * Returns the name of this attribute definition.
031         *
032         * <p>
033         * All attribute definitions have a name and namespace, so this value can
034     * not be null or blank. The combination of name and namespace must be unique within the
035     * entire KRMS system.
036         * </p>
037         * @return name for this attribute definition
038         */
039        public String getName();
040
041        /**
042         * Returns the namespace of this attribute definition.
043         *
044         * <p>
045         * The namespace provides scope of the the attribute definition. All attribute definition
046     * have a name and namespace, so this field may not be null or blank. The combination
047     * of name and namespace must be unique within the entire KRMS system.
048         * </p>
049         * @return the namespace of this attribute definition
050         */
051        public String getNamespace();
052
053        /**
054         * Returns the label of this attribute definition.
055     * <p>This is an optional
056     * field and may be null or blank.</p>
057         * 
058         * @return the label to be used when displaying the attribute
059         */
060        public String getLabel();
061
062    /**
063     * Returns the description of the attribute.
064     * <p>This is an option field and may be null or blank.</p>
065     * @return a text description of the attribute
066     */
067    public String getDescription();
068        
069        /**
070         * Returns the name of the component used to display the attribute.
071         * 
072         * @return the component name of the of the attribute
073         */
074        public String getComponentName();
075}