1 /** 2 * Copyright 2010 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the 5 * "License"); you may not use this file except in compliance with the 6 * License. You may obtain a copy of the License at 7 * 8 * http://www.osedu.org/licenses/ECL-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 13 * implied. See the License for the specific language governing 14 * permissions and limitations under the License. 15 */ 16 17 package org.kuali.student.r2.common.infc; 18 19 /** 20 * Common service pattern for entities. This interface is applied to 21 * entites that are identified by a Key. 22 * 23 * @author nwright 24 */ 25 26 public interface HasKey 27 extends HasPrimaryKey { 28 29 /** 30 * Unique key to this object. Unlike an Id this key can be 31 * explicitly set by the application and is intended to be 32 * "somewhat" readable by a human. 33 * 34 * A Key:<ul> 35 36 * <li>A Key is used when the actual value is important</li> 37 * <li>A Key value might be kuali.org.School</li> 38 * <li>A Key on occasion may be used or seen by an end 39 * user.</li> 40 * <li>Keys are assumed to have the same values in different KS 41 * implementations</li> 42 * <li>Key values are defined in configuration</li> 43 * <li>Key values have significance in that they are referenced 44 * in Configuration</li> 45 * <li>Key values are expected to be occasionally used in 46 * application code</li> 47 * </ul> 48 * 49 * Once an object is created with the specified key it cannot be 50 * changed. Instead the object must be deleted or in-activated and 51 * a new object created with the right key. 52 * 53 * @name Key 54 * @readOnly on updates 55 * @required on updates 56 */ 57 public String getKey(); 58 }