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.kew.identity.service;
017    
018    import org.kuali.rice.core.api.exception.RiceIllegalArgumentException;
019    import org.kuali.rice.kew.actionrequest.Recipient;
020    import org.kuali.rice.kew.api.user.UserId;
021    import org.kuali.rice.kew.workgroup.GroupId;
022    import org.kuali.rice.kim.api.identity.Person;
023    import org.kuali.rice.kim.api.identity.principal.Principal;
024    import org.kuali.rice.kim.api.group.Group;
025    
026    /**
027     * A simple helper service in KEW for interacting with the KIM identity
028     * management services.  Some of the methods on here exist solely for
029     * the purpose of assisting with the piece-by-piece migration of
030     * KEW to use the KIM services.
031     *
032     * @author Kuali Rice Team (rice.collab@kuali.org)
033     */
034    public interface IdentityHelperService {
035    
036            public String getIdForPrincipalName(String principalName);
037    
038            public String getIdForGroupName(String namespace, String groupName);
039    
040            /**
041             * Returns the KimPrincipal for the given principal id.  Throws an exception
042             * if the principal id cannot be resolved to a principal.
043             * 
044             * @throws RiceIllegalArgumentException if the principal id cannot be resolved to a principal.
045             */
046            public Principal getPrincipal(String principalId);
047    
048            /**
049             * Returns the KimPrincipal for the given principal name.  Throws an exception
050             * if the principal name cannot be resolved to a principal.
051             * 
052             * @throws RiceIllegalArgumentException if the principal name cannot be resolved to a principal
053             */
054            public Principal getPrincipalByPrincipalName(String principalName);
055    
056            /**
057             * Returns the Person for the given principal id.  Throws an exception
058             * if the principal id cannot be resolved to a person.
059             * 
060             * @throws RiceIllegalArgumentException if the principal id cannot be resolved to a person.
061             */
062            public Person getPerson(String principalId);
063    
064            /**
065             * Returns the Person for the given principal name.  Throws an exception
066             * if the principal name cannot be resolved to a person.
067             * 
068             * @throws RiceIllegalArgumentException if the principal name cannot be resolved to a person.
069             */
070            public Person getPersonByPrincipalName(String principalName);
071    
072            /**
073             * Returns the Person for the given employee id.  Throws an exception
074             * if the principal name cannot be resolved to a person.
075             * 
076             * @throws RiceIllegalArgumentException if the principal name cannot be resolved to a person.
077             */
078            public Person getPersonByEmployeeId(String employeeId);
079    
080            /**
081             * Checks that the given principalId is valid.  Throws a RiceRuntimeException if it is not.
082             * 
083             * @throws RiceIllegalArgumentException if the given principalId is valid
084             */
085            public void validatePrincipalId(String principalId);
086    
087            /**
088             * Returns the principal for the given UserId.
089             * 
090             * @throws RiceIllegalArgumentException if the given UserId does not resolve to a valid principal
091             */
092            public Principal getPrincipal(UserId userId);
093    
094            /**
095             * Returns the Group for the given groupId.  Throws an exception
096             * if the groupId cannot be resolved to a group.
097             * 
098             * @throws RiceIllegalArgumentException if the groupId cannot be resolved to a group.
099             */
100            public Group getGroup(String groupId);
101    
102            /**
103             * Returns the Group for the given GroupId.  Throws an exception
104             * if the groupId cannot be resolved to a group.
105             * 
106             * @throws RiceIllegalArgumentException if the GroupId cannot be resolved to a group.
107             */
108            public Group getGroup(GroupId groupId);
109    
110            /**
111             * Returns the Group for the given namespaceCode and name.  Throws an exception
112             * if the namespaceCode and name cannot be resolved to a group.
113             * 
114             * @throws RiceIllegalArgumentException if the namespaceCode and name cannot be resolved to a group.
115             */
116            public Group getGroupByName(String namespaceCode, String name);
117    
118            /**
119             * Returns the Recipient for the given principalId.  Throws an exception
120             * if the principalId cannot be resolved to a recipient.
121             * 
122             * @throws RiceIllegalArgumentException if the principalId cannot be resolved to a recipient
123             */
124            public Recipient getPrincipalRecipient(String principalId);
125    
126            /**
127             * Returns the principal for the "system user".  This is a user
128             * that can be used in the cases where an actual user cannot be
129             * determined.
130             */
131            public Principal getSystemPrincipal();
132    }