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