package fi.otavanopisto.pyramus.dao.clientapplications; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import fi.otavanopisto.pyramus.dao.PyramusEntityDAO; import fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplication; import fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplicationAccessToken; import fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplicationAuthorizationCode; import fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplicationAccessToken_; @Stateless public class ClientApplicationAccessTokenDAO extends PyramusEntityDAO<ClientApplicationAccessToken> { public ClientApplicationAccessToken create(String accessToken, String refreshToken, Long expires, ClientApplication clientApplication, ClientApplicationAuthorizationCode clientApplicationAuthorizationCode) { EntityManager entityManager = getEntityManager(); ClientApplicationAccessToken clientApplicationAccessToken = new ClientApplicationAccessToken(); clientApplicationAccessToken.setAccessToken(accessToken); clientApplicationAccessToken.setRefreshToken(refreshToken); clientApplicationAccessToken.setClientApplication(clientApplication); clientApplicationAccessToken.setExpires(expires); clientApplicationAccessToken.setClientApplicationAuthorizationCode(clientApplicationAuthorizationCode); entityManager.persist(clientApplicationAccessToken); return clientApplicationAccessToken; } public ClientApplicationAccessToken findByAccessToken(String accessToken){ EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<ClientApplicationAccessToken> criteria = criteriaBuilder.createQuery(ClientApplicationAccessToken.class); Root<ClientApplicationAccessToken> root = criteria.from(ClientApplicationAccessToken.class); criteria.select(root); criteria.where( criteriaBuilder.equal(root.get(ClientApplicationAccessToken_.accessToken), accessToken) ); return getSingleResult(entityManager.createQuery(criteria)); } public ClientApplicationAccessToken findByRefreshToken(String refreshToken){ EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<ClientApplicationAccessToken> criteria = criteriaBuilder.createQuery(ClientApplicationAccessToken.class); Root<ClientApplicationAccessToken> root = criteria.from(ClientApplicationAccessToken.class); criteria.select(root); criteria.where( criteriaBuilder.equal(root.get(ClientApplicationAccessToken_.refreshToken), refreshToken) ); return getSingleResult(entityManager.createQuery(criteria)); } public ClientApplicationAccessToken findByAuthCode(ClientApplicationAuthorizationCode clientApplicationAuthorizationCode){ EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<ClientApplicationAccessToken> criteria = criteriaBuilder.createQuery(ClientApplicationAccessToken.class); Root<ClientApplicationAccessToken> root = criteria.from(ClientApplicationAccessToken.class); criteria.select(root); criteria.where( criteriaBuilder.equal(root.get(ClientApplicationAccessToken_.clientApplicationAuthorizationCode), clientApplicationAuthorizationCode) ); return getSingleResult(entityManager.createQuery(criteria)); } public ClientApplicationAccessToken updateExpires(ClientApplicationAccessToken clientApplicationAccessToken, long expires){ EntityManager entityManager = getEntityManager(); clientApplicationAccessToken.setExpires(expires); entityManager.persist(clientApplicationAccessToken); return clientApplicationAccessToken; } public ClientApplicationAccessToken updateAccessToken(ClientApplicationAccessToken clientApplicationAccessToken, String accessToken){ EntityManager entityManager = getEntityManager(); clientApplicationAccessToken.setAccessToken(accessToken); entityManager.persist(clientApplicationAccessToken); return clientApplicationAccessToken; } public ClientApplicationAccessToken updateRefreshToken(ClientApplicationAccessToken clientApplicationAccessToken, String refreshToken) { clientApplicationAccessToken.setRefreshToken(refreshToken); return persist(clientApplicationAccessToken); } public void delete(ClientApplicationAccessToken clientApplicationAccessToken){ super.delete(clientApplicationAccessToken); } }