View Javadoc
1   package de.dlr.shepard.neo4Core.dao;
2   
3   import java.util.ArrayList;
4   import java.util.HashMap;
5   import java.util.List;
6   import java.util.Map;
7   
8   import de.dlr.shepard.neo4Core.entities.TimeseriesContainer;
9   import de.dlr.shepard.util.CypherQueryHelper;
10  import de.dlr.shepard.util.CypherQueryHelper.Neighborhood;
11  import de.dlr.shepard.util.QueryParamHelper;
12  
13  public class TimeseriesContainerDAO extends GenericDAO<TimeseriesContainer> {
14  
15  	public List<TimeseriesContainer> findAllTimeseriesContainers(QueryParamHelper params, String username) {
16  		String query;
17  		Map<String, Object> paramsMap = new HashMap<>();
18  		paramsMap.put("name", params.getName());
19  		if (params.hasPagination()) {
20  			paramsMap.put("offset", params.getPagination().getOffset());
21  			paramsMap.put("size", params.getPagination().getSize());
22  		}
23  
24  		query = String.format("MATCH %s WHERE %s WITH c",
25  				CypherQueryHelper.getObjectPart("c", "TimeseriesContainer", params.hasName()),
26  				CypherQueryHelper.getReadableByQuery("c", username));
27  		if (params.hasOrderByAttribute()) {
28  			query += " " + CypherQueryHelper.getOrderByPart("c", params.getOrderByAttribute(), params.getOrderDesc());
29  		}
30  		if (params.hasPagination()) {
31  			query += " " + CypherQueryHelper.getPaginationPart();
32  		}
33  		query += " " + CypherQueryHelper.getReturnPart("c", Neighborhood.ESSENTIAL);
34  		var result = new ArrayList<TimeseriesContainer>();
35  		for (var container : findByQuery(query, paramsMap)) {
36  			if (matchName(container, params.getName())) {
37  				result.add(container);
38  			}
39  		}
40  		return result;
41  	}
42  
43  	private boolean matchName(TimeseriesContainer container, String name) {
44  		return name == null || container.getName().equalsIgnoreCase(name);
45  	}
46  
47  	@Override
48  	public Class<TimeseriesContainer> getEntityType() {
49  		return TimeseriesContainer.class;
50  	}
51  
52  }