Skip to content
This repository has been archived by the owner on Mar 31, 2022. It is now read-only.

Commit

Permalink
Entity Snapshots #3
Browse files Browse the repository at this point in the history
fix spotbugs
  • Loading branch information
plakhov committed Aug 25, 2021
1 parent 328fdfc commit 210de09
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public EntityDifferenceManagerImpl(EntitySnapshotManager entitySnapshotManager,
}

@Override
public EntityDifferenceModel getDifference(@Nullable EntitySnapshotModel first, EntitySnapshotModel second) {
public EntityDifferenceModel getDifference(@Nullable EntitySnapshotModel first, @Nullable EntitySnapshotModel second) {
// Sort snapshots by date, first - old, second - new
long firstTime = 0;
if (first != null && first.getSnapshotDate() != null)
Expand Down Expand Up @@ -95,7 +95,9 @@ public EntityDifferenceModel getDifference(@Nullable EntitySnapshotModel first,
return getDifferenceByFetchPlan(first, second, diffFetchPlan);
}

private EntityDifferenceModel getDifferenceByFetchPlan(EntitySnapshotModel first, EntitySnapshotModel second, FetchPlan diffFetchPlan) {
private EntityDifferenceModel getDifferenceByFetchPlan(
@Nullable EntitySnapshotModel first,
@Nullable EntitySnapshotModel second, FetchPlan diffFetchPlan) {
EntityDifferenceModel result = metadata.create(EntityDifferenceModel.class);
result.setDiffFetchPlan(diffFetchPlan);
result.setBeforeSnapshot(first);
Expand Down Expand Up @@ -128,8 +130,10 @@ private EntityDifferenceModel getDifferenceByFetchPlan(EntitySnapshotModel first
* @param diffBranch Diff branch
* @return Diff list
*/
private List<EntityPropertyDifferenceModel> getPropertyDiffs(FetchPlan diffFetchPlan, Object firstEntity, Object secondEntity,
Stack<Object> diffBranch) {
private List<EntityPropertyDifferenceModel> getPropertyDiffs(FetchPlan diffFetchPlan,
@Nullable Object firstEntity,
@Nullable Object secondEntity,
Stack<Object> diffBranch) {
List<EntityPropertyDifferenceModel> propertyDiffs = new LinkedList<>();

MetaClass fetchPlanMetaClass = metadata.getSession().getClass(diffFetchPlan.getEntityClass());
Expand Down Expand Up @@ -161,16 +165,17 @@ private List<EntityPropertyDifferenceModel> getPropertyDiffs(FetchPlan diffFetch
/**
* Return difference between property values
*
* @param firstValue First value
* @param secondValue Second value
* @param metaProperty Meta Property
* @param firstValue First value
* @param secondValue Second value
* @param metaProperty Meta Property
* @param fetchPlanProperty FetchPlan property
* @param diffBranch Branch with passed diffs
* @param diffBranch Branch with passed diffs
* @return Diff
*/
private EntityPropertyDifferenceModel getPropertyDifference(Object firstValue, Object secondValue,
MetaProperty metaProperty, FetchPlanProperty fetchPlanProperty,
Stack<Object> diffBranch) {
@Nullable
private EntityPropertyDifferenceModel getPropertyDifference(@Nullable Object firstValue, @Nullable Object secondValue,
MetaProperty metaProperty, FetchPlanProperty fetchPlanProperty,
Stack<Object> diffBranch) {
EntityPropertyDifferenceModel propertyDiff = null;

Range range = metaProperty.getRange();
Expand All @@ -191,9 +196,10 @@ private EntityPropertyDifferenceModel getPropertyDifference(Object firstValue, O
return propertyDiff;
}

private EntityPropertyDifferenceModel getCollectionDiff(Object firstValue, Object secondValue,
FetchPlanProperty fetchPlanProperty, MetaProperty metaProperty,
Stack<Object> diffBranch) {
@Nullable
private EntityPropertyDifferenceModel getCollectionDiff(@Nullable Object firstValue, @Nullable Object secondValue,
FetchPlanProperty fetchPlanProperty, MetaProperty metaProperty,
Stack<Object> diffBranch) {
EntityPropertyDifferenceModel propertyDiff = null;

Collection<Entity> addedEntities = new LinkedList<>();
Expand Down Expand Up @@ -264,6 +270,7 @@ private EntityPropertyDifferenceModel getCollectionDiff(Object firstValue, Objec
return propertyDiff;
}

@Nullable
private EntityPropertyDifferenceModel getClassDiff(@Nullable Object firstValue, @Nullable Object secondValue,
FetchPlanProperty fetchPlanProperty, MetaProperty metaProperty,
Stack<Object> diffBranch) {
Expand Down Expand Up @@ -292,6 +299,7 @@ private EntityPropertyDifferenceModel getClassDiff(@Nullable Object firstValue,
return propertyDiff;
}

@Nullable
private Entity getRelatedItem(Collection collection, Entity entity) {
for (Object item : collection) {
Entity itemEntity = (Entity) item;
Expand All @@ -313,10 +321,11 @@ private Entity getRelatedItem(Collection collection, Entity entity) {
* @param diffBranch Diff branch
* @return Property difference
*/
@Nullable
private EntityPropertyDifferenceModel generateClassDiffFor(Object diffObject,
@Nullable Object firstValue, @Nullable Object secondValue,
FetchPlanProperty fetchPlanProperty, MetaProperty metaProperty,
Stack<Object> diffBranch) {
@Nullable Object firstValue, @Nullable Object secondValue,
FetchPlanProperty fetchPlanProperty, MetaProperty metaProperty,
Stack<Object> diffBranch) {
// link
boolean isLinkChange = !Objects.equals(firstValue, secondValue);
isLinkChange = !(EntitySystemAccess.isEmbeddable(diffObject)) && isLinkChange;
Expand Down Expand Up @@ -358,16 +367,11 @@ private FetchPlan intersectFetchPlans(FetchPlan first, FetchPlan second) {

for (FetchPlanProperty firstProperty : firstProps) {
if (second.containsProperty(firstProperty.getName())) {
FetchPlan resultPropertyFetchPlan = null;
FetchPlanProperty secondProperty = second.getProperty(firstProperty.getName());
if ((firstProperty.getFetchPlan() != null) && (secondProperty.getFetchPlan() != null)) {
resultPropertyFetchPlan = intersectFetchPlans(firstProperty.getFetchPlan(), secondProperty.getFetchPlan());
}
if (resultPropertyFetchPlan == null) {
builder.add(firstProperty.getName());
} else {
builder.add(firstProperty.getName());
intersectFetchPlans(firstProperty.getFetchPlan(), secondProperty.getFetchPlan());
}
builder.add(firstProperty.getName());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,16 @@

import javax.annotation.PostConstruct;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

@JmixEntity(name = "audit_EntitySnapshotModel")
public class EntitySnapshotModel {
public class EntitySnapshotModel implements Serializable {
private static final long serialVersionUID = -8135122262155535927L;

@JmixGeneratedValue
@Id
private UUID id;
Expand Down

0 comments on commit 210de09

Please sign in to comment.