Project

General

Profile

1
package eu.dnetlib.goldoa.service.eligibility;
2

    
3
import eu.dnetlib.goldoa.domain.Eligibility;
4
import eu.dnetlib.goldoa.domain.Request;
5
import eu.dnetlib.goldoa.service.EligibilityManager;
6
import org.apache.log4j.Logger;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.context.annotation.Primary;
9
import org.springframework.stereotype.Component;
10

    
11
import java.util.ArrayList;
12
import java.util.List;
13

    
14
/*
15
 * Created by antleb on 3/9/15.
16
*/
17
@Component(value = "eligibilityManager")
18
@Primary
19
public class ChainEligibilityManager implements EligibilityManager {
20

    
21
	@Autowired
22
	private AccountingEligibilityManager accountingEligibilityManager;
23
	@Autowired
24
	private OrganizationEligibilityManager organizationEligibilityManager;
25
	@Autowired
26
	private ProjectEligibiliyManager projectEligibiliyManager;
27

    
28
	/*public ChainEligibilityManager() {
29
		this.managers = Arrays.asList(accountingEligibilityManager,organizationEligibilityManager,projectEligibiliyManager);
30
	}*/
31
	private List<EligibilityManager> managers = new ArrayList<>();
32
	private static Logger logger = Logger.getLogger(ChainEligibilityManager.class);
33

    
34

    
35

    
36
	@Override
37
	public Eligibility validate(Request request) {
38
		try {
39

    
40
			Eligibility eligibility = new Eligibility(Eligibility.Status.OK);
41

    
42
			Request.RequestStatus status = request.getStatus();
43

    
44
			switch (status) {
45
				case CONDITIONALLY_APPROVED:
46
				case APPROVED:
47
				case ACCOUNTING_PROCESSING:
48
				case ACCOUNTING_ON_HOLD:
49
				case ACCOUNTING_DENIED:
50
				case ACCOUNTING_PAID:
51
					return eligibility;
52
				default:
53
					for (EligibilityManager manager : managers) {
54
						eligibility.merge(manager.validate(request));
55
					}
56

    
57
					return eligibility;
58
			}
59
		} catch (Exception e) {
60
			e.printStackTrace();
61

    
62
			return new Eligibility(Eligibility.Status.IFFY, "There was an error checking the eligibility of the request.");
63
		}
64
	}
65

    
66
	public List<EligibilityManager> getManagers() {
67
		return managers;
68
	}
69

    
70
	@Autowired
71
	public void setManagers(List<EligibilityManager> managers) {
72
		this.managers = managers;
73
	}
74
}
(2-2/5)