Project

General

Profile

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

    
3
import eu.dnetlib.goldoa.domain.Currency;
4
import eu.dnetlib.goldoa.domain.Eligibility;
5
import eu.dnetlib.goldoa.domain.Publication;
6
import eu.dnetlib.goldoa.domain.Request;
7
import eu.dnetlib.goldoa.service.CurrencyConverter;
8
import eu.dnetlib.goldoa.service.EligibilityManager;
9
import eu.dnetlib.goldoa.service.dao.PublicationDAO;
10
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.beans.factory.annotation.Value;
12
import org.springframework.stereotype.Component;
13

    
14
/*
15
 * Created by antleb on 3/25/15.
16
*/
17

    
18
@Component(value = "accountingEligibilityManager")
19
public class AccountingEligibilityManager implements EligibilityManager {
20
	@Autowired
21
	private PublicationDAO publicationDAO;
22
	@Autowired
23
	private CurrencyConverter currencyConverter;
24

    
25

    
26
	@Value("${goldoa.eligibility.accounting.participation.nono.message}")
27
	private String participationNoNoMessage;
28
	@Value("${goldoa.eligibility.accounting.funding.nono.message}")
29
	private String fundingRequestedNoNoMessage;
30
	@Value("${goldoa.eligibility.accounting.apc.article.max}")
31
	private float maxArticleAPC;
32
	@Value("${goldoa.eligibility.accounting.apc.article.nono.message}")
33
	private String maxArticleAPCNoNoMessage;
34
	@Value("${goldoa.eligibility.accounting.apc.monograph.max}")
35
	private float maxMonographAPC;
36
	@Value("${goldoa.eligibility.accounting.apc.monograph.nono.message}")
37
	private String maxMonographAPCNoNoMessage;
38

    
39
	@Override
40
	public Eligibility validate(Request request) {
41
		Eligibility eligibility = new Eligibility();
42

    
43
		if (request.getProjectparticipation() != null && (request.getProjectparticipation() <= 0 || request.getProjectparticipation() > 100))
44
			eligibility.merge(new Eligibility(Eligibility.Status.NONO, this.participationNoNoMessage));
45

    
46
		if (request.getFundingrequested() != null && (request.getFundingrequested() <= 0))
47
			eligibility.merge(new Eligibility(Eligibility.Status.NONO, this.fundingRequestedNoNoMessage));
48

    
49
		if (request.getPublication() != null && request.getFundingrequested() != null) {
50
			Publication publication = request.getPublication();
51
			float amount = currencyConverter.convert(request.getCurrency(), Currency.EUR, request.getFundingrequested());
52

    
53
			switch (publication.getType()) {
54
				case ARTICLE:
55
				case BOOK_CHAPTER:
56
					if (amount > maxArticleAPC)
57
						eligibility.merge(new Eligibility(Eligibility.Status.NONO, maxArticleAPCNoNoMessage));
58
					break;
59
				case MONOGRAPH:
60
					if (amount > maxMonographAPC)
61
						eligibility.merge(new Eligibility(Eligibility.Status.NONO, maxMonographAPCNoNoMessage));
62
					break;
63
			}
64
		}
65

    
66
		return eligibility;
67
	}
68

    
69
	public String getParticipationNoNoMessage() {
70
		return participationNoNoMessage;
71
	}
72

    
73
	public void setParticipationNoNoMessage(String participationNoNoMessage) {
74
		this.participationNoNoMessage = participationNoNoMessage;
75
	}
76

    
77
	public String getFundingRequestedNoNoMessage() {
78
		return fundingRequestedNoNoMessage;
79
	}
80

    
81
	public void setFundingRequestedNoNoMessage(String fundingRequestedNoNoMessage) {
82
		this.fundingRequestedNoNoMessage = fundingRequestedNoNoMessage;
83
	}
84

    
85
	public float getMaxArticleAPC() {
86
		return maxArticleAPC;
87
	}
88

    
89
	public void setMaxArticleAPC(float maxArticleAPC) {
90
		this.maxArticleAPC = maxArticleAPC;
91
	}
92

    
93
	public String getMaxArticleAPCNoNoMessage() {
94
		return maxArticleAPCNoNoMessage;
95
	}
96

    
97
	public void setMaxArticleAPCNoNoMessage(String maxArticleAPCNoNoMessage) {
98
		this.maxArticleAPCNoNoMessage = maxArticleAPCNoNoMessage;
99
	}
100

    
101
	public float getMaxMonographAPC() {
102
		return maxMonographAPC;
103
	}
104

    
105
	public void setMaxMonographAPC(float maxMonographAPC) {
106
		this.maxMonographAPC = maxMonographAPC;
107
	}
108

    
109
	public String getMaxMonographAPCNoNoMessage() {
110
		return maxMonographAPCNoNoMessage;
111
	}
112

    
113
	public void setMaxMonographAPCNoNoMessage(String maxMonographAPCNoNoMessage) {
114
		this.maxMonographAPCNoNoMessage = maxMonographAPCNoNoMessage;
115
	}
116
}
(1-1/5)