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.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.context.annotation.Primary;
8
import org.springframework.stereotype.Component;
9

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

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

    
20
	private List<EligibilityManager> managers = new ArrayList<>();
21

    
22

    
23
	@Override
24
	public Eligibility validate(Request request) {
25
		try {
26

    
27
			Eligibility eligibility = new Eligibility(Eligibility.Status.OK);
28

    
29
			Request.RequestStatus status = request.getStatus();
30

    
31
			switch (status) {
32
				case CONDITIONALLY_APPROVED:
33
				case APPROVED:
34
				case ACCOUNTING_PROCESSING:
35
				case ACCOUNTING_ON_HOLD:
36
				case ACCOUNTING_DENIED:
37
				case ACCOUNTING_PAID:
38
					return eligibility;
39
				default:
40
					for (EligibilityManager manager : managers)
41
						eligibility.merge(manager.validate(request));
42

    
43
					return eligibility;
44
			}
45
		} catch (Exception e) {
46
			e.printStackTrace();
47

    
48
			return new Eligibility(Eligibility.Status.IFFY, "There was an error checking the eligibility of the request.");
49
		}
50
	}
51

    
52
	public List<EligibilityManager> getManagers() {
53
		return managers;
54
	}
55

    
56
	@Autowired
57
	public void setManagers(List<EligibilityManager> managers) {
58
		this.managers = managers;
59
	}
60
}
(2-2/5)