Project

General

Profile

1
package eu.dnetlib.goldoa.domain;
2

    
3
import com.fasterxml.jackson.annotation.JsonBackReference;
4
import com.google.gwt.user.client.rpc.IsSerializable;
5

    
6
import javax.persistence.*;
7
import java.sql.Timestamp;
8
import java.util.ArrayList;
9
import java.util.Date;
10
import java.util.List;
11

    
12
@Entity
13
public class Budget implements IsSerializable {
14
	private static final long serialVersionUID = 1L;
15

    
16
	public enum Status implements IsSerializable {
17
		INCOMPLETE("Incomplete", 1),
18
		SUBMITTED("Submitted", 2),
19
		INITIALLY_APPROVED("Initially approved", 4),
20
		APPROVED("Approved", 8),
21
		REJECTED("Rejected", 16),
22
		ACCOUNTING_PROCESSING("Processing payment", 32),
23
		ACCOUNTING_ONHOLD("Processing payment", 64),
24
		ACCOUNTING_DENIED("Payment denied", 128),
25
		ACCOUNTING_PAID("Paid", 256),
26
		EXPIRED("Expired", 512);
27

    
28
		private String value;
29
		private int code;
30

    
31
		Status(String value, int code) {
32
			this.value = value;
33
			this.code = code;
34
		}
35

    
36
		public String getValue() {
37
			return value;
38
		}
39

    
40
		public int getCode() {
41
			return code;
42
		}
43

    
44
		public static Status forStatus(int status) {
45
			if (status == 1)
46
				return INCOMPLETE;
47
			else
48
				return Status.values()[((int) Math.round(Math.log(status)/Math.log(2)))];
49
		}
50
	}
51

    
52
	@Id
53
	@Column(columnDefinition = "text")
54
	private String id;
55
	private Float amountGranted;
56
	private Float amountRequested;
57
	@Temporal(TemporalType.DATE)
58
	private Date date;
59
	private Timestamp datePaid;
60
	@Temporal(TemporalType.DATE)
61
	private Date enddate;
62
	private Float otherCost;
63
	private Float remaining;
64
	private Float transferCost;
65
	@Temporal(TemporalType.DATE)
66
	private Date startdate;
67

    
68
	@OneToOne(cascade = CascadeType.ALL)
69
	@JoinColumn(name="bankaccount")
70
	private BankAccount bankAccount;
71

    
72
	@OneToOne(cascade = CascadeType.ALL)
73
	@JoinColumn(name="bankreceipt")
74
	private BankTransferReceipt bankTransferReceipt;
75

    
76
	@OneToOne(cascade = CascadeType.ALL)
77
	@JoinColumn(name="beneficiarysignedcontract")
78
	private BudgetContract beneficiarysignedcontract;
79

    
80
	@OneToOne( cascade = CascadeType.ALL)
81
	@JoinColumn(name="signedcontract")
82
	private BudgetContract signedcontract;
83

    
84
	@OneToOne(cascade = CascadeType.ALL)
85
	@JoinColumn(name="initialcontractfile")
86
	private Budgetfile initialcontractfile;
87

    
88
	@Basic
89
	@Convert( converter=CurrencyConverter.class )
90
	private Currency currency;
91

    
92
	@Basic
93
	@Convert( converter=BudgetStatusConverter.class )
94
	private Status status;
95

    
96
	@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
97
    @JoinColumn(name = "invoice")
98
	private Invoice invoice;
99

    
100
	@OneToOne
101
    @JoinColumn(name = "publisher")
102
	private Publisher publisher;
103
	
104
	@OneToOne
105
    @JoinColumn(name = "\"user\"")
106
	private User user;
107

    
108
	@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
109
	@JoinTable(name = "budget_comment",  joinColumns = {
110
			@JoinColumn(name = "budget", nullable = false, updatable = false)},
111
			inverseJoinColumns = { @JoinColumn(name = "comment",
112
					nullable = false, updatable = false) })
113
	private List<Comment> comments = new ArrayList<>();
114

    
115
	@ManyToMany(fetch = FetchType.LAZY)
116
	@JoinTable(name = "organization_budget",  joinColumns = {
117
			@JoinColumn(name = "organization", nullable = false, updatable = false)},
118
			inverseJoinColumns = { @JoinColumn(name = "budget",
119
					nullable = false, updatable = false) })
120
	private List<Organization> organizations = new ArrayList<>();
121

    
122
	@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
123
	@JoinTable(name = "publisher_budget",  joinColumns = {
124
			@JoinColumn(name = "budget", nullable = false, updatable = false)},
125
			inverseJoinColumns = { @JoinColumn(name = "publisher",
126
					nullable = false, updatable = false) })
127
	@JsonBackReference(value = "publishers")
128
	private List<Publisher> publishers = new ArrayList<>();
129

    
130

    
131
	public Budget() {}
132
	
133
	public User getUser() {
134
		return user;
135
	}
136

    
137
	public void setUser(User user) {
138
		this.user = user;
139
	}
140

    
141
	public String getId() {
142
		return this.id;
143
	}
144

    
145
	public void setId(String id) {
146
		this.id = id;
147
	}
148

    
149
	public Float getAmountGranted() {
150
		return this.amountGranted;
151
	}
152

    
153
	public void setAmountGranted(Float amountGranted) {
154
		this.amountGranted = amountGranted;
155
	}
156

    
157
	public Float getAmountRequested() {
158
		return this.amountRequested;
159
	}
160

    
161
	public void setAmountRequested(Float amountRequested) {
162
		this.amountRequested = amountRequested;
163
	}
164

    
165
	public BankAccount getBankAccount() {
166
		return bankAccount;
167
	}
168

    
169
	public void setBankAccount(BankAccount bankAccount) {
170
		this.bankAccount = bankAccount;
171
	}
172

    
173
	public BankTransferReceipt getBankTransferReceipt() {
174
		return bankTransferReceipt;
175
	}
176

    
177
	public void setBankTransferReceipt(BankTransferReceipt bankTransferReceipt) {
178
		this.bankTransferReceipt = bankTransferReceipt;
179
	}
180

    
181
	public BudgetContract getBeneficiarysignedcontract() {
182
		return this.beneficiarysignedcontract;
183
	}
184

    
185
	public void setBeneficiarysignedcontract(BudgetContract beneficiarysignedcontract) {
186
		this.beneficiarysignedcontract = beneficiarysignedcontract;
187
	}
188

    
189
	public Currency getCurrency() {
190
		return this.currency;
191
	}
192

    
193
	public void setCurrency(Currency currency) {
194
		this.currency = currency;
195
	}
196

    
197
	public Date getDate() {
198
		return this.date;
199
	}
200

    
201
	public void setDate(Date date) {
202
		this.date = date;
203
	}
204

    
205
	public Timestamp getDatePaid() {
206
		return this.datePaid;
207
	}
208

    
209
	public void setDatePaid(Timestamp datePaid) {
210
		this.datePaid = datePaid;
211
	}
212

    
213
	public Date getEnddate() {
214
		return this.enddate;
215
	}
216

    
217
	public void setEnddate(Date enddate) {
218
		this.enddate = enddate;
219
	}
220

    
221
	public Invoice getInvoice() {
222
		return this.invoice;
223
	}
224

    
225
	public void setInvoice(Invoice invoice) {
226
		this.invoice = invoice;
227
	}
228

    
229
	public Float getOtherCost() {
230
		return this.otherCost;
231
	}
232

    
233
	public void setOtherCost(Float otherCost) {
234
		this.otherCost = otherCost;
235
	}
236

    
237
	public Publisher getPublisher() {
238
		return this.publisher;
239
	}
240

    
241
	public void setPublisher(Publisher publisher) {
242
		this.publisher = publisher;
243
	}
244

    
245
	public Float getRemaining() {
246
		return this.remaining;
247
	}
248

    
249
	public void setRemaining(Float remaining) {
250
		this.remaining = remaining;
251
	}
252

    
253
	public BudgetContract getSignedcontract() {
254
		return this.signedcontract;
255
	}
256

    
257
	public void setSignedcontract(BudgetContract signedcontract) {
258
		this.signedcontract = signedcontract;
259
	}
260

    
261
	public Date getStartdate() {
262
		return this.startdate;
263
	}
264

    
265
	public void setStartdate(Date startdate) {
266
		this.startdate = startdate;
267
	}
268

    
269
	public Status getStatus() {
270
		return status;
271
	}
272

    
273
	public void setStatus(Status status) {
274
		this.status = status;
275
	}
276

    
277
	public Float getTransferCost() {
278
		return this.transferCost;
279
	}
280

    
281
	public void setTransferCost(Float transferCost) {
282
		this.transferCost = transferCost;
283
	}
284

    
285
	public List<Organization> getOrganizations() {
286
		return organizations;
287
	}
288

    
289
	public void setOrganizations(List<Organization> organizations) {
290
		this.organizations = organizations;
291
	}
292

    
293
	public List<Comment> getComments() {
294
		return comments;
295
	}
296

    
297
	public void setComments(List<Comment> comments) {
298
		this.comments = comments;
299
	}
300

    
301
	public Budgetfile getInitialcontractfile() {
302
		return initialcontractfile;
303
	}
304

    
305
	public void setInitialcontractfile(Budgetfile initialcontractfile) {
306
		this.initialcontractfile = initialcontractfile;
307
	}
308

    
309
}
(6-6/52)