Skip to content

Commit 90c81e2

Browse files
Refactoring
1 parent 05ab514 commit 90c81e2

1 file changed

Lines changed: 31 additions & 13 deletions

File tree

  • spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/working

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/working/RecursiveWorkingCopier.java

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@
5151
/**
5252
* Creates copies and puts them back. Recognizes already persisted Objects and checks them for changes as well.
5353
*/
54-
public class RecursiveWorkingCopier<T, ID> implements WorkingCopier<T>
54+
@SuppressWarnings("PMD.GodClass")
55+
public class RecursiveWorkingCopier<T> implements WorkingCopier<T>
5556
{
5657
private static final Logger LOG = LoggerFactory.getLogger(RecursiveWorkingCopier.class);
5758
private final RegisteringObjectCopier workingCopyToStorageCopier;
@@ -148,12 +149,13 @@ public <E> E getOrCreateObjectForDatastore(
148149
final E originalObject = this.registry.getOriginalObjectFromWorkingCopy(workingCopy);
149150
if(originalObject != null)
150151
{
151-
if(mergeValues)
152-
{
153-
this.mergeValues(workingCopy, originalObject, alreadyMergedTargets, changedCollector);
154-
}
155-
changedCollector.collectChangedObject(originalObject);
156-
return originalObject;
152+
return this.mergeValueIfNeeded(
153+
workingCopy,
154+
mergeValues,
155+
alreadyMergedTargets,
156+
changedCollector,
157+
originalObject
158+
);
157159
}
158160

159161
final Object id = idManager.getId(workingCopy);
@@ -164,12 +166,13 @@ public <E> E getOrCreateObjectForDatastore(
164166
final Optional<E> existingEntity = idManager.findById(id);
165167
if(existingEntity.isPresent())
166168
{
167-
if(mergeValues)
168-
{
169-
this.mergeValues(workingCopy, existingEntity.get(), alreadyMergedTargets, changedCollector);
170-
}
171-
changedCollector.collectChangedObject(existingEntity.get());
172-
return existingEntity.get();
169+
return this.mergeValueIfNeeded(
170+
workingCopy,
171+
mergeValues,
172+
alreadyMergedTargets,
173+
changedCollector,
174+
existingEntity.get()
175+
);
173176
}
174177
}
175178

@@ -183,6 +186,21 @@ public <E> E getOrCreateObjectForDatastore(
183186
return objectForDatastore;
184187
}
185188

189+
private <E> E mergeValueIfNeeded(
190+
final E workingCopy,
191+
final boolean mergeValues,
192+
final MergedTargetsCollector alreadyMergedTargets,
193+
final ChangedObjectCollector changedCollector,
194+
final E existingEntity)
195+
{
196+
if(mergeValues)
197+
{
198+
this.mergeValues(workingCopy, existingEntity, alreadyMergedTargets, changedCollector);
199+
}
200+
changedCollector.collectChangedObject(existingEntity);
201+
return existingEntity;
202+
}
203+
186204
@Override
187205
public T getOriginal(final T workingCopy)
188206
{

0 commit comments

Comments
 (0)