@Override @SuppressWarnings({"unchecked"}) public <T> T findRevision(Class<T> revisionEntityClass, Number revision) throws IllegalArgumentException, RevisionDoesNotExistException, IllegalStateException { revisionEntityClass = getTargetClassIfProxied( revisionEntityClass ); checkNotNull( revision, "Entity revision" ); checkPositive( revision, "Entity revision" ); checkSession(); final Set<Number> revisions = new HashSet<>( 1 ); revisions.add( revision ); final Query<?> query = enversService.getRevisionInfoQueryCreator().getRevisionsQuery( session, revisions ); try { final T revisionData = (T) query.uniqueResult(); if ( revisionData == null ) { throw new RevisionDoesNotExistException( revision ); } return revisionData; } catch (NonUniqueResultException e) { throw new AuditException( e ); } }
@Override public Date getRevisionDate(Number revision) throws IllegalArgumentException, RevisionDoesNotExistException, IllegalStateException { checkNotNull( revision, "Entity revision" ); checkPositive( revision, "Entity revision" ); checkSession(); final Query<?> query = enversService.getRevisionInfoQueryCreator().getRevisionDateQuery( session, revision ); try { final Object timestampObject = query.uniqueResult(); if ( timestampObject == null ) { throw new RevisionDoesNotExistException( revision ); } // The timestamp object is either a date or a long return timestampObject instanceof Date ? (Date) timestampObject : new Date( (Long) timestampObject ); } catch (NonUniqueResultException e) { throw new AuditException( e ); } }
@Override public Number getRevisionNumberForDate(Date date) { checkNotNull( date, "Date of revision" ); checkSession(); final Query<?> query = enversService.getRevisionInfoQueryCreator().getRevisionNumberForDateQuery( session, date ); try { final Number res = (Number) query.uniqueResult(); if ( res == null ) { throw new RevisionDoesNotExistException( date ); } return res; } catch (NonUniqueResultException e) { throw new AuditException( e ); } }
@SuppressWarnings({"unchecked"}) public <T> T findRevision(Class<T> revisionEntityClass, Number revision) throws IllegalArgumentException, RevisionDoesNotExistException, IllegalStateException { checkNotNull(revision, "Entity revision"); checkPositive(revision, "Entity revision"); checkSession(); Set<Number> revisions = new HashSet<Number>(1); revisions.add(revision); Query query = verCfg.getRevisionInfoQueryCreator().getRevisionsQuery(session, revisions); try { T revisionData = (T) query.uniqueResult(); if (revisionData == null) { throw new RevisionDoesNotExistException(revision); } return revisionData; } catch (NonUniqueResultException e) { throw new AuditException(e); } }
@Override @SuppressWarnings({"unchecked"}) public <T> T findRevision(Class<T> revisionEntityClass, Number revision) throws IllegalArgumentException, RevisionDoesNotExistException, IllegalStateException { revisionEntityClass = getTargetClassIfProxied( revisionEntityClass ); checkNotNull( revision, "Entity revision" ); checkPositive( revision, "Entity revision" ); checkSession(); final Set<Number> revisions = new HashSet<>( 1 ); revisions.add( revision ); final Query<?> query = auditService.getRevisionInfoQueryCreator().getRevisionsQuery( session, revisions ); try { final T revisionData = (T) query.uniqueResult(); if ( revisionData == null ) { throw new RevisionDoesNotExistException( revision ); } return revisionData; } catch (NonUniqueResultException e) { throw new AuditException( e ); } }
@Override public Date getRevisionDate(Number revision) throws IllegalArgumentException, RevisionDoesNotExistException, IllegalStateException { checkNotNull( revision, "Entity revision" ); checkPositive( revision, "Entity revision" ); checkSession(); final Query<?> query = auditService.getRevisionInfoQueryCreator().getRevisionDateQuery( session, revision ); try { final Object timestampObject = query.uniqueResult(); if ( timestampObject == null ) { throw new RevisionDoesNotExistException( revision ); } // The timestamp object is either a date or a long return timestampObject instanceof Date ? (Date) timestampObject : new Date( (Long) timestampObject ); } catch (NonUniqueResultException e) { throw new AuditException( e ); } }
@Override public Number getRevisionNumberForDate(Date date) { checkNotNull( date, "Date of revision" ); checkSession(); final Query<?> query = auditService.getRevisionInfoQueryCreator().getRevisionNumberForDateQuery( session, date ); try { final Number res = (Number) query.uniqueResult(); if ( res == null ) { throw new RevisionDoesNotExistException( date ); } return res; } catch (NonUniqueResultException e) { throw new AuditException( e ); } }