Project

General

Profile

1 34291 michele.ar
package eu.dnetlib.enabling.is.hib.objects;
2
3 34408 michele.ar
import java.util.Map;
4
5 34291 michele.ar
import javax.persistence.Column;
6
import javax.persistence.Entity;
7
import javax.persistence.EnumType;
8
import javax.persistence.Enumerated;
9
import javax.persistence.Id;
10
import javax.persistence.JoinColumn;
11
import javax.persistence.ManyToOne;
12
import javax.persistence.Table;
13
14
import org.hibernate.Session;
15
16 34408 michele.ar
import com.google.gson.Gson;
17
import com.google.gson.reflect.TypeToken;
18
19 34675 michele.ar
import eu.dnetlib.enabling.is.rmi.objects.Operation;
20
import eu.dnetlib.enabling.is.rmi.objects.Subcription;
21 34291 michele.ar
22
@Entity(name = "subscriptions")
23
@Table(name = "subscriptions")
24
public class HibSubscription extends HibDnetObject {
25
26
	@Id
27
	@Column(name = "id")
28
	private String id;
29
30
	@Enumerated(EnumType.STRING)
31
	@Column(name = "operation", nullable = false)
32
	private Operation operation;
33
34
	@Column(name = "tbl", nullable = false)
35
	private String table;
36
37
	@Column(name = "condition")
38
	private String condition;
39
40
	@ManyToOne
41
	@JoinColumn(name = "subscriber", nullable = false)
42
	private HibService subscriber;
43
44
	public HibSubscription() {}
45
46
	public HibSubscription(final String id, final Operation operation, final String table, final String condition,
47
			final HibService subscriber) {
48
		this.id = id;
49
		this.operation = operation;
50
		this.table = table;
51
		this.condition = condition;
52
		this.subscriber = subscriber;
53
	}
54
55
	public String getId() {
56
		return id;
57
	}
58
59
	public void setId(final String id) {
60
		this.id = id;
61
	}
62
63
	public Operation getOperation() {
64
		return operation;
65
	}
66
67
	public void setOperation(final Operation operation) {
68
		this.operation = operation;
69
	}
70
71
	public String getTable() {
72
		return table;
73
	}
74
75
	public void setTable(final String table) {
76
		this.table = table;
77
	}
78
79
	public String getCondition() {
80
		return condition;
81
	}
82
83
	public void setCondition(final String condition) {
84
		this.condition = condition;
85
	}
86
87
	public HibService getSubscriber() {
88
		return subscriber;
89
	}
90
91
	public void setSubscriber(final HibService subscriber) {
92
		this.subscriber = subscriber;
93
	}
94
95
	public Subcription asDnetSubscription() {
96 34408 michele.ar
		final Gson gson = new Gson();
97
		final Map<String, Object> map = gson.fromJson(condition, new TypeToken<Map<String, Object>>() {}.getType());
98 34788 michele.ar
		return new Subcription(id, subscriber.getId(), operation, table, map);
99 34291 michele.ar
	}
100
101
	@Override
102
	public void delete(final Session session) {
103
		subscriber.getSubscriptions().remove(this);
104
		subscriber.save(session);
105
		super.delete(session);
106
	}
107
108 34789 michele.ar
	@Override
109
	public int hashCode() {
110
		return id.hashCode();
111
	}
112 34291 michele.ar
}