blob: 8d678b8c100bfbabcd95242fa84bac03bdac16dd [file] [log] [blame]
margaretha31a9f522018-04-03 20:40:45 +02001package de.ids_mannheim.korap.dao;
2
3import javax.persistence.EntityManager;
margaretha0e8f4e72018-04-05 14:11:52 +02004import javax.persistence.NoResultException;
margaretha31a9f522018-04-03 20:40:45 +02005import javax.persistence.PersistenceContext;
margaretha0e8f4e72018-04-05 14:11:52 +02006import javax.persistence.Query;
margaretha31a9f522018-04-03 20:40:45 +02007import javax.persistence.criteria.CriteriaBuilder;
margaretha0e8f4e72018-04-05 14:11:52 +02008import javax.persistence.criteria.CriteriaQuery;
9import javax.persistence.criteria.Predicate;
10import javax.persistence.criteria.Root;
margaretha31a9f522018-04-03 20:40:45 +020011
12import org.springframework.stereotype.Repository;
13import org.springframework.transaction.annotation.Transactional;
14
margaretha0e8f4e72018-04-05 14:11:52 +020015import de.ids_mannheim.korap.constant.OAuth2ClientType;
margaretha31a9f522018-04-03 20:40:45 +020016import de.ids_mannheim.korap.entity.OAuth2Client;
margaretha0e8f4e72018-04-05 14:11:52 +020017import de.ids_mannheim.korap.entity.OAuth2Client_;
margaretha31a9f522018-04-03 20:40:45 +020018import de.ids_mannheim.korap.exceptions.KustvaktException;
margaretha0e8f4e72018-04-05 14:11:52 +020019import de.ids_mannheim.korap.exceptions.StatusCodes;
margaretha31a9f522018-04-03 20:40:45 +020020import de.ids_mannheim.korap.utils.ParameterChecker;
21
22@Transactional
23@Repository
24public class OAuth2ClientDao {
25
26 @PersistenceContext
27 private EntityManager entityManager;
28
margaretha6d61a552018-04-10 19:26:44 +020029 public void registerClient (String id, String secretHashcode, String name,
margaretha8d804f62018-04-10 12:39:56 +020030 OAuth2ClientType type, String url, int urlHashCode,
31 String redirectURI, String registeredBy) throws KustvaktException {
margaretha31a9f522018-04-03 20:40:45 +020032 ParameterChecker.checkStringValue(id, "client id");
33 ParameterChecker.checkStringValue(name, "client name");
34 ParameterChecker.checkObjectValue(type, "client type");
35 ParameterChecker.checkStringValue(url, "client url");
36 ParameterChecker.checkStringValue(redirectURI, "client redirect uri");
margaretha0e8f4e72018-04-05 14:11:52 +020037 ParameterChecker.checkStringValue(registeredBy, "registeredBy");
margaretha31a9f522018-04-03 20:40:45 +020038
39 OAuth2Client client = new OAuth2Client();
40 client.setId(id);
41 client.setName(name);
margaretha6d61a552018-04-10 19:26:44 +020042 client.setSecret(secretHashcode);
margaretha31a9f522018-04-03 20:40:45 +020043 client.setType(type);
44 client.setUrl(url);
margaretha8d804f62018-04-10 12:39:56 +020045 client.setUrlHashCode(urlHashCode);
margaretha31a9f522018-04-03 20:40:45 +020046 client.setRedirectURI(redirectURI);
margaretha0e8f4e72018-04-05 14:11:52 +020047 client.setRegisteredBy(registeredBy);
margaretha31a9f522018-04-03 20:40:45 +020048 entityManager.persist(client);
49 }
50
margaretha0e8f4e72018-04-05 14:11:52 +020051 public OAuth2Client retrieveClientById (String clientId)
margarethaa0486272018-04-12 19:59:31 +020052 throws Exception {
margaretha0e8f4e72018-04-05 14:11:52 +020053
margarethaa0486272018-04-12 19:59:31 +020054 ParameterChecker.checkStringValue(clientId, "client_id");
55
margaretha0e8f4e72018-04-05 14:11:52 +020056 CriteriaBuilder builder = entityManager.getCriteriaBuilder();
57 CriteriaQuery<OAuth2Client> query =
58 builder.createQuery(OAuth2Client.class);
59
60 Root<OAuth2Client> root = query.from(OAuth2Client.class);
61 query.select(root);
62 query.where(builder.equal(root.get(OAuth2Client_.id), clientId));
63
64 Query q = entityManager.createQuery(query);
margarethaa0486272018-04-12 19:59:31 +020065// try {
margaretha0e8f4e72018-04-05 14:11:52 +020066 return (OAuth2Client) q.getSingleResult();
margarethaa0486272018-04-12 19:59:31 +020067// }
68// catch (NoResultException e) {
69// throw new KustvaktException(StatusCodes.CLIENT_NOT_FOUND,
70// "Client with id " + clientId + " is not found");
71// }
margaretha0e8f4e72018-04-05 14:11:52 +020072 }
73
margaretha8d804f62018-04-10 12:39:56 +020074 public void deregisterClient (OAuth2Client client) {
75 if (!entityManager.contains(client)) {
76 client = entityManager.merge(client);
77 }
78 entityManager.remove(client);
79 }
margaretha31a9f522018-04-03 20:40:45 +020080
81}