mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#351 - ENH: Add diff to Version beans returned from findVersions()
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
package com.avaje.ebeaninternal.server.query;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.avaje.ebean.ValuePair;
|
||||
import com.avaje.ebean.Version;
|
||||
import com.avaje.ebeaninternal.server.core.DiffHelp;
|
||||
import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -32,6 +36,8 @@ public class CQueryEngine {
|
||||
|
||||
private static final String T0 = "t0";
|
||||
|
||||
private final DiffHelp diffHelp = new DiffHelp(true);
|
||||
|
||||
private final boolean forwardOnlyHintOnFindIterate;
|
||||
|
||||
private final CQueryBuilder queryBuilder;
|
||||
@@ -180,6 +186,8 @@ public class CQueryEngine {
|
||||
}
|
||||
|
||||
List<Version<T>> versions = cquery.readVersions();
|
||||
deriveVersionDiffs(versions, request);
|
||||
|
||||
if (request.isLogSummary()) {
|
||||
logFindManySummary(cquery);
|
||||
}
|
||||
@@ -196,6 +204,26 @@ public class CQueryEngine {
|
||||
}
|
||||
}
|
||||
|
||||
private <T> void deriveVersionDiffs(List<Version<T>> versions, OrmQueryRequest<T> request) {
|
||||
|
||||
BeanDescriptor<T> descriptor = request.getBeanDescriptor();
|
||||
|
||||
Version<T> current = versions.get(0);
|
||||
for (int i = 1; i < versions.size(); i++) {
|
||||
Version<T> next = versions.get(i);
|
||||
deriveVersionDiff(current, next, descriptor);
|
||||
current = next;
|
||||
}
|
||||
// put an empty map into the last one
|
||||
current.setDiff(Collections.EMPTY_MAP);
|
||||
}
|
||||
|
||||
private <T> void deriveVersionDiff(Version<T> current, Version<T> prior, BeanDescriptor<T> descriptor) {
|
||||
|
||||
Map<String, ValuePair> diff = diffHelp.diff(current.getBean(), prior.getBean(), descriptor);
|
||||
current.setDiff(diff);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the lower sys_period given the table alias of the query or default.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user