Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,5 @@ public final class BrAPIAdditionalInfoFields {
public static final String OBSERVATION_DATASET_ID = "observationDatasetId";
public static final String FEMALE_PARENT_UNKNOWN = "femaleParentUnknown";
public static final String MALE_PARENT_UNKNOWN = "maleParentUnknown";
public static final String GID = "gid";
}
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ public Dataset getDatasetData(Program program, UUID experimentId, UUID datsetId,

// TODO: Once BI-1831 is complete and OUs in a dataset can be identified using the datasetId stored as a xref
// the expOUs needs to be replaced with datasetOUs, as was done with datasetObsVars
List<BrAPIObservationUnit> expOUs = ouDAO.getObservationUnitsForTrialDbId(program.getId(), experiment.getTrialDbId());
List<BrAPIObservationUnit> expOUs = ouDAO.getObservationUnitsForTrialDbId(program.getId(), experiment.getTrialDbId(), true);
List<BrAPIObservationVariable> datasetObsVars = getDatasetObsVars(datsetId.toString(), program);
List<String> ouDbIds = expOUs.stream().map(BrAPIObservationUnit::getObservationUnitDbId).collect(Collectors.toList());
List<String> obsVarDbIds = datasetObsVars.stream().map(BrAPIObservationVariable::getObservationVariableDbId).collect(Collectors.toList());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@
import io.micronaut.context.annotation.Property;
import org.brapi.client.v2.model.exceptions.ApiException;
import org.brapi.client.v2.modules.phenotype.ObservationUnitsApi;
import org.brapi.v2.model.germ.BrAPIGermplasm;
import org.brapi.v2.model.pheno.BrAPIObservationUnit;
import org.brapi.v2.model.pheno.request.BrAPIObservationUnitSearchRequest;
import org.breedinginsight.brapi.v2.constants.BrAPIAdditionalInfoFields;
import org.breedinginsight.brapi.v2.services.BrAPIGermplasmService;
import org.breedinginsight.brapps.importer.model.ImportUpload;
import org.breedinginsight.brapps.importer.services.ExternalReferenceSource;
import org.breedinginsight.daos.ProgramDAO;
Expand All @@ -43,17 +46,19 @@ public class BrAPIObservationUnitDAO {
private final BrAPIDAOUtil brAPIDAOUtil;
private final BrAPIEndpointProvider brAPIEndpointProvider;
private final ProgramService programService;
private final BrAPIGermplasmService germplasmService;

private final String referenceSource;

@Inject
public BrAPIObservationUnitDAO(ProgramDAO programDAO, ImportDAO importDAO, BrAPIDAOUtil brAPIDAOUtil, BrAPIEndpointProvider brAPIEndpointProvider, ProgramService programService, @Property(name = "brapi.server.reference-source") String referenceSource) {
public BrAPIObservationUnitDAO(ProgramDAO programDAO, ImportDAO importDAO, BrAPIDAOUtil brAPIDAOUtil, BrAPIEndpointProvider brAPIEndpointProvider, BrAPIGermplasmService germplasmService, ProgramService programService, @Property(name = "brapi.server.reference-source") String referenceSource) {
this.programDAO = programDAO;
this.importDAO = importDAO;
this.brAPIDAOUtil = brAPIDAOUtil;
this.brAPIEndpointProvider = brAPIEndpointProvider;
this.referenceSource = referenceSource;
this.programService = programService;
this.germplasmService = germplasmService;
}

public List<BrAPIObservationUnit> getObservationUnitByName(List<String> observationUnitNames, Program program) throws ApiException {
Expand Down Expand Up @@ -105,7 +110,12 @@ public List<BrAPIObservationUnit> getObservationUnitsForStudyDbId(@NotNull Strin
api::searchObservationunitsSearchResultsDbIdGet,
observationUnitSearchRequest);
}

public List<BrAPIObservationUnit> getObservationUnitsForTrialDbId(@NotNull UUID programId, @NotNull String trialDbId) throws ApiException, DoesNotExistException {
return getObservationUnitsForTrialDbId(programId, trialDbId, false);
}

public List<BrAPIObservationUnit> getObservationUnitsForTrialDbId(@NotNull UUID programId, @NotNull String trialDbId, boolean withGID) throws ApiException, DoesNotExistException {
Program program = programService.getById(programId).orElseThrow(() -> new DoesNotExistException("Program id does not exist"));

BrAPIObservationUnitSearchRequest observationUnitSearchRequest = new BrAPIObservationUnitSearchRequest();
Expand All @@ -114,8 +124,19 @@ public List<BrAPIObservationUnit> getObservationUnitsForTrialDbId(@NotNull UUID
observationUnitSearchRequest.trialDbIds(List.of(trialDbId));

ObservationUnitsApi api = brAPIEndpointProvider.get(programDAO.getCoreClient(program.getId()), ObservationUnitsApi.class);
return brAPIDAOUtil.search(api::searchObservationunitsPost,
List<BrAPIObservationUnit> observationUnits = brAPIDAOUtil.search(api::searchObservationunitsPost,
api::searchObservationunitsSearchResultsDbIdGet,
observationUnitSearchRequest);
if( withGID ){
// Load germplasm for program into map.
// TODO: if we use redis search, that may be more efficient than loading all germplasm for the program.
HashMap<String, BrAPIGermplasm> germplasmByDbId = new HashMap<>();
this.germplasmService.getGermplasm(programId).forEach((germplasm -> germplasmByDbId.put(germplasm.getGermplasmDbId(), germplasm)));
for (BrAPIObservationUnit observationUnit: observationUnits) {
BrAPIGermplasm germplasm = germplasmByDbId.get(observationUnit.getGermplasmDbId());
observationUnit.putAdditionalInfoItem(BrAPIAdditionalInfoFields.GID, germplasm.getAccessionNumber());
}
}
return observationUnits;
}
}