001 /** 002 * Copyright 2005-2013 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 */ 016 package org.kuali.rice.kim.impl.identity; 017 018 import org.kuali.rice.kim.api.identity.entity.EntityDefault; 019 020 /** 021 * 022 * This service archives EntityDefault. It's purpose is to provide long term 023 * storage for basic identity data that may be removed from the IdentityService implementation's 024 * backing store. 025 * 026 * @author Kuali Rice Team (rice.collab@kuali.org) 027 * 028 */ 029 public interface IdentityArchiveService { 030 031 /** 032 * Gets a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} with an id from the archive. 033 * {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} is a condensed version of {@link org.kuali.rice.kim.api.identity.entity.Entity} that contains 034 * default values of its subclasses 035 * 036 * <p> 037 * This method will return null if the Entity does not exist. 038 * </p> 039 * 040 * @param id the unique id to retrieve the entity by. cannot be null. 041 * @return a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} or null 042 * @throws IllegalArgumentException if the id is blank 043 */ 044 EntityDefault getEntityDefaultFromArchive(String id ) throws IllegalArgumentException; 045 046 /** 047 * Gets a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} with an principalId from the archive. 048 * {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} is a condensed version of {@link org.kuali.rice.kim.api.identity.entity.Entity} that contains 049 * default values of its subclasses 050 * 051 * <p> 052 * This method will return null if the Entity does not exist. 053 * </p> 054 * 055 * @param principalId the unique principalId to retrieve the entity by. cannot be null. 056 * @return a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} or null 057 * @throws IllegalArgumentException if the principalId is blank 058 */ 059 EntityDefault getEntityDefaultFromArchiveByPrincipalId(String principalId) throws IllegalArgumentException; 060 061 /** 062 * Gets a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} with an principalName from the archive. 063 * {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} is a condensed version of {@link org.kuali.rice.kim.api.identity.entity.Entity} that contains 064 * default values of its subclasses 065 * 066 * <p> 067 * This method will return null if the Entity does not exist. 068 * </p> 069 * 070 * @param principalName the unique principalName to retrieve the entity by. cannot be null. 071 * @return a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} or null 072 * @throws IllegalArgumentException if the principalName is blank 073 */ 074 EntityDefault getEntityDefaultFromArchiveByPrincipalName(String principalName) throws IllegalArgumentException; 075 076 /** 077 * Gets a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} with an employeeId from the archive. 078 * {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} is a condensed version of {@link org.kuali.rice.kim.api.identity.entity.Entity} that contains 079 * default values of its subclasses 080 * 081 * <p> 082 * This method will return null if the Entity does not exist. 083 * </p> 084 * 085 * @param employeeId the unique employeeId to retrieve the entity by. cannot be null. 086 * @return a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} or null 087 * @throws IllegalArgumentException if the employeeId is blank 088 */ 089 EntityDefault getEntityDefaultFromArchiveByEmployeeId(String employeeId) throws IllegalArgumentException; 090 091 /** 092 * Saves a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} to the archive. 093 * {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} is a condensed version of {@link org.kuali.rice.kim.api.identity.entity.Entity} that contains 094 * default values of its subclasses 095 * 096 * <p> 097 * This method will return the saved EntityDefault object 098 * </p> 099 * 100 * @param entityDefault the unique principalName to retrieve the entity by. cannot be null. 101 * @return a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} or null 102 * @throws IllegalArgumentException if the entityDefault is null 103 */ 104 //TODO: this should probably return some kind of Future<EntityDefault> if we can find a way to remote that 105 void saveEntityDefaultToArchive(EntityDefault entityDefault) throws IllegalArgumentException; 106 107 /** 108 * Flushes {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} to the archive. 109 * 110 * <p> 111 * This method flushes the "saved" entities to the database 112 * </p> 113 * 114 * @return void 115 */ 116 void flushToArchive() throws IllegalArgumentException; 117 118 }