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 java.io.Serializable;
7
import javax.persistence.*;
8

    
9
import java.util.ArrayList;
10
import java.util.Date;
11
import java.util.List;
12
import java.sql.Timestamp;
13

    
14
@Entity
15
public class Budget implements Serializable {
16
	private static final long serialVersionUID = 1L;
17

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

    
30
		private String value;
31
		private int code;
32

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

    
38
		public String getValue() {
39
			return value;
40
		}
41

    
42
		public int getCode() {
43
			return code;
44
		}
45

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

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

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

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

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

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

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

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

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

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

    
102
	@OneToOne
103
    @JoinColumn(name = "organization")
104
	private Organization organization;
105

    
106
	@OneToOne
107
    @JoinColumn(name = "publisher")
108
	private Publisher publisher;
109
	
110
	@OneToOne
111
    @JoinColumn(name = "\"user\"")
112
	private User user;
113

    
114
	@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
115
	@JoinTable(name = "budget_comment",  joinColumns = {
116
			@JoinColumn(name = "budget", nullable = false, updatable = false)},
117
			inverseJoinColumns = { @JoinColumn(name = "comment",
118
					nullable = false, updatable = false) })
119
	private List<Comment> comments = new ArrayList<>();
120

    
121

    
122
	@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
123
	@JoinTable(name = "organization_budget",  joinColumns = {
124
			@JoinColumn(name = "organization", nullable = false, updatable = false)},
125
			inverseJoinColumns = { @JoinColumn(name = "budget",
126
					nullable = false, updatable = false) })
127
	private List<Organization> organizations = new ArrayList<>();
128
	
129
	public Budget() {}
130
	
131
	public User getUser() {
132
		return user;
133
	}
134

    
135
	public void setUser(User user) {
136
		this.user = user;
137
	}
138

    
139
	public String getId() {
140
		return this.id;
141
	}
142

    
143
	public void setId(String id) {
144
		this.id = id;
145
	}
146

    
147
	public Float getAmountGranted() {
148
		return this.amountGranted;
149
	}
150

    
151
	public void setAmountGranted(Float amountGranted) {
152
		this.amountGranted = amountGranted;
153
	}
154

    
155
	public Float getAmountRequested() {
156
		return this.amountRequested;
157
	}
158

    
159
	public void setAmountRequested(Float amountRequested) {
160
		this.amountRequested = amountRequested;
161
	}
162

    
163
	public BankAccount getBankAccount() {
164
		return bankAccount;
165
	}
166

    
167
	public void setBankAccount(BankAccount bankAccount) {
168
		this.bankAccount = bankAccount;
169
	}
170

    
171
	public BankTransferReceipt getBankTransferReceipt() {
172
		return bankTransferReceipt;
173
	}
174

    
175
	public void setBankTransferReceipt(BankTransferReceipt bankTransferReceipt) {
176
		this.bankTransferReceipt = bankTransferReceipt;
177
	}
178

    
179
	public BudgetContract getBeneficiarysignedcontract() {
180
		return this.beneficiarysignedcontract;
181
	}
182

    
183
	public void setBeneficiarysignedcontract(BudgetContract beneficiarysignedcontract) {
184
		this.beneficiarysignedcontract = beneficiarysignedcontract;
185
	}
186

    
187
	public Currency getCurrency() {
188
		return this.currency;
189
	}
190

    
191
	public void setCurrency(Currency currency) {
192
		this.currency = currency;
193
	}
194

    
195
	public Date getDate() {
196
		return this.date;
197
	}
198

    
199
	public void setDate(Date date) {
200
		this.date = date;
201
	}
202

    
203
	public Timestamp getDatePaid() {
204
		return this.datePaid;
205
	}
206

    
207
	public void setDatePaid(Timestamp datePaid) {
208
		this.datePaid = datePaid;
209
	}
210

    
211
	public Date getEnddate() {
212
		return this.enddate;
213
	}
214

    
215
	public void setEnddate(Date enddate) {
216
		this.enddate = enddate;
217
	}
218

    
219
	public Invoice getInvoice() {
220
		return this.invoice;
221
	}
222

    
223
	public void setInvoice(Invoice invoice) {
224
		this.invoice = invoice;
225
	}
226

    
227
	public Organization getOrganization() {
228
		return this.organization;
229
	}
230

    
231
	public void setOrganization(Organization organization) {
232
		this.organization = organization;
233
	}
234

    
235
	public Float getOtherCost() {
236
		return this.otherCost;
237
	}
238

    
239
	public void setOtherCost(Float otherCost) {
240
		this.otherCost = otherCost;
241
	}
242

    
243
	public Publisher getPublisher() {
244
		return this.publisher;
245
	}
246

    
247
	public void setPublisher(Publisher publisher) {
248
		this.publisher = publisher;
249
	}
250

    
251
	public Float getRemaining() {
252
		return this.remaining;
253
	}
254

    
255
	public void setRemaining(Float remaining) {
256
		this.remaining = remaining;
257
	}
258

    
259
	public BudgetContract getSignedcontract() {
260
		return this.signedcontract;
261
	}
262

    
263
	public void setSignedcontract(BudgetContract signedcontract) {
264
		this.signedcontract = signedcontract;
265
	}
266

    
267
	public Date getStartdate() {
268
		return this.startdate;
269
	}
270

    
271
	public void setStartdate(Date startdate) {
272
		this.startdate = startdate;
273
	}
274

    
275
	public Status getStatus() {
276
		return status;
277
	}
278

    
279
	public void setStatus(Status status) {
280
		this.status = status;
281
	}
282

    
283
	public Float getTransferCost() {
284
		return this.transferCost;
285
	}
286

    
287
	public void setTransferCost(Float transferCost) {
288
		this.transferCost = transferCost;
289
	}
290

    
291
	public List<Organization> getOrganizations() {
292
		return organizations;
293
	}
294

    
295
	public void setOrganizations(List<Organization> organizations) {
296
		this.organizations = organizations;
297
	}
298

    
299
	public List<Comment> getComments() {
300
		return comments;
301
	}
302

    
303
	public void setComments(List<Comment> comments) {
304
		this.comments = comments;
305
	}
306

    
307
	public Budgetfile getInitialcontractfile() {
308
		return initialcontractfile;
309
	}
310

    
311
	public void setInitialcontractfile(Budgetfile initialcontractfile) {
312
		this.initialcontractfile = initialcontractfile;
313
	}
314

    
315
}
(6-6/54)