1 package org.kuali.coeus.s2sgen.impl.person;
2
3 import org.kuali.coeus.propdev.api.core.ProposalDevelopmentDocumentContract;
4 import org.kuali.coeus.propdev.api.person.ProposalPersonContract;
5
6 import org.kuali.coeus.s2sgen.impl.citizenship.CitizenshipType;
7
8 import java.util.List;
9
10 public interface S2SProposalPersonService {
11
12 /**
13 *
14 * This method limits the number of key persons to n, returns list of key
15 * persons, first n in case firstN is true, or all other than first n, in
16 * case of firstN being false
17 *
18 * @param keyPersons
19 * list of {@link org.kuali.coeus.propdev.api.person.ProposalPersonContract}
20 * @param firstN
21 * value that determines whether the returned list should contain
22 * first n persons or the rest of persons
23 * @param n
24 * number of key persons that are considered as not extra persons
25 * @return list of {@link org.kuali.coeus.propdev.api.person.ProposalPersonContract}
26 */
27 List<ProposalPersonContract> getNKeyPersons(List<? extends ProposalPersonContract> keyPersons,
28 boolean firstN, int n);
29
30 /**
31 *
32 * This method is to get PrincipalInvestigator from person list
33 *
34 * @param pdDoc
35 * Proposal development document.
36 * @return ProposalPerson PrincipalInvestigator for the proposal.
37 */
38 ProposalPersonContract getPrincipalInvestigator(
39 ProposalDevelopmentDocumentContract pdDoc);
40
41 /**
42 * Finds all the co-investigators associated with the provided pdDoc.
43 * @param pdDoc
44 * @return List of Co-Investigators {@link org.kuali.coeus.propdev.api.person.ProposalPersonContract}.
45 */
46
47 List<ProposalPersonContract> getCoInvestigators(ProposalDevelopmentDocumentContract pdDoc);
48
49 /**
50 * Finds all the key Person associated with the provided pdDoc.
51 * @param pdDoc
52 * @return List of Key Persons {@link org.kuali.coeus.propdev.api.person.ProposalPersonContract}.
53 */
54
55 List<ProposalPersonContract> getKeyPersons (ProposalDevelopmentDocumentContract pdDoc);
56
57 /**
58 *
59 * This method is used to get the citizenship from either warehouse or from person custom element
60 * @param proposalPerson
61 * @return
62 */
63 CitizenshipType getCitizenship(ProposalPersonContract proposalPerson);
64 }