blob: c1216697e69f0ead81af3db61eecf0cd8d2b98a8 [file] [log] [blame]
margaretha38d530e2017-07-11 19:06:50 +02001package de.ids_mannheim.korap.dao;
2
margaretha543f2002017-07-14 00:27:15 +02003import java.util.List;
margaretha2c50c732018-10-17 18:48:52 +02004import java.util.Set;
margaretha543f2002017-07-14 00:27:15 +02005
margaretha6e796842023-08-17 15:10:45 +02006import jakarta.persistence.EntityManager;
7import jakarta.persistence.NoResultException;
8import jakarta.persistence.PersistenceContext;
9import jakarta.persistence.Query;
10import jakarta.persistence.TypedQuery;
11import jakarta.persistence.criteria.CriteriaBuilder;
12import jakarta.persistence.criteria.CriteriaQuery;
13import jakarta.persistence.criteria.Root;
margaretha543f2002017-07-14 00:27:15 +020014
margarethad3c0fc92017-10-25 15:03:32 +020015import org.springframework.stereotype.Repository;
margaretha2c50c732018-10-17 18:48:52 +020016import org.springframework.transaction.annotation.Transactional;
margaretha38d530e2017-07-11 19:06:50 +020017
margaretha5b708792023-05-12 16:55:29 +020018import de.ids_mannheim.korap.core.entity.AnnotationLayer;
19import de.ids_mannheim.korap.core.entity.Resource;
20import de.ids_mannheim.korap.core.entity.Resource_;
margaretha2c50c732018-10-17 18:48:52 +020021import de.ids_mannheim.korap.exceptions.KustvaktException;
22import de.ids_mannheim.korap.utils.ParameterChecker;
margaretha38d530e2017-07-11 19:06:50 +020023
margaretha543f2002017-07-14 00:27:15 +020024/**
25 * ResourceDao manages SQL queries regarding resource info and layers.
margaretha38d530e2017-07-11 19:06:50 +020026 *
27 * @author margaretha
28 *
29 */
margarethad3c0fc92017-10-25 15:03:32 +020030@Repository
margaretha38d530e2017-07-11 19:06:50 +020031public class ResourceDao {
32
margaretha543f2002017-07-14 00:27:15 +020033 @PersistenceContext
34 private EntityManager entityManager;
margarethad3c0fc92017-10-25 15:03:32 +020035
margaretha2c50c732018-10-17 18:48:52 +020036 /**
37 * Select all from the resource table
38 *
margarethae353dfa2017-07-18 19:23:29 +020039 * @return a list of resources
40 */
margaretha543f2002017-07-14 00:27:15 +020041 public List<Resource> getAllResources () {
42 CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
margaretha35e1ca22023-11-16 22:00:01 +010043 CriteriaQuery<Resource> query = criteriaBuilder
44 .createQuery(Resource.class);
margarethae353dfa2017-07-18 19:23:29 +020045 Root<Resource> resource = query.from(Resource.class);
margarethae353dfa2017-07-18 19:23:29 +020046 query.select(resource);
margaretha0c186222018-10-22 17:48:33 +020047
48 TypedQuery<Resource> q = entityManager.createQuery(query);
margaretha543f2002017-07-14 00:27:15 +020049 return q.getResultList();
margaretha38d530e2017-07-11 19:06:50 +020050 }
margaretha2c50c732018-10-17 18:48:52 +020051
52 public Resource retrieveResource (String id) {
53 CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
margaretha35e1ca22023-11-16 22:00:01 +010054 CriteriaQuery<Resource> query = criteriaBuilder
55 .createQuery(Resource.class);
margaretha2c50c732018-10-17 18:48:52 +020056 Root<Resource> resource = query.from(Resource.class);
57 query.select(resource);
58 query.where(criteriaBuilder.equal(resource.get(Resource_.id), id));
59
60 Query q = entityManager.createQuery(query);
margaretha0c186222018-10-22 17:48:33 +020061 try {
62 return (Resource) q.getSingleResult();
63 }
64 catch (NoResultException e) {
65 return null;
66 }
margaretha2c50c732018-10-17 18:48:52 +020067 }
68
margarethad3a46ec2019-12-20 12:18:44 +010069 @Transactional
margaretha2c50c732018-10-17 18:48:52 +020070 public void createResource (String id, String germanTitle,
margaretha0c186222018-10-22 17:48:33 +020071 String englishTitle, String englishDescription,
72 Set<AnnotationLayer> layers) throws KustvaktException {
margaretha2c50c732018-10-17 18:48:52 +020073 ParameterChecker.checkStringValue(id, "id");
74 ParameterChecker.checkStringValue(englishTitle, "en_title");
75 ParameterChecker.checkStringValue(germanTitle, "de_title");
76
77 Resource r = new Resource(id, germanTitle, englishTitle,
78 englishDescription, layers);
79 entityManager.persist(r);
80
81 }
margaretha38d530e2017-07-11 19:06:50 +020082}