1 package de.dlr.shepard.context.references.spatialdata.daos;
2
3 import de.dlr.shepard.common.util.CypherQueryHelper;
4 import de.dlr.shepard.context.references.spatialdata.entities.SpatialDataReference;
5 import de.dlr.shepard.context.version.daos.VersionableEntityDAO;
6 import jakarta.enterprise.context.RequestScoped;
7 import java.util.Collections;
8 import java.util.List;
9 import java.util.stream.StreamSupport;
10
11 @RequestScoped
12 public class SpatialDataReferenceDAO extends VersionableEntityDAO<SpatialDataReference> {
13
14 public List<SpatialDataReference> findByDataObjectShepardId(long dataObjectShepardId) {
15 String query =
16 String.format(
17 "MATCH (d:DataObject {shepardId: %d})-[hr:has_reference]->%s",
18 dataObjectShepardId,
19 CypherQueryHelper.getObjectPart("r", "SpatialDataReference", false)
20 ) +
21 CypherQueryHelper.getReturnPart("r");
22 var queryResult = findByQuery(query, Collections.emptyMap());
23
24 List<SpatialDataReference> result = StreamSupport.stream(queryResult.spliterator(), false)
25 .filter(r -> r.getDataObject() != null && r.getDataObject().getShepardId().equals(dataObjectShepardId))
26 .toList();
27
28 return result;
29 }
30
31 @Override
32 public Class<SpatialDataReference> getEntityType() {
33 return SpatialDataReference.class;
34 }
35 }