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 * This is the contract for a KrmsTypeAttribute.
024 * <p>A KrmsTypeAttribute associates a {@link KrmsTypeDefinition} with an individual attribute
025 * {@link KrmsAttributeDefinition} associated with a the KrmsTypeDefinition.</p>
026 * @see KrmsTypeAttributeContract
027 */
028public interface KrmsTypeAttributeContract extends Identifiable, Inactivatable, Versioned {
029
030        /**
031         * Returns the id of the KrmsTypeDefinition to which the attribute applies
032         *
033         * <p>
034         * A KRMS type definition has zero or more attributes associated with it.
035     * The id field indicates which type definition this attribute is associated
036     * with. It is the id of a KrmsTypeDefinition related to the attribute. This required
037     * field may not be null or blank.
038         * </p>
039         * @return id for KrmsTypeDefinition related to the attribute.
040         */
041        public String getTypeId();
042
043        /**
044         * Returns the id of the KrmsAttributeDefinition of the attribute.
045         *
046         * <p>
047         * The attribute definition contains metadata about the attribute. This
048     * is a required field and may not be null or blank. Many
049     * attributes may share the same attribute definition.
050         * </p>
051         * @return the attribute definition id
052         */
053        public String getAttributeDefinitionId();
054
055        /**
056         * Returns the sequence number of the attribute within the KrmsTypeDefinition collection.
057     * <p>The list of attributes is an ordered list. This value represents the position in the list
058     * and cannot be null.</p>
059         * 
060         * @return the sequence number of the attribute
061         */
062        public Integer getSequenceNumber();
063
064}