View Javadoc
1   package de.dlr.shepard.context.references.dataobject.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.dataobject.entities.CollectionReference;
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 CollectionReferenceDAO extends VersionableEntityDAO<CollectionReference> {
14  
15    /**
16     * Searches the database for references.
17     *
18     * @param dataObjectId identifies the dataObject
19     * @return a List of references
20     */
21    public List<CollectionReference> findByDataObjectNeo4jId(long dataObjectId) {
22      String query =
23        String.format(
24          "MATCH (d:DataObject)-[hr:has_reference]->%s WHERE ID(d)=%d ",
25          CypherQueryHelper.getObjectPart("r", "CollectionReference", false),
26          dataObjectId
27        ) +
28        CypherQueryHelper.getReturnPart("r");
29  
30      var queryResult = findByQuery(query, Collections.emptyMap());
31  
32      List<CollectionReference> result = StreamSupport.stream(queryResult.spliterator(), false)
33        .filter(r -> r.getDataObject() != null)
34        .filter(r -> r.getDataObject().getId().equals(dataObjectId))
35        .toList();
36  
37      return result;
38    }
39  
40    public List<CollectionReference> findByDataObjectShepardId(long dataObjectShepardId) {
41      String query =
42        String.format(
43          "MATCH (d:DataObject)-[hr:has_reference]->%s WHERE d." + Constants.SHEPARD_ID + "=%d ",
44          CypherQueryHelper.getObjectPart("r", "CollectionReference", false),
45          dataObjectShepardId
46        ) +
47        CypherQueryHelper.getReturnPart("r");
48      var queryResult = findByQuery(query, Collections.emptyMap());
49  
50      List<CollectionReference> result = StreamSupport.stream(queryResult.spliterator(), false)
51        .filter(r -> r.getDataObject() != null)
52        .filter(r -> r.getDataObject().getShepardId().equals(dataObjectShepardId))
53        .toList();
54  
55      return result;
56    }
57  
58    @Override
59    public Class<CollectionReference> getEntityType() {
60      return CollectionReference.class;
61    }
62  }