AnnotatableTimeseriesDAO.java
package de.dlr.shepard.context.semantic.daos;
import de.dlr.shepard.common.neo4j.daos.GenericDAO;
import de.dlr.shepard.context.semantic.entities.AnnotatableTimeseries;
import de.dlr.shepard.context.semantic.entities.SemanticAnnotation;
import de.dlr.shepard.context.semantic.entities.SemanticRepository;
import jakarta.enterprise.context.RequestScoped;
import jakarta.ws.rs.NotFoundException;
import java.util.Optional;
import org.neo4j.ogm.cypher.ComparisonOperator;
import org.neo4j.ogm.cypher.Filter;
@RequestScoped
public class AnnotatableTimeseriesDAO extends GenericDAO<AnnotatableTimeseries> {
public Optional<AnnotatableTimeseries> findByTimeseries(long containerId, int timeseriesId) {
var containerFilter = new Filter("containerId", ComparisonOperator.EQUALS, containerId);
var timeseriesFilter = new Filter("timeseriesId", ComparisonOperator.EQUALS, timeseriesId);
return this.session.loadAll(AnnotatableTimeseries.class, containerFilter.and(timeseriesFilter), 2)
.stream()
.findFirst();
}
public SemanticAnnotation getAnnotationById(long annotationId) {
var entity = this.session.load(SemanticAnnotation.class, annotationId, 2);
if (entity != null) return entity;
throw new NotFoundException("No semantic annotation found with id " + annotationId);
}
public void deleteAnnotation(long annotationId) {
var annotation = getAnnotationById(annotationId);
session.delete(annotation);
}
public SemanticRepository getSemanticRepositoryById(long semanticRepositoryId) {
var entity = session.load(SemanticRepository.class, semanticRepositoryId);
if (entity != null) return entity;
throw new NotFoundException("No semantic repository found with id " + semanticRepositoryId);
}
@Override
public AnnotatableTimeseries createOrUpdate(AnnotatableTimeseries entity) {
session.save(entity, 2);
return entity;
}
@Override
public Class<AnnotatableTimeseries> getEntityType() {
return AnnotatableTimeseries.class;
}
}