| .. | .. |
|---|
| 18 | 18 | import javax.persistence.NamedQueries; |
|---|
| 19 | 19 | import javax.persistence.NamedQuery; |
|---|
| 20 | 20 | import javax.persistence.NoResultException; |
|---|
| 21 | | -import javax.persistence.NonUniqueResultException; |
|---|
| 22 | 21 | import javax.persistence.OneToMany; |
|---|
| 23 | 22 | import javax.persistence.Table; |
|---|
| 24 | 23 | import javax.persistence.TypedQuery; |
|---|
| .. | .. |
|---|
| 29 | 28 | import net.curisit.securis.db.listeners.CreationTimestampListener; |
|---|
| 30 | 29 | import net.curisit.securis.db.listeners.ModificationTimestampListener; |
|---|
| 31 | 30 | import net.curisit.securis.services.exception.SeCurisServiceException; |
|---|
| 32 | | -import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes; |
|---|
| 33 | 31 | |
|---|
| 34 | 32 | import org.apache.logging.log4j.LogManager; |
|---|
| 35 | 33 | import org.apache.logging.log4j.Logger; |
|---|
| .. | .. |
|---|
| 59 | 57 | @NamedQuery(name = "last-code-suffix-used-in-pack", query = "SELECT max(l.codeSuffix) FROM License l where l.pack.id = :packId"), |
|---|
| 60 | 58 | @NamedQuery(name = "list-licenses-by-pack", query = "SELECT l FROM License l where l.pack.id = :packId"), |
|---|
| 61 | 59 | @NamedQuery(name = "list-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash"), |
|---|
| 62 | | - @NamedQuery(name = "list-active-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash and l.status in ('AC', 'PA')") |
|---|
| 60 | + @NamedQuery(name = "list-active-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash and l.status in ('AC', 'PA')"), |
|---|
| 61 | + @NamedQuery(name = "list-valid-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash and l.status in ('RE', 'AC', 'PA')") |
|---|
| 62 | + |
|---|
| 63 | 63 | }) |
|---|
| 64 | 64 | public class License implements CreationTimestampEntity, ModificationTimestampEntity, Serializable { |
|---|
| 65 | 65 | |
|---|
| .. | .. |
|---|
| 369 | 369 | } |
|---|
| 370 | 370 | } |
|---|
| 371 | 371 | |
|---|
| 372 | | - public static License findLicenseByRequestData(String requestData, EntityManager em) throws SeCurisServiceException { |
|---|
| 372 | + /** |
|---|
| 373 | + * Return licenses with status: REquested, ACtive, Pre-Active for a given |
|---|
| 374 | + * request data |
|---|
| 375 | + * |
|---|
| 376 | + * @param requestData |
|---|
| 377 | + * @param em |
|---|
| 378 | + * @return |
|---|
| 379 | + * @throws SeCurisServiceException |
|---|
| 380 | + */ |
|---|
| 381 | + public static License findValidLicenseByRequestData(String requestData, EntityManager em) throws SeCurisServiceException { |
|---|
| 382 | + TypedQuery<License> query = em.createNamedQuery("list-valid-licenses-by-req-data", License.class); |
|---|
| 383 | + query.setParameter("hash", BlockedRequest.generateHash(requestData)); |
|---|
| 384 | + try { |
|---|
| 385 | + List<License> list = query.getResultList(); |
|---|
| 386 | + if (list.size() == 0) { |
|---|
| 387 | + return null; |
|---|
| 388 | + } |
|---|
| 389 | + if (list.size() > 1) { |
|---|
| 390 | + LOG.error("There are more than 1 active or requested license for request data: {}\nHash: {}", requestData, |
|---|
| 391 | + BlockedRequest.generateHash(requestData)); |
|---|
| 392 | + } |
|---|
| 393 | + return list.get(0); |
|---|
| 394 | + } catch (NoResultException e) { |
|---|
| 395 | + // There is no license for request data |
|---|
| 396 | + return null; |
|---|
| 397 | + } |
|---|
| 398 | + } |
|---|
| 399 | + |
|---|
| 400 | + public static License findActiveLicenseByRequestData(String requestData, EntityManager em) throws SeCurisServiceException { |
|---|
| 373 | 401 | TypedQuery<License> query = em.createNamedQuery("list-active-licenses-by-req-data", License.class); |
|---|
| 374 | 402 | query.setParameter("hash", BlockedRequest.generateHash(requestData)); |
|---|
| 375 | 403 | try { |
|---|
| 376 | | - return query.getSingleResult(); |
|---|
| 377 | | - } catch (NonUniqueResultException e) { |
|---|
| 378 | | - LOG.error("There are more than 1 active license for request data: {}\nHash: {}", requestData, BlockedRequest.generateHash(requestData)); |
|---|
| 379 | | - throw new SeCurisServiceException(ErrorCodes.DUPLICATED_REQUEST_DATA, "There are more than 1 active license for request data hash: " |
|---|
| 380 | | - + BlockedRequest.generateHash(requestData)); |
|---|
| 404 | + List<License> list = query.getResultList(); |
|---|
| 405 | + if (list.size() == 0) { |
|---|
| 406 | + return null; |
|---|
| 407 | + } |
|---|
| 408 | + if (list.size() > 1) { |
|---|
| 409 | + LOG.error("There are more than 1 active license for request data: {}\nHash: {}", requestData, |
|---|
| 410 | + BlockedRequest.generateHash(requestData)); |
|---|
| 411 | + } |
|---|
| 412 | + return list.get(0); |
|---|
| 381 | 413 | } catch (NoResultException e) { |
|---|
| 382 | 414 | // There is no license for request data |
|---|
| 383 | 415 | return null; |
|---|