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 }