View Javadoc
1   package de.dlr.shepard.neo4Core.dao;
2   
3   import java.util.Collections;
4   import java.util.List;
5   import java.util.stream.StreamSupport;
6   
7   import de.dlr.shepard.neo4Core.entities.StructuredDataReference;
8   import de.dlr.shepard.util.Constants;
9   import de.dlr.shepard.util.CypherQueryHelper;
10  import de.dlr.shepard.util.TraversalRules;
11  
12  public class StructuredDataReferenceDAO extends VersionableEntityDAO<StructuredDataReference> {
13  
14  	/**
15  	 * Searches the database for references.
16  	 *
17  	 * @param dataObjectId identifies the dataObject
18  	 * @return a List of references
19  	 */
20  	public List<StructuredDataReference> findByDataObjectNeo4jId(long dataObjectId) {
21  		String query = String.format("MATCH (d:DataObject)-[hr:has_reference]->%s WHERE ID(d)=%d ",
22  				CypherQueryHelper.getObjectPart("r", "StructuredDataReference", false), dataObjectId)
23  				+ CypherQueryHelper.getReturnPart("r");
24  		var queryResult = findByQuery(query, Collections.emptyMap());
25  		List<StructuredDataReference> result = StreamSupport.stream(queryResult.spliterator(), false)
26  				.filter(r -> r.getDataObject() != null).filter(r -> r.getDataObject().getId().equals(dataObjectId))
27  				.toList();
28  		return result;
29  	}
30  
31  	public List<StructuredDataReference> findReachableReferencesByShepardId(TraversalRules traversalRule,
32  			long collectionShepardId, long startShepardId, String userName) {
33  		String query = getSearchForReachableReferencesByShepardIdQuery(traversalRule, collectionShepardId,
34  				startShepardId, userName);
35  		var queryResult = findByQuery(query, Collections.emptyMap());
36  		List<StructuredDataReference> ret = StreamSupport.stream(queryResult.spliterator(), false).toList();
37  		return ret;
38  	}
39  
40  	public List<StructuredDataReference> findReachableReferencesByNeo4jId(long collectionId, long startId,
41  			String userName) {
42  		String query = getSearchForReachableReferencesQuery(collectionId, startId, userName);
43  		var queryResult = findByQuery(query, Collections.emptyMap());
44  		List<StructuredDataReference> ret = StreamSupport.stream(queryResult.spliterator(), false).toList();
45  		return ret;
46  	}
47  
48  	public List<StructuredDataReference> findReachableReferencesByShepardId(long collectionShepardId,
49  			long startShepardId, String userName) {
50  		String query = getSearchForReachableReferencesByShepardIdQuery(collectionShepardId, startShepardId, userName);
51  		var queryResult = findByQuery(query, Collections.emptyMap());
52  		List<StructuredDataReference> ret = StreamSupport.stream(queryResult.spliterator(), false).toList();
53  		return ret;
54  	}
55  
56  	public List<StructuredDataReference> findReachableReferencesByNeo4jId(long collectionId, String userName) {
57  		String query = getSearchForReachableReferencesQuery(collectionId, userName);
58  		var queryResult = findByQuery(query, Collections.emptyMap());
59  		List<StructuredDataReference> ret = StreamSupport.stream(queryResult.spliterator(), false).toList();
60  		return ret;
61  	}
62  
63  	public List<StructuredDataReference> findReachableReferencesByShepardId(long collectionShepardId, String userName) {
64  		String query = getSearchForReachableReferencesByShepardIdQuery(collectionShepardId, userName);
65  		var queryResult = findByQuery(query, Collections.emptyMap());
66  		List<StructuredDataReference> ret = StreamSupport.stream(queryResult.spliterator(), false).toList();
67  		return ret;
68  	}
69  
70  	public List<StructuredDataReference> findByDataObjectShepardId(long dataObjectShepardId) {
71  		String query = String.format(
72  				"MATCH (d:DataObject)-[hr:has_reference]->%s WHERE d." + Constants.SHEPARD_ID + "=%d ",
73  				CypherQueryHelper.getObjectPart("r", "StructuredDataReference", false), dataObjectShepardId)
74  				+ CypherQueryHelper.getReturnPart("r");
75  		var queryResult = findByQuery(query, Collections.emptyMap());
76  		List<StructuredDataReference> result = StreamSupport.stream(queryResult.spliterator(), false)
77  				.filter(r -> r.getDataObject() != null)
78  				.filter(r -> r.getDataObject().getShepardId().equals(dataObjectShepardId)).toList();
79  		return result;
80  	}
81  
82  	@Override
83  	public Class<StructuredDataReference> getEntityType() {
84  		return StructuredDataReference.class;
85  	}
86  }