blob: 858b7c7a951868bdb0b658e8b5d2e9d194e54315 [file] [log] [blame]
margaretha0866a532019-01-22 17:52:40 +01001package de.ids_mannheim.korap.dao;
2
3import javax.persistence.EntityManager;
4import javax.persistence.NoResultException;
5import javax.persistence.PersistenceContext;
6import javax.persistence.Query;
7import javax.persistence.criteria.CriteriaBuilder;
8import javax.persistence.criteria.CriteriaQuery;
9import javax.persistence.criteria.Root;
10
11import org.springframework.stereotype.Repository;
12import org.springframework.transaction.annotation.Transactional;
13
14import de.ids_mannheim.korap.entity.DefaultSetting;
15import de.ids_mannheim.korap.entity.DefaultSetting_;
16import de.ids_mannheim.korap.exceptions.KustvaktException;
17import de.ids_mannheim.korap.utils.ParameterChecker;
18
margaretha6cd27f32019-01-24 14:47:47 +010019/**
20 * DefaultSettingDao manages database queries and transactions
21 * regarding user default setting.
22 *
23 * @author margaretha
24 *
25 */
margaretha0866a532019-01-22 17:52:40 +010026@Repository
27public class DefaultSettingDao {
28
29 @PersistenceContext
30 private EntityManager entityManager;
31
32 /**
33 * Creates a new entry of default setting in the database. This
34 * method allows storing settings of an empty json object, i.e.
35 * {}.
36 *
37 * @param username
38 * username
39 * @param settings
40 * default settings in json
41 * @throws KustvaktException
42 */
margarethad3a46ec2019-12-20 12:18:44 +010043 @Transactional
margaretha0866a532019-01-22 17:52:40 +010044 public void createDefaultSetting (String username, String settings)
45 throws KustvaktException {
46 ParameterChecker.checkStringValue(username, "username");
47 ParameterChecker.checkStringValue(settings, "settings");
48 DefaultSetting us = new DefaultSetting(username, settings);
49 entityManager.persist(us);
50 }
51
margarethad3a46ec2019-12-20 12:18:44 +010052 @Transactional
margaretha0866a532019-01-22 17:52:40 +010053 public void updateDefaultSetting (DefaultSetting defaultSetting)
54 throws KustvaktException {
55 ParameterChecker.checkObjectValue(defaultSetting, "defaultSetting");
56 entityManager.merge(defaultSetting);
57 }
58
margarethad3a46ec2019-12-20 12:18:44 +010059 @Transactional
margarethab5e1e0a2019-01-29 22:11:57 +010060 public void deleteDefaultSetting (String username)
margaretha0866a532019-01-22 17:52:40 +010061 throws KustvaktException {
margarethab5e1e0a2019-01-29 22:11:57 +010062 ParameterChecker.checkObjectValue(username, "defaultSetting");
margaretha798e8bd2019-02-06 15:48:58 +010063 DefaultSetting defaultSetting = retrieveDefaultSetting(username);
margarethab5e1e0a2019-01-29 22:11:57 +010064 if (defaultSetting != null){
65 entityManager.remove(defaultSetting);
margaretha0866a532019-01-22 17:52:40 +010066 }
margaretha0866a532019-01-22 17:52:40 +010067 }
68
margaretha798e8bd2019-02-06 15:48:58 +010069 public DefaultSetting retrieveDefaultSetting (String username)
margaretha0866a532019-01-22 17:52:40 +010070 throws KustvaktException {
71 ParameterChecker.checkStringValue(username, "username");
72
73 CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
74 CriteriaQuery<DefaultSetting> query =
75 criteriaBuilder.createQuery(DefaultSetting.class);
76 Root<DefaultSetting> defaultSetting = query.from(DefaultSetting.class);
77
78 query.select(defaultSetting);
79 query.where(criteriaBuilder
80 .equal(defaultSetting.get(DefaultSetting_.username), username));
81 Query q = entityManager.createQuery(query);
82 try {
83 return (DefaultSetting) q.getSingleResult();
84 }
85 catch (NoResultException e) {
86 return null;
87 }
88 }
89}