Skip to content
This repository was archived by the owner on Aug 1, 2025. It is now read-only.

Commit a3e3835

Browse files
authored
Merge pull request #26 from Breeding-Insight/release/0.9
Merge changes from Release/0.9 into develop
2 parents 0c5b914 + ed22fdd commit a3e3835

File tree

3 files changed

+15
-94
lines changed

3 files changed

+15
-94
lines changed

src/main/java/org/brapi/test/BrAPITestServer/service/pheno/ObservationService.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -272,16 +272,16 @@ public ObservationEntity getObservationEntity(String observationDbId, HttpStatus
272272
}
273273

274274
public List<Observation> saveObservations(@Valid List<ObservationNewRequest> requests) throws BrAPIServerException {
275-
List<Observation> savedObservations = new ArrayList<>();
276-
275+
List<ObservationEntity> toSave = new ArrayList<>();
277276
for (ObservationNewRequest request : requests) {
278277
ObservationEntity entity = new ObservationEntity();
279-
updateEntity(entity, request);
280-
ObservationEntity savedEntity = observationRepository.save(entity);
281-
savedObservations.add(convertFromEntity(savedEntity));
278+
updateEntity(entity, request); // TODO: does updateEntity need to hit the database?
279+
toSave.add(entity);
282280
}
283-
284-
return savedObservations;
281+
return observationRepository.saveAllAndFlush(toSave)
282+
.stream()
283+
.map(this::convertFromEntity)
284+
.collect(Collectors.toList());
285285
}
286286

287287
public List<Observation> updateObservations(@Valid Map<String, ObservationNewRequest> requests)

src/main/java/org/brapi/test/BrAPITestServer/service/pheno/ObservationUnitService.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -332,16 +332,17 @@ public ObservationUnitEntity getObservationUnitEntity(String observationUnitDbId
332332

333333
public List<ObservationUnit> saveObservationUnits(@Valid List<ObservationUnitNewRequest> requests)
334334
throws BrAPIServerException {
335-
List<ObservationUnit> savedObservationUnits = new ArrayList<>();
336-
335+
List<ObservationUnitEntity> toSave = new ArrayList<>();
337336
for (ObservationUnitNewRequest request : requests) {
338337
ObservationUnitEntity entity = new ObservationUnitEntity();
339-
updateEntity(entity, request);
340-
ObservationUnitEntity savedEntity = observationUnitRepository.save(entity);
341-
savedObservationUnits.add(convertFromEntity(savedEntity));
338+
updateEntity(entity, request); // TODO: does updateEntity need to hit the database?
339+
toSave.add(entity);
342340
}
343341

344-
return savedObservationUnits;
342+
return observationUnitRepository.saveAllAndFlush(toSave)
343+
.stream()
344+
.map(this::convertFromEntity)
345+
.collect(Collectors.toList());
345346
}
346347

347348
public List<ObservationUnit> updateObservationUnits(@Valid Map<String, ObservationUnitNewRequest> requests)

src/main/java/org/brapi/test/BrAPITestServer/service/pheno/ObservationVariableService.java

Lines changed: 1 addition & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
package org.brapi.test.BrAPITestServer.service.pheno;
22

33
import java.util.*;
4-
import java.util.stream.Collectors;
54

65
import jakarta.validation.Valid;
76

87
import org.brapi.test.BrAPITestServer.exceptions.BrAPIServerDbIdNotFoundException;
98
import org.brapi.test.BrAPITestServer.exceptions.BrAPIServerException;
10-
import org.brapi.test.BrAPITestServer.model.entity.BrAPIBaseEntity;
11-
import org.brapi.test.BrAPITestServer.model.entity.ExternalReferenceEntity;
129
import org.brapi.test.BrAPITestServer.model.entity.core.CropEntity;
1310
import org.brapi.test.BrAPITestServer.model.entity.pheno.*;
1411
import org.brapi.test.BrAPITestServer.repository.core.TraitRepository;
@@ -24,7 +21,6 @@
2421
import org.slf4j.LoggerFactory;
2522
import org.springframework.beans.factory.annotation.Autowired;
2623
import org.springframework.data.domain.Page;
27-
import org.springframework.data.domain.PageRequest;
2824
import org.springframework.data.domain.Pageable;
2925
import org.springframework.http.HttpStatus;
3026
import org.springframework.stereotype.Service;
@@ -143,14 +139,7 @@ public List<ObservationVariable> findObservationVariables(ObservationVariableSea
143139
log.debug("Starting variable search");
144140
Page<ObservationVariableEntity> page = observationVariableRepository.findAllBySearch(searchQuery, pageReq);
145141
log.debug("Variable search complete");
146-
if(!page.isEmpty()) {
147-
observationVariableRepository.fetchXrefs(page, ObservationVariableEntity.class);
148-
fetchSynonyms(page);
149-
fetchMethodXrefs(page);
150-
fetchScaleXrefs(page);
151-
fetchScaleValidValueCategories(page);
152-
fetchTraitXrefs(page);
153-
}
142+
154143

155144
log.debug("converting "+page.getSize()+" entities");
156145
List<ObservationVariable> observationVariables = page.map(this::convertFromEntity).getContent();
@@ -159,75 +148,6 @@ public List<ObservationVariable> findObservationVariables(ObservationVariableSea
159148
return observationVariables;
160149
}
161150

162-
public void fetchSynonyms(Page<ObservationVariableEntity> page) {
163-
SearchQueryBuilder<ObservationVariableEntity> searchQuery = new SearchQueryBuilder<>(ObservationVariableEntity.class);
164-
searchQuery.leftJoinFetch("synonyms", "synonyms")
165-
.appendList(page.stream().map(BrAPIBaseEntity::getId).collect(Collectors.toList()), "id");
166-
167-
Page<ObservationVariableEntity> synonyms = observationVariableRepository.findAllBySearch(searchQuery, PageRequest.of(0, page.getSize()));
168-
169-
Map<String, List<String>> synonymsByVar = new HashMap<>();
170-
synonyms.forEach(entity -> synonymsByVar.put(entity.getId(), entity.getSynonyms()));
171-
172-
page.forEach(entity -> entity.setSynonyms(synonymsByVar.get(entity.getMethod().getId())));
173-
}
174-
175-
public void fetchMethodXrefs(Page<ObservationVariableEntity> page) {
176-
SearchQueryBuilder<MethodEntity> searchQuery = new SearchQueryBuilder<>(MethodEntity.class);
177-
searchQuery.leftJoinFetch("externalReferences", "externalReferences")
178-
.join("variables", "variables")
179-
.appendList(page.stream().map(BrAPIBaseEntity::getId).collect(Collectors.toList()), "*variables.id");
180-
181-
Page<MethodEntity> xrefs = methodRepository.findAllBySearch(searchQuery, PageRequest.of(0, page.getSize()));
182-
183-
Map<String, List<ExternalReferenceEntity>> xrefByEntity = new HashMap<>();
184-
xrefs.forEach(entity -> xrefByEntity.put(entity.getId(), entity.getExternalReferences()));
185-
186-
page.forEach(entity -> entity.getMethod().setExternalReferences(xrefByEntity.get(entity.getMethod().getId())));
187-
}
188-
189-
public void fetchScaleXrefs(Page<ObservationVariableEntity> page) {
190-
SearchQueryBuilder<ScaleEntity> searchQuery = new SearchQueryBuilder<>(ScaleEntity.class);
191-
searchQuery.leftJoinFetch("externalReferences", "externalReferences")
192-
.join("variables", "variables")
193-
.appendList(page.stream().map(BrAPIBaseEntity::getId).collect(Collectors.toList()), "*variables.id");
194-
195-
Page<ScaleEntity> xrefs = scaleRepository.findAllBySearch(searchQuery, PageRequest.of(0, page.getSize()));
196-
197-
Map<String, List<ExternalReferenceEntity>> xrefByEntity = new HashMap<>();
198-
xrefs.forEach(entity -> xrefByEntity.put(entity.getId(), entity.getExternalReferences()));
199-
200-
page.forEach(entity -> entity.getScale().setExternalReferences(xrefByEntity.get(entity.getMethod().getId())));
201-
}
202-
203-
public void fetchScaleValidValueCategories(Page<ObservationVariableEntity> page) {
204-
SearchQueryBuilder<ScaleEntity> searchQuery = new SearchQueryBuilder<>(ScaleEntity.class);
205-
searchQuery.leftJoinFetch("validValueCategories", "validValueCategories")
206-
.join("variables", "variables")
207-
.appendList(page.stream().map(BrAPIBaseEntity::getId).collect(Collectors.toList()), "*variables.id");
208-
209-
Page<ScaleEntity> validValueCategories = scaleRepository.findAllBySearch(searchQuery, PageRequest.of(0, page.getSize()));
210-
211-
Map<String, List<ScaleValidValueCategoryEntity>> infoByEntity = new HashMap<>();
212-
validValueCategories.forEach(entity -> infoByEntity.put(entity.getId(), entity.getValidValueCategories()));
213-
214-
page.forEach(entity -> entity.getScale().setValidValueCategories(infoByEntity.get(entity.getId())));
215-
}
216-
217-
public void fetchTraitXrefs(Page<ObservationVariableEntity> page) {
218-
SearchQueryBuilder<TraitEntity> searchQuery = new SearchQueryBuilder<>(TraitEntity.class);
219-
searchQuery.leftJoinFetch("externalReferences", "externalReferences")
220-
.join("variables", "variables")
221-
.appendList(page.stream().map(BrAPIBaseEntity::getId).collect(Collectors.toList()), "*variables.id");
222-
223-
Page<TraitEntity> xrefs = traitRepository.findAllBySearch(searchQuery, PageRequest.of(0, page.getSize()));
224-
225-
Map<String, List<ExternalReferenceEntity>> xrefByEntity = new HashMap<>();
226-
xrefs.forEach(entity -> xrefByEntity.put(entity.getId(), entity.getExternalReferences()));
227-
228-
page.forEach(entity -> entity.getTrait().setExternalReferences(xrefByEntity.get(entity.getMethod().getId())));
229-
}
230-
231151
public List<ObservationVariable> saveObservationVariables(@Valid List<ObservationVariableNewRequest> body)
232152
throws BrAPIServerException {
233153
List<ObservationVariable> savedObservationVariables = new ArrayList<>();

0 commit comments

Comments
 (0)