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

    
103
	@OneToOne
104
    @JoinColumn(name = "publisher")
105
	private Publisher publisher;
106
	
107
	@OneToOne
108
    @JoinColumn(name = "\"user\"")
109
	private User user;
110

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

    
118

    
119
	@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
120
	@JoinTable(name = "organization_budget",  joinColumns = {
121
			@JoinColumn(name = "organization", nullable = false, updatable = false)},
122
			inverseJoinColumns = { @JoinColumn(name = "budget",
123
					nullable = false, updatable = false) })
124
	private List<Organization> organizations = new ArrayList<>();
125

    
126

    
127
	public Budget() {}
128
	
129
	public User getUser() {
130
		return user;
131
	}
132

    
133
	public void setUser(User user) {
134
		this.user = user;
135
	}
136

    
137
	public String getId() {
138
		return this.id;
139
	}
140

    
141
	public void setId(String id) {
142
		this.id = id;
143
	}
144

    
145
	public Float getAmountGranted() {
146
		return this.amountGranted;
147
	}
148

    
149
	public void setAmountGranted(Float amountGranted) {
150
		this.amountGranted = amountGranted;
151
	}
152

    
153
	public Float getAmountRequested() {
154
		return this.amountRequested;
155
	}
156

    
157
	public void setAmountRequested(Float amountRequested) {
158
		this.amountRequested = amountRequested;
159
	}
160

    
161
	public BankAccount getBankAccount() {
162
		return bankAccount;
163
	}
164

    
165
	public void setBankAccount(BankAccount bankAccount) {
166
		this.bankAccount = bankAccount;
167
	}
168

    
169
	public BankTransferReceipt getBankTransferReceipt() {
170
		return bankTransferReceipt;
171
	}
172

    
173
	public void setBankTransferReceipt(BankTransferReceipt bankTransferReceipt) {
174
		this.bankTransferReceipt = bankTransferReceipt;
175
	}
176

    
177
	public BudgetContract getBeneficiarysignedcontract() {
178
		return this.beneficiarysignedcontract;
179
	}
180

    
181
	public void setBeneficiarysignedcontract(BudgetContract beneficiarysignedcontract) {
182
		this.beneficiarysignedcontract = beneficiarysignedcontract;
183
	}
184

    
185
	public Currency getCurrency() {
186
		return this.currency;
187
	}
188

    
189
	public void setCurrency(Currency currency) {
190
		this.currency = currency;
191
	}
192

    
193
	public Date getDate() {
194
		return this.date;
195
	}
196

    
197
	public void setDate(Date date) {
198
		this.date = date;
199
	}
200

    
201
	public Timestamp getDatePaid() {
202
		return this.datePaid;
203
	}
204

    
205
	public void setDatePaid(Timestamp datePaid) {
206
		this.datePaid = datePaid;
207
	}
208

    
209
	public Date getEnddate() {
210
		return this.enddate;
211
	}
212

    
213
	public void setEnddate(Date enddate) {
214
		this.enddate = enddate;
215
	}
216

    
217
	public Invoice getInvoice() {
218
		return this.invoice;
219
	}
220

    
221
	public void setInvoice(Invoice invoice) {
222
		this.invoice = invoice;
223
	}
224

    
225
	public Float getOtherCost() {
226
		return this.otherCost;
227
	}
228

    
229
	public void setOtherCost(Float otherCost) {
230
		this.otherCost = otherCost;
231
	}
232

    
233
	public Publisher getPublisher() {
234
		return this.publisher;
235
	}
236

    
237
	public void setPublisher(Publisher publisher) {
238
		this.publisher = publisher;
239
	}
240

    
241
	public Float getRemaining() {
242
		return this.remaining;
243
	}
244

    
245
	public void setRemaining(Float remaining) {
246
		this.remaining = remaining;
247
	}
248

    
249
	public BudgetContract getSignedcontract() {
250
		return this.signedcontract;
251
	}
252

    
253
	public void setSignedcontract(BudgetContract signedcontract) {
254
		this.signedcontract = signedcontract;
255
	}
256

    
257
	public Date getStartdate() {
258
		return this.startdate;
259
	}
260

    
261
	public void setStartdate(Date startdate) {
262
		this.startdate = startdate;
263
	}
264

    
265
	public Status getStatus() {
266
		return status;
267
	}
268

    
269
	public void setStatus(Status status) {
270
		this.status = status;
271
	}
272

    
273
	public Float getTransferCost() {
274
		return this.transferCost;
275
	}
276

    
277
	public void setTransferCost(Float transferCost) {
278
		this.transferCost = transferCost;
279
	}
280

    
281
	public List<Organization> getOrganizations() {
282
		return organizations;
283
	}
284

    
285
	public void setOrganizations(List<Organization> organizations) {
286
		this.organizations = organizations;
287
	}
288

    
289
	public List<Comment> getComments() {
290
		return comments;
291
	}
292

    
293
	public void setComments(List<Comment> comments) {
294
		this.comments = comments;
295
	}
296

    
297
	public Budgetfile getInitialcontractfile() {
298
		return initialcontractfile;
299
	}
300

    
301
	public void setInitialcontractfile(Budgetfile initialcontractfile) {
302
		this.initialcontractfile = initialcontractfile;
303
	}
304

    
305
}
(6-6/53)