| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.dao; |
| 2 | |
| 3 | import javax.persistence.EntityManager; |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 4 | import javax.persistence.NoResultException; |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 5 | import javax.persistence.PersistenceContext; |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 6 | import javax.persistence.Query; |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 7 | import javax.persistence.criteria.CriteriaBuilder; |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 8 | import javax.persistence.criteria.CriteriaQuery; |
| 9 | import javax.persistence.criteria.Predicate; |
| 10 | import javax.persistence.criteria.Root; |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 11 | |
| 12 | import org.springframework.stereotype.Repository; |
| 13 | import org.springframework.transaction.annotation.Transactional; |
| 14 | |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 15 | import de.ids_mannheim.korap.constant.OAuth2ClientType; |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 16 | import de.ids_mannheim.korap.entity.OAuth2Client; |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 17 | import de.ids_mannheim.korap.entity.OAuth2Client_; |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 18 | import de.ids_mannheim.korap.exceptions.KustvaktException; |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 19 | import de.ids_mannheim.korap.exceptions.StatusCodes; |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 20 | import de.ids_mannheim.korap.utils.ParameterChecker; |
| 21 | |
| 22 | @Transactional |
| 23 | @Repository |
| 24 | public class OAuth2ClientDao { |
| 25 | |
| 26 | @PersistenceContext |
| 27 | private EntityManager entityManager; |
| 28 | |
| margaretha | 6d61a55 | 2018-04-10 19:26:44 +0200 | [diff] [blame] | 29 | public void registerClient (String id, String secretHashcode, String name, |
| margaretha | 8d804f6 | 2018-04-10 12:39:56 +0200 | [diff] [blame] | 30 | OAuth2ClientType type, String url, int urlHashCode, |
| 31 | String redirectURI, String registeredBy) throws KustvaktException { |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 32 | 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"); |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 37 | ParameterChecker.checkStringValue(registeredBy, "registeredBy"); |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 38 | |
| 39 | OAuth2Client client = new OAuth2Client(); |
| 40 | client.setId(id); |
| 41 | client.setName(name); |
| margaretha | 6d61a55 | 2018-04-10 19:26:44 +0200 | [diff] [blame] | 42 | client.setSecret(secretHashcode); |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 43 | client.setType(type); |
| 44 | client.setUrl(url); |
| margaretha | 8d804f6 | 2018-04-10 12:39:56 +0200 | [diff] [blame] | 45 | client.setUrlHashCode(urlHashCode); |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 46 | client.setRedirectURI(redirectURI); |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 47 | client.setRegisteredBy(registeredBy); |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 48 | entityManager.persist(client); |
| 49 | } |
| 50 | |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 51 | public OAuth2Client retrieveClientById (String clientId) |
| margaretha | a048627 | 2018-04-12 19:59:31 +0200 | [diff] [blame^] | 52 | throws Exception { |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 53 | |
| margaretha | a048627 | 2018-04-12 19:59:31 +0200 | [diff] [blame^] | 54 | ParameterChecker.checkStringValue(clientId, "client_id"); |
| 55 | |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 56 | 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); |
| margaretha | a048627 | 2018-04-12 19:59:31 +0200 | [diff] [blame^] | 65 | // try { |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 66 | return (OAuth2Client) q.getSingleResult(); |
| margaretha | a048627 | 2018-04-12 19:59:31 +0200 | [diff] [blame^] | 67 | // } |
| 68 | // catch (NoResultException e) { |
| 69 | // throw new KustvaktException(StatusCodes.CLIENT_NOT_FOUND, |
| 70 | // "Client with id " + clientId + " is not found"); |
| 71 | // } |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 72 | } |
| 73 | |
| margaretha | 8d804f6 | 2018-04-10 12:39:56 +0200 | [diff] [blame] | 74 | public void deregisterClient (OAuth2Client client) { |
| 75 | if (!entityManager.contains(client)) { |
| 76 | client = entityManager.merge(client); |
| 77 | } |
| 78 | entityManager.remove(client); |
| 79 | } |
| margaretha | 31a9f52 | 2018-04-03 20:40:45 +0200 | [diff] [blame] | 80 | |
| 81 | } |