package fi.otavanopisto.pyramus.dao.clientapplications;
import java.util.List;
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.ClientApplicationAuthorizationCode;
import fi.otavanopisto.pyramus.domainmodel.users.User;
import fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplicationAuthorizationCode_;
@Stateless
public class ClientApplicationAuthorizationCodeDAO extends PyramusEntityDAO<ClientApplicationAuthorizationCode> {
public ClientApplicationAuthorizationCode create(User user, ClientApplication clientApplication, String authorizationCode, String redirectUrl) {
EntityManager entityManager = getEntityManager();
ClientApplicationAuthorizationCode clientApplicationAuthorizationCode = new ClientApplicationAuthorizationCode();
clientApplicationAuthorizationCode.setUser(user);
clientApplicationAuthorizationCode.setClientApplication(clientApplication);
clientApplicationAuthorizationCode.setAuthorizationCode(authorizationCode);
clientApplicationAuthorizationCode.setRedirectUrl(redirectUrl);
entityManager.persist(clientApplicationAuthorizationCode);
return clientApplicationAuthorizationCode;
}
public List<ClientApplicationAuthorizationCode> listByUser(User user){
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<ClientApplicationAuthorizationCode> criteria = criteriaBuilder.createQuery(ClientApplicationAuthorizationCode.class);
Root<ClientApplicationAuthorizationCode> root = criteria.from(ClientApplicationAuthorizationCode.class);
criteria.select(root);
criteria.where(
criteriaBuilder.equal(root.get(ClientApplicationAuthorizationCode_.user), user)
);
return entityManager.createQuery(criteria).getResultList();
}
public List<ClientApplicationAuthorizationCode> listByClientApplication(ClientApplication clientApplication){
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<ClientApplicationAuthorizationCode> criteria = criteriaBuilder.createQuery(ClientApplicationAuthorizationCode.class);
Root<ClientApplicationAuthorizationCode> root = criteria.from(ClientApplicationAuthorizationCode.class);
criteria.select(root);
criteria.where(
criteriaBuilder.equal(root.get(ClientApplicationAuthorizationCode_.clientApplication), clientApplication)
);
return entityManager.createQuery(criteria).getResultList();
}
public ClientApplicationAuthorizationCode findByClientApplicationAndAuthorizationCode(String authorizationCode, ClientApplication clientApplication){
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<ClientApplicationAuthorizationCode> criteria = criteriaBuilder.createQuery(ClientApplicationAuthorizationCode.class);
Root<ClientApplicationAuthorizationCode> root = criteria.from(ClientApplicationAuthorizationCode.class);
criteria.select(root);
criteria.where(
criteriaBuilder.and(
criteriaBuilder.equal(root.get(ClientApplicationAuthorizationCode_.authorizationCode), authorizationCode),
criteriaBuilder.equal(root.get(ClientApplicationAuthorizationCode_.clientApplication), clientApplication)
)
);
return getSingleResult(entityManager.createQuery(criteria));
}
public void delete(ClientApplicationAuthorizationCode clientApplicationAuthorizationCode){
super.delete(clientApplicationAuthorizationCode);
}
}