private List<CdoSnapshot> queryForCoreSnapshots(JqlQuery query) { queryCompiler.compile(query); query.aggregateIfEntityQuery(); List<CdoSnapshot> snapshots = snapshotQueryRunner.queryForSnapshots(query); query.stats().logShallowQuery(snapshots); return snapshots; }
/** * Query for selecting changes (or snapshots) made on any object. * <br/><br/> * * For example, last changes committed on any object can be fetched with: * <pre> * javers.findChanges( QueryBuilder.anyDomainObject().build() ); * </pre> * @since 2.0 */ public static QueryBuilder anyDomainObject(){ return new QueryBuilder(new AnyDomainObjectFilterDefinition()); }
CdoSnapshot referenceResolver(CommitMetadata rootContext, GlobalId targetId) { SnapshotReference reference = new SnapshotReference(rootContext, targetId); if (!commitsMap.containsKey(rootContext)) { return null; } CdoSnapshot latest = findLatestToInCommitTable(reference); if (latest == null) { appendSnapshots(fillGapFromRepository(reference, 15)); } latest = findLatestToInCommitTable(reference); if (latest == null){ query.stats().logMaxGapsToFillExceededInfo(targetId); } return latest; }
/** * Query for selecting changes (or snapshots) made on a concrete Entity instance. * <br/><br/> * * For example, last changes on "bob" Person: * <pre> * javers.findChanges( QueryBuilder.byInstanceId("bob", Person.class).build() ); * </pre> */ public static QueryBuilder byInstanceId(Object localId, Class entityClass){ Validate.argumentsAreNotNull(localId, entityClass); return new QueryBuilder(new IdFilterDefinition(instanceId(localId, entityClass))); }
@Override public Optional<CdoSnapshot> getLatestSnapshot(Object localId, Class entity) { Validate.argumentsAreNotNull(localId, entity); return queryRunner.runQueryForLatestSnapshot(instanceId(localId, entity)); }
private boolean isInChildValueObjectScope(SnapshotReference snapshotReference) { return query.isAggregate() && snapshotReference.targetId() instanceof ValueObjectId; }
/** * Query for selecting changes (or snapshots) * made on all ValueObjects at given path, owned by any instance of given Entity. * <br/><br/> * * See <b>path</b> parameter hints in {@link #byValueObjectId(Object, Class, String)}. */ public static QueryBuilder byValueObject(Class ownerEntityClass, String path){ Validate.argumentsAreNotNull(ownerEntityClass, path); return new QueryBuilder(new VoOwnerFilterDefinition(ownerEntityClass, path)); }
/** * Query for selecting changes (or snapshots) made on * any object (Entity or ValueObject) of given classes. * <br/><br/> * * For example, last changes on any object of MyClass.class: * <pre> * javers.findChanges( QueryBuilder.byClass(MyClass.class).build() ); * </pre> */ public static QueryBuilder byClass(Class... requiredClasses){ return new QueryBuilder(new ClassFilterDefinition(Sets.asSet(requiredClasses))); }
public static QueryBuilder byGlobalId(GlobalIdDTO globalId){ Validate.argumentIsNotNull(globalId); return new QueryBuilder(new IdFilterDefinition(globalId)); }
@Override public String toString() { return "Dto("+value()+")"; } }
/** * Selects {@link ShadowScope#COMMIT_DEEP} for Shadow queries. * <br/><br/> * * Read about query scopes in {@link Javers#findShadows(JqlQuery)} javadoc. * * @see <a href="http://javers.org/documentation/jql-examples/">http://javers.org/documentation/jql-examples</a> * @since 3.5 */ public QueryBuilder withScopeCommitDeep() { return withShadowScope(COMMIT_DEEP); }
@Override Filter compile(GlobalIdFactory globalIdFactory, TypeMapper typeMapper) { return new AnyDomainObjectFilter(); } }
@Override public <T> List<Shadow<T>> findShadows(JqlQuery query) { return (List)queryRunner.queryForShadows(query); }
void compile(JqlQuery query) { query.compile(globalIdFactory, typeMapper); } }
public List<Change> queryForChanges(JqlQuery query) { return changesQueryRunner.queryForChanges(query); } }
boolean isClassQuery() { return hasFilter(ClassFilter.class); }
public static ValueObjectIdDTO valueObjectId(Object ownerLocalId, Class ownerClass, String fragment){ return new ValueObjectIdDTO(ownerClass, ownerLocalId, fragment); }
@Override public List<CdoSnapshot> findSnapshots(JqlQuery query){ return queryRunner.queryForSnapshots(query); }
@Override public String value() { return ownerIdDTO.value()+"#"+ path; }