1 package de.dlr.shepard.neo4Core.services;
2
3 import java.util.List;
4
5 import de.dlr.shepard.neo4Core.dao.DataObjectDAO;
6 import de.dlr.shepard.neo4Core.dao.URIReferenceDAO;
7 import de.dlr.shepard.neo4Core.dao.UserDAO;
8 import de.dlr.shepard.neo4Core.entities.URIReference;
9 import de.dlr.shepard.neo4Core.io.URIReferenceIO;
10 import de.dlr.shepard.util.DateHelper;
11 import lombok.extern.slf4j.Slf4j;
12
13 @Slf4j
14 public class URIReferenceService implements IReferenceService<URIReference, URIReferenceIO> {
15
16 private URIReferenceDAO uRIReferenceDAO = new URIReferenceDAO();
17 private DataObjectDAO dataObjectDAO = new DataObjectDAO();
18 private UserDAO userDAO = new UserDAO();
19 private DateHelper dateHelper = new DateHelper();
20
21 @Override
22 public List<URIReference> getAllReferencesByDataObjectShepardId(long dataObjectShepardId) {
23 var references = uRIReferenceDAO.findByDataObjectShepardId(dataObjectShepardId);
24 return references;
25 }
26
27 @Override
28 public URIReference getReferenceByShepardId(long uriReferenceShepardId) {
29 var reference = uRIReferenceDAO.findByShepardId(uriReferenceShepardId);
30 if (reference == null || reference.isDeleted()) {
31 log.error("URI Reference with id {} is null or deleted", uriReferenceShepardId);
32 return null;
33 }
34 return reference;
35 }
36
37 @Override
38 public URIReference createReferenceByShepardId(long dataObjectShepardId, URIReferenceIO uriReference,
39 String username) {
40 var user = userDAO.find(username);
41 var dataObject = dataObjectDAO.findLightByShepardId(dataObjectShepardId);
42
43 var toCreate = new URIReference();
44 toCreate.setCreatedAt(dateHelper.getDate());
45 toCreate.setCreatedBy(user);
46 toCreate.setDataObject(dataObject);
47 toCreate.setName(uriReference.getName());
48 toCreate.setUri(uriReference.getUri());
49
50 var created = uRIReferenceDAO.createOrUpdate(toCreate);
51 created.setShepardId(created.getId());
52 created = uRIReferenceDAO.createOrUpdate(created);
53 return created;
54 }
55
56 @Override
57 public boolean deleteReferenceByShepardId(long uriReferenceShepardId, String username) {
58 var user = userDAO.find(username);
59
60 var old = uRIReferenceDAO.findByShepardId(uriReferenceShepardId);
61 old.setDeleted(true);
62 old.setUpdatedAt(dateHelper.getDate());
63 old.setUpdatedBy(user);
64
65 uRIReferenceDAO.createOrUpdate(old);
66 return true;
67 }
68
69 }