diff --git a/src/main/java/org/breedinginsight/brapps/importer/model/imports/experimentObservation/ExperimentObservation.java b/src/main/java/org/breedinginsight/brapps/importer/model/imports/experimentObservation/ExperimentObservation.java index 468782d47..85c21fb61 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/model/imports/experimentObservation/ExperimentObservation.java +++ b/src/main/java/org/breedinginsight/brapps/importer/model/imports/experimentObservation/ExperimentObservation.java @@ -29,9 +29,12 @@ import org.breedinginsight.brapps.importer.services.ExternalReferenceSource; import org.breedinginsight.model.BrAPIConstants; import org.breedinginsight.model.Program; +import org.breedinginsight.model.User; import org.breedinginsight.utilities.Utilities; import java.math.BigInteger; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.function.Supplier; @@ -110,14 +113,11 @@ public class ExperimentObservation implements BrAPIImport { @ImportFieldMetadata(id="obsUnitID", name="Observation Unit ID", description = "A database generated unique identifier for experimental observation units") private String obsUnitID; - public BrAPITrial constructBrAPITrial(Program program, boolean commit, String referenceSource, UUID id, String expSeqValue) { + public BrAPITrial constructBrAPITrial(Program program, User user, boolean commit, String referenceSource, UUID id, String expSeqValue) { BrAPIProgram brapiProgram = program.getBrapiProgram(); BrAPITrial trial = new BrAPITrial(); - if( commit ){ - trial.setTrialName( Utilities.appendProgramKey(getExpTitle(), program.getKey() )); - - // Set external reference - trial.setExternalReferences(getTrialExternalReferences(program, referenceSource, id)); + if (commit) { + setBrAPITrialCommitFields(program, trial, referenceSource, id); } else{ trial.setTrialName( getExpTitle() ); @@ -127,6 +127,10 @@ public BrAPITrial constructBrAPITrial(Program program, boolean commit, String re trial.setProgramDbId(brapiProgram.getProgramDbId()); trial.setProgramName(brapiProgram.getProgramName()); + Map createdBy = new HashMap<>(); + createdBy.put(BrAPIAdditionalInfoFields.CREATED_BY_USER_ID, user.getId().toString()); + createdBy.put(BrAPIAdditionalInfoFields.CREATED_BY_USER_NAME, user.getName()); + trial.putAdditionalInfoItem(BrAPIAdditionalInfoFields.CREATED_BY, createdBy); trial.putAdditionalInfoItem( BrAPIAdditionalInfoFields.DEFAULT_OBSERVATION_LEVEL, getExpUnit()); trial.putAdditionalInfoItem( BrAPIAdditionalInfoFields.EXPERIMENT_TYPE, getExpType()); trial.putAdditionalInfoItem( BrAPIAdditionalInfoFields.EXPERIMENT_NUMBER, expSeqValue); @@ -134,6 +138,18 @@ public BrAPITrial constructBrAPITrial(Program program, boolean commit, String re return trial; } + private void setBrAPITrialCommitFields(Program program, BrAPITrial trial, String referenceSource, UUID id) { + trial.setTrialName( Utilities.appendProgramKey(getExpTitle(), program.getKey() )); + + // Set external reference + trial.setExternalReferences(getTrialExternalReferences(program, referenceSource, id)); + + // Set createdDate field + LocalDateTime now = LocalDateTime.now(); + trial.putAdditionalInfoItem(BrAPIAdditionalInfoFields.CREATED_DATE, DateTimeFormatter.ISO_LOCAL_DATE.format(now)); + + } + public BrAPILocation constructBrAPILocation() { BrAPILocation location = new BrAPILocation(); location.setLocationName(getEnvLocation()); diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java index 1858d2b14..9051786db 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java @@ -153,7 +153,7 @@ public Map process( ValidationErrors validationErrors = new ValidationErrors(); // add "New" pending data to the BrapiData objects - getNewBrapiData(importRows, program, commit); + getNewBrapiData(importRows, program, user, commit); // For each import row for (int i = 0; i < importRows.size(); i++) { @@ -191,7 +191,7 @@ public Map process( return getStatisticsMap(importRows); } - private void getNewBrapiData(List importRows, Program program, boolean commit) { + private void getNewBrapiData(List importRows, Program program, User user, boolean commit) { String expSequenceName = program.getExpSequence(); if (expSequenceName == null) { @@ -210,7 +210,7 @@ private void getNewBrapiData(List importRows, Program program, bool for (BrAPIImport row : importRows) { ExperimentObservation importRow = (ExperimentObservation) row; - PendingImportObject trialPIO = createTrialPIO(program, commit, importRow, expNextVal); + PendingImportObject trialPIO = createTrialPIO(program, user, commit, importRow, expNextVal); this.trialByNameNoScope.put(importRow.getExpTitle(), trialPIO); String expSeqValue = null; @@ -442,7 +442,7 @@ private PendingImportObject createLocationPIO(ExperimentObservati return pio; } - private PendingImportObject createTrialPIO(Program program, boolean commit, ExperimentObservation importRow, Supplier expNextVal) { + private PendingImportObject createTrialPIO(Program program, User user, boolean commit, ExperimentObservation importRow, Supplier expNextVal) { PendingImportObject pio = null; if( trialByNameNoScope.containsKey( importRow.getExpTitle()) ) { pio = trialByNameNoScope.get( importRow.getExpTitle() ) ; @@ -453,7 +453,7 @@ private PendingImportObject createTrialPIO(Program program, boolean if(commit){ expSeqValue = expNextVal.get().toString(); } - BrAPITrial newTrial = importRow.constructBrAPITrial(program, commit, BRAPI_REFERENCE_SOURCE, id, expSeqValue); + BrAPITrial newTrial = importRow.constructBrAPITrial(program, user, commit, BRAPI_REFERENCE_SOURCE, id, expSeqValue); pio = new PendingImportObject<>(ImportObjectState.NEW, newTrial, id); } return pio;