Project

General

Profile

1
package eu.dnetlib.enabling.is.hib.utils;
2

    
3
import java.util.Map.Entry;
4

    
5
import org.apache.commons.lang.StringUtils;
6
import org.springframework.beans.factory.annotation.Required;
7

    
8
import com.google.gson.Gson;
9

    
10
import eu.dnetlib.enabling.is.dao.DnetSimpleDao;
11
import eu.dnetlib.enabling.is.dao.DnetSimpleDaoFactory;
12
import eu.dnetlib.enabling.is.hib.objects.HibBlackboardMessage;
13
import eu.dnetlib.enabling.is.hib.objects.HibDatastructure;
14
import eu.dnetlib.enabling.is.hib.objects.HibDnetResourceProperty;
15
import eu.dnetlib.enabling.is.hib.objects.HibResourceType;
16
import eu.dnetlib.enabling.is.hib.objects.HibService;
17
import eu.dnetlib.enabling.is.hib.objects.HibServiceProtocol;
18
import eu.dnetlib.enabling.is.hib.objects.HibServiceProtocolId;
19
import eu.dnetlib.enabling.is.hib.objects.HibSubscription;
20
import eu.dnetlib.rmi.objects.is.BlackboardMessageContainer;
21
import eu.dnetlib.rmi.objects.is.DnetDataStructure;
22
import eu.dnetlib.rmi.objects.is.DnetResourceFormat;
23
import eu.dnetlib.rmi.objects.is.DnetResourceKind;
24
import eu.dnetlib.rmi.objects.is.DnetResourceType;
25
import eu.dnetlib.rmi.objects.is.DnetService;
26
import eu.dnetlib.rmi.objects.is.Subscription;
27
import eu.dnetlib.rmi.soap.exceptions.InformationServiceException;
28

    
29
public class HibObjectHelper {
30

    
31
	private DnetSimpleDaoFactory daoFactory;
32

    
33
	public HibService createHibService(final DnetService service) throws InformationServiceException {
34

    
35
		final HibService hib = new HibService(service.getId(), service.getName(), service.isValid());
36

    
37
		for (Entry<String, String> e : service.getProtocols().entrySet()) {
38
			hib.getProtocols().add(new HibServiceProtocol(new HibServiceProtocolId(hib, e.getKey()), e.getValue()));
39
		}
40
		for (Entry<String, String> e : service.getProperties().entrySet()) {
41
			if (e.getValue() != null) {
42
				hib.getProperties().add(new HibDnetResourceProperty(hib, e.getKey(), e.getValue()));
43
			}
44
		}
45
		for (BlackboardMessageContainer b : service.getBlackboard()) {
46
			hib.getBlackboard().add(new HibBlackboardMessage(hib, b));
47
		}
48
		daoFactory.getDao(HibService.class).save(hib);
49

    
50
		return hib;
51
	}
52

    
53
	public HibDatastructure createHibDnetDatastructure(final DnetDataStructure ds) throws InformationServiceException {
54
		final HibResourceType type = daoFactory.getDao(HibResourceType.class).find(ds.getType());
55
		if (type == null) { throw new InformationServiceException("Resource type not registered: " + ds.getType()); }
56

    
57
		final HibDatastructure hib = new HibDatastructure();
58
		hib.setId(ds.getId());
59
		hib.setCode(ds.getCode());
60
		hib.setName(ds.getName());
61
		hib.setDescription(ds.getDescription());
62
		hib.setType(type);
63
		hib.setContent(ds.getContent());
64
		hib.setDate(ds.getDate());
65
		hib.setValid(ds.isValid());
66

    
67
		for (Entry<String, String> e : ds.getProperties().entrySet()) {
68
			if (e.getValue() != null) {
69
				System.out.println(" **************** K = " + e.getKey());
70
				hib.getProperties().add(new HibDnetResourceProperty(hib, e.getKey(), e.getValue()));
71
			}
72
		}
73

    
74
		if (StringUtils.isNotBlank(ds.getServiceId())) {
75
			final HibService service = daoFactory.getDao(HibService.class).find(ds.getServiceId());
76
			if (service != null) {
77
				hib.setService(service);
78
			} else {
79
				throw new InformationServiceException("Missing service: " + ds.getServiceId());
80
			}
81
		}
82

    
83
		daoFactory.getDao(HibDatastructure.class).save(hib);
84

    
85
		return hib;
86
	}
87

    
88
	public HibResourceType createHibDnetResourceType(final DnetResourceType type) throws InformationServiceException {
89
		return createHibResourceType(type.getType(), type.getKind(), type.getFormat());
90
	}
91

    
92
	public void createHibBlackbooardMessage(final String serviceId, final BlackboardMessageContainer message) throws InformationServiceException {
93
		final HibService service = daoFactory.getDao(HibService.class).find(serviceId);
94
		final HibBlackboardMessage hib = new HibBlackboardMessage(service, message);
95
		daoFactory.getDao(HibBlackboardMessage.class).save(hib);
96
	}
97

    
98
	public void createHibSubscription(final Subscription subcription) throws InformationServiceException {
99
		final HibService service = daoFactory.getDao(HibService.class).find(subcription.getServiceId());
100
		final HibSubscription hib = new HibSubscription();
101
		hib.setId(subcription.getId());
102
		hib.setOperation(subcription.getOperation());
103
		hib.setTable(subcription.getTable());
104
		hib.setCondition(new Gson().toJson(subcription.getCondition()));
105
		hib.setSubscriber(service);
106
		daoFactory.getDao(HibSubscription.class).save(hib);
107
	}
108

    
109
	public void updateHibBlackbooardMessage(final BlackboardMessageContainer message) throws InformationServiceException {
110
		final DnetSimpleDao<HibBlackboardMessage> dao = daoFactory.getDao(HibBlackboardMessage.class);
111
		final HibBlackboardMessage hib = dao.find(message.getId());
112
		hib.setAction(message.getAction());
113
		hib.setDate(message.getDate());
114
		hib.setMessage(message.getJsonMessage());
115
		hib.setStatus(message.getStatus().toString());
116
		dao.save(hib);
117
	}
118

    
119
	private HibResourceType createHibResourceType(final String type,
120
			final DnetResourceKind kind,
121
			final DnetResourceFormat format) throws InformationServiceException {
122
		final HibResourceType hibType = new HibResourceType(type, kind, format);
123
		daoFactory.getDao(HibResourceType.class).save(hibType);
124
		return hibType;
125
	}
126

    
127
	public DnetSimpleDaoFactory getDaoFactory() {
128
		return daoFactory;
129
	}
130

    
131
	@Required
132
	public void setDaoFactory(final DnetSimpleDaoFactory daoFactory) {
133
		this.daoFactory = daoFactory;
134
	}
135

    
136
}
    (1-1/1)