1 package de.dlr.shepard.context.references.file.daos;
2
3 import de.dlr.shepard.common.util.Constants;
4 import de.dlr.shepard.common.util.CypherQueryHelper;
5 import de.dlr.shepard.context.references.file.entities.FileReference;
6 import de.dlr.shepard.context.version.daos.VersionableEntityDAO;
7 import jakarta.enterprise.context.RequestScoped;
8 import java.util.Collections;
9 import java.util.List;
10 import java.util.stream.StreamSupport;
11
12 @RequestScoped
13 public class FileReferenceDAO extends VersionableEntityDAO<FileReference> {
14
15 public List<FileReference> findByDataObjectNeo4jId(long dataObjectId) {
16 String query =
17 String.format(
18 "MATCH (d:DataObject)-[hr:has_reference]->%s WHERE ID(d)=%d ",
19 CypherQueryHelper.getObjectPart("r", "FileReference", false),
20 dataObjectId
21 ) +
22 CypherQueryHelper.getReturnPart("r");
23
24 var queryResult = findByQuery(query, Collections.emptyMap());
25
26 List<FileReference> result = StreamSupport.stream(queryResult.spliterator(), false)
27 .filter(r -> r.getDataObject() != null)
28 .filter(r -> r.getDataObject().getId().equals(dataObjectId))
29 .toList();
30
31 return result;
32 }
33
34 public List<FileReference> findByDataObjectShepardId(long dataObjectShepardId) {
35 String query =
36 String.format(
37 "MATCH (d:DataObject)-[hr:has_reference]->%s WHERE d." + Constants.SHEPARD_ID + "=%d ",
38 CypherQueryHelper.getObjectPart("r", "FileReference", false),
39 dataObjectShepardId
40 ) +
41 CypherQueryHelper.getReturnPart("r");
42 var queryResult = findByQuery(query, Collections.emptyMap());
43
44 List<FileReference> result = StreamSupport.stream(queryResult.spliterator(), false)
45 .filter(r -> r.getDataObject() != null)
46 .filter(r -> r.getDataObject().getShepardId().equals(dataObjectShepardId))
47 .toList();
48
49 return result;
50 }
51
52 @Override
53 public Class<FileReference> getEntityType() {
54 return FileReference.class;
55 }
56 }