blob: 172ac69f1e47a4ac2867ded1c799be40a4f03d51 [file] [log] [blame]
margaretha34954472018-10-24 20:05:17 +02001package de.ids_mannheim.korap.dao;
2
margaretha34954472018-10-24 20:05:17 +02003import org.springframework.stereotype.Repository;
margaretha34954472018-10-24 20:05:17 +02004
5import de.ids_mannheim.korap.entity.Admin;
6import de.ids_mannheim.korap.entity.Admin_;
7import de.ids_mannheim.korap.user.User;
margaretha6e796842023-08-17 15:10:45 +02008import jakarta.persistence.EntityManager;
9import jakarta.persistence.NoResultException;
10import jakarta.persistence.PersistenceContext;
11import jakarta.persistence.Query;
12import jakarta.persistence.criteria.CriteriaBuilder;
13import jakarta.persistence.criteria.CriteriaQuery;
14import jakarta.persistence.criteria.Predicate;
15import jakarta.persistence.criteria.Root;
margaretha34954472018-10-24 20:05:17 +020016
17/**
margaretha398f4722019-01-09 19:07:20 +010018 * Describes database queries and transactions regarding admin users.
19 *
margaretha34954472018-10-24 20:05:17 +020020 * @author margaretha
21 *
22 */
margarethad3a46ec2019-12-20 12:18:44 +010023//@Transactional
margaretha34954472018-10-24 20:05:17 +020024@Repository
25public class AdminDaoImpl implements AdminDao {
26
27 @PersistenceContext
28 private EntityManager entityManager;
29
30 /* (non-Javadoc)
31 * @see de.ids_mannheim.korap.dao.AdminDao#addAccount(de.ids_mannheim.korap.user.User)
32 */
33 @Override
34 public void addAccount (User user) {
35 Admin admin = new Admin();
36 admin.setUserId(user.getUsername());
37 entityManager.persist(admin);
38 }
39
40 /* (non-Javadoc)
41 * @see de.ids_mannheim.korap.dao.AdminDao#isAdmin(java.lang.String)
42 */
43 @Override
44 public boolean isAdmin (String userId) {
45 CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
46 CriteriaQuery<Admin> query = criteriaBuilder.createQuery(Admin.class);
47
48 Root<Admin> admin = query.from(Admin.class);
49 Predicate p = criteriaBuilder.equal(admin.get(Admin_.userId), userId);
50
51 query.select(admin);
52 query.where(p);
53
54 Query q = entityManager.createQuery(query);
55 try {
56 q.getSingleResult();
57 }
58 catch (NoResultException e) {
59 return false;
60 }
61
62 return true;
63 }
64}