/** * ============================================================================= * * ORCID (R) Open Source * http://orcid.org * * Copyright (c) 2012-2014 ORCID, Inc. * Licensed under an MIT-Style License (MIT) * http://orcid.org/open-source-license * * This copyright and license information (including a link to the full license) * shall be included in its entirety in all copies or substantial portion of * the software. * * ============================================================================= */ package org.orcid.persistence.dao.impl; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import org.orcid.persistence.aop.ExcludeFromProfileLastModifiedUpdate; import org.orcid.persistence.dao.OrcidOauth2AuthoriziationCodeDetailDao; import org.orcid.persistence.jpa.entities.OrcidOauth2AuthoriziationCodeDetail; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author Declan Newman (declan) Date: 24/04/2012 */ @PersistenceContext(unitName = "orcid") public class OrcidOauth2AuthoriziationCodeDetailDaoImpl extends GenericDaoImpl<OrcidOauth2AuthoriziationCodeDetail, String> implements OrcidOauth2AuthoriziationCodeDetailDao { private static final Logger LOGGER = LoggerFactory.getLogger(OrcidOauth2AuthoriziationCodeDetailDaoImpl.class); public OrcidOauth2AuthoriziationCodeDetailDaoImpl() { super(OrcidOauth2AuthoriziationCodeDetail.class); } @Override @ExcludeFromProfileLastModifiedUpdate public OrcidOauth2AuthoriziationCodeDetail removeAndReturn(String code) { OrcidOauth2AuthoriziationCodeDetail orcidOauth2AuthoriziationCodeDetail = find(code); if (orcidOauth2AuthoriziationCodeDetail != null) { if (orcidOauth2AuthoriziationCodeDetail.getClientDetailsEntity() == null) { LOGGER.error("The client details entity is empty for code: {}", code); } else if (orcidOauth2AuthoriziationCodeDetail.getClientDetailsEntity().getId() == null || orcidOauth2AuthoriziationCodeDetail.getClientDetailsEntity().getId().trim().isEmpty()) { LOGGER.error("The client details entity dont have the client id for code: {}", code); } remove(code); return orcidOauth2AuthoriziationCodeDetail; } else { return null; } } @Override public boolean isPersistentToken(String code) { TypedQuery<OrcidOauth2AuthoriziationCodeDetail> query = entityManager.createQuery("from OrcidOauth2AuthoriziationCodeDetail where id=:code", OrcidOauth2AuthoriziationCodeDetail.class); query.setParameter("code", code); OrcidOauth2AuthoriziationCodeDetail result = query.getSingleResult(); return result.isPersistent(); } }