Skip to content

Commit 0b7d253

Browse files
committed
MODLD-617: Fix code based on code review comments
1 parent 5c58e17 commit 0b7d253

File tree

2 files changed

+14
-24
lines changed

2 files changed

+14
-24
lines changed

src/main/java/org/folio/linked/data/service/resource/marc/ResourceMarcAuthorityServiceImpl.java

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -128,15 +128,17 @@ public Long saveMarcAuthority(org.folio.ld.dictionary.model.Resource modelResour
128128
var resource = resourceModelMapper.toEntity(modelResource);
129129
validateResource(resource);
130130

131-
if (existsBySrsIdAndIdUnchanged(resource)) {
132-
return updateAuthority(resource);
133-
}
131+
var srsId = resource.getFolioMetadata().getSrsId();
132+
return getResourceIdBySrsId(srsId)
133+
.map(existingResourceId -> replaceOrUpdate(resource, existingResourceId))
134+
.orElseGet(() -> createAuthority(resource));
135+
}
134136

135-
if (existsBySrsId(resource)) {
136-
return replaceAuthority(resource);
137+
private Long replaceOrUpdate(Resource incomingResource, Long existingResourceId) {
138+
if (existingResourceId.equals(incomingResource.getId())) {
139+
return updateAuthority(incomingResource);
137140
}
138-
139-
return createAuthority(resource);
141+
return replaceAuthority(incomingResource);
140142
}
141143

142144
private static void validateResource(Resource resource) {
@@ -154,21 +156,11 @@ private static void logAndThrow(String message) {
154156
throw new IllegalArgumentException(message);
155157
}
156158

157-
private boolean existsBySrsIdAndIdUnchanged(Resource resource) {
158-
var id = resource.getId();
159-
var srsId = resource.getFolioMetadata().getSrsId();
160-
return resourceRepo.existsById(id) && getIdBySrsId(srsId).filter(id::equals).isPresent();
161-
}
162-
163-
private Optional<Long> getIdBySrsId(String srsId) {
159+
private Optional<Long> getResourceIdBySrsId(String srsId) {
164160
return folioMetadataRepository.findIdBySrsId(srsId)
165161
.map(FolioMetadataRepository.IdOnly::getId);
166162
}
167163

168-
private boolean existsBySrsId(Resource resource) {
169-
return folioMetadataRepository.existsBySrsId(resource.getFolioMetadata().getSrsId());
170-
}
171-
172164
private Long updateAuthority(Resource resource) {
173165
var id = resource.getId();
174166
var srsId = resource.getFolioMetadata().getSrsId();

src/test/java/org/folio/linked/data/service/resource/marc/ResourceMarcAuthorityServiceImplTest.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ void fetchAuthorityOrCreateFromSrsRecord_shouldThrowNotFound_ifRecordNotExistsIn
160160
}
161161

162162
@Test
163-
void saveMarcAuthority_shouldCreateNewAuthority_ifGivenModelDoesNotExistsByIdAndSrsId() {
163+
void saveMarcAuthority_shouldCreateNewAuthority_ifGivenModelDoesNotExistsBySrsId() {
164164
// given
165165
var id = randomLong();
166166
var srsId = UUID.randomUUID().toString();
@@ -169,8 +169,8 @@ void saveMarcAuthority_shouldCreateNewAuthority_ifGivenModelDoesNotExistsByIdAnd
169169
var mapped = new Resource().setId(id).addTypes(PERSON);
170170
mapped.setFolioMetadata(new org.folio.linked.data.model.entity.FolioMetadata(mapped).setSrsId(srsId));
171171
doReturn(mapped).when(resourceModelMapper).toEntity(model);
172-
doReturn(false).when(resourceRepo).existsById(id);
173172
doReturn(mapped).when(resourceGraphService).saveMergingGraph(mapped);
173+
doReturn(Optional.empty()).when(folioMetadataRepo).findIdBySrsId(srsId);
174174

175175
// when
176176
var result = resourceMarcAuthorityService.saveMarcAuthority(model);
@@ -191,7 +191,6 @@ void saveMarcAuthority_shouldUpdateAuthority_ifGivenModelExistsByIdAndSrsId() {
191191
var mapped = new Resource().setId(id).addTypes(PERSON);
192192
mapped.setFolioMetadata(new org.folio.linked.data.model.entity.FolioMetadata(mapped).setSrsId(srsId));
193193
doReturn(mapped).when(resourceModelMapper).toEntity(model);
194-
doReturn(true).when(resourceRepo).existsById(id);
195194
doReturn(Optional.of((FolioMetadataRepository.IdOnly) () -> id)).when(folioMetadataRepo).findIdBySrsId(srsId);
196195
doReturn(mapped).when(resourceGraphService).saveMergingGraph(mapped);
197196

@@ -212,15 +211,14 @@ void saveMarcAuthority_shouldCreateNewAuthorityVersionAndMarkOldAsObsolete_ifGiv
212211
var existed = new Resource().setId(id).setManaged(true);
213212
existed.setFolioMetadata(new org.folio.linked.data.model.entity.FolioMetadata(existed));
214213
doReturn(of(existed)).when(resourceRepo).findByFolioMetadataSrsId(srsId);
215-
doReturn(true).when(folioMetadataRepo).existsBySrsId(srsId);
216214
var model = new org.folio.ld.dictionary.model.Resource()
217215
.setId(id)
218216
.setFolioMetadata(new FolioMetadata().setSrsId(srsId));
219217
var mapped = new Resource().setId(id).addTypes(PERSON);
220218
mapped.setFolioMetadata(new org.folio.linked.data.model.entity.FolioMetadata(mapped).setSrsId(srsId));
221219
doReturn(mapped).when(resourceModelMapper).toEntity(model);
222-
doReturn(false).when(resourceRepo).existsById(id);
223-
220+
var anotherResourceId = Optional.of((FolioMetadataRepository.IdOnly) () -> id - 1);
221+
doReturn(anotherResourceId).when(folioMetadataRepo).findIdBySrsId(srsId);
224222
doReturn(mapped).when(resourceGraphService).saveMergingGraph(mapped);
225223

226224
// when

0 commit comments

Comments
 (0)