From e0950ca17059e1726a53f17470a9b9c77a1719a2 Mon Sep 17 00:00:00 2001 From: gellisamson Date: Mon, 24 Aug 2020 19:42:09 +0800 Subject: [PATCH 1/6] Resolve projectprop value from GeolocationProperty IBP-3322-ImportExperimentDesignValues --- .../middleware/operation/builder/WorkbookBuilder.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/generationcp/middleware/operation/builder/WorkbookBuilder.java b/src/main/java/org/generationcp/middleware/operation/builder/WorkbookBuilder.java index c328ff8859..cb3c9c19c4 100644 --- a/src/main/java/org/generationcp/middleware/operation/builder/WorkbookBuilder.java +++ b/src/main/java/org/generationcp/middleware/operation/builder/WorkbookBuilder.java @@ -372,7 +372,13 @@ public Workbook createStudyVariableSettings(final int id) { if (PhenotypicType.TRIAL_ENVIRONMENT == varType.getRole()) { value = projectProperty.getValue(); if (value == null) { - value = StringUtils.EMPTY; + // During import of study, experiment design values are not set in ProjectProperty so we resolve them from GeolocationProperty + if (VariableType.ENVIRONMENT_DETAIL.equals(varType)) { + final GeolocationPropertyDao geolocationPropertyDao = this.daoFactory.getGeolocationPropertyDao(); + value = geolocationPropertyDao.getGeolocationPropValue(stdVariable.getId(), id); + } else { + value = StringUtils.EMPTY; + } } } else if (PhenotypicType.VARIATE == varType.getRole()) {// TODO traits // constants, no need to retrieve the value if it's a trial study From 60a90691c5f31026a70d80c7018ba672f66e80a3 Mon Sep 17 00:00:00 2001 From: gellisamson Date: Mon, 24 Aug 2020 19:42:54 +0800 Subject: [PATCH 2/6] Code cleanup IBP-3322-ImportExperimentDesignValues --- .../middleware/operation/builder/WorkbookBuilder.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/generationcp/middleware/operation/builder/WorkbookBuilder.java b/src/main/java/org/generationcp/middleware/operation/builder/WorkbookBuilder.java index cb3c9c19c4..9d0efb7bd7 100644 --- a/src/main/java/org/generationcp/middleware/operation/builder/WorkbookBuilder.java +++ b/src/main/java/org/generationcp/middleware/operation/builder/WorkbookBuilder.java @@ -741,6 +741,7 @@ private List removeConstantsFromVariates( for (final MeasurementVariable constant : constants) { if (variate.getTermId() == constant.getTermId()) { found = true; + break; } } } From daf211d81da79c08cebca62955daf5e181071141 Mon Sep 17 00:00:00 2001 From: gellisamson Date: Wed, 26 Aug 2020 12:14:54 +0800 Subject: [PATCH 3/6] Set Role of Experimental Design Variables to TRIAL_ENVIRONMENT during import IBP-3322-ImportExperimentDesignValues --- .../builder/StandardVariableBuilder.java | 6 +++++- .../builder/StandardVariableBuilderTest.java | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/generationcp/middleware/operation/builder/StandardVariableBuilder.java b/src/main/java/org/generationcp/middleware/operation/builder/StandardVariableBuilder.java index a2990f0ac7..53ac106d5a 100644 --- a/src/main/java/org/generationcp/middleware/operation/builder/StandardVariableBuilder.java +++ b/src/main/java/org/generationcp/middleware/operation/builder/StandardVariableBuilder.java @@ -407,7 +407,11 @@ private void removeHeaderNamesWithMatch( protected void setRoleOfVariables(final List variables, final Map varIdsWithType) { for (final StandardVariable standardVariable : variables) { final VariableType type = varIdsWithType.get(standardVariable.getId()); - if (type != null) { + // Experimental Design Variables will have Trial_Environment phenotypic type + final int standardVarialbeId = standardVariable.getId(); + if (WorkbookBuilder.EXPERIMENTAL_DESIGN_VARIABLES.contains(standardVarialbeId)) { + standardVariable.setPhenotypicType(PhenotypicType.TRIAL_ENVIRONMENT); + } else if(type != null) { standardVariable.setPhenotypicType(type.getRole()); } } diff --git a/src/test/java/org/generationcp/middleware/operation/builder/StandardVariableBuilderTest.java b/src/test/java/org/generationcp/middleware/operation/builder/StandardVariableBuilderTest.java index 6ab6f27442..c54d941439 100644 --- a/src/test/java/org/generationcp/middleware/operation/builder/StandardVariableBuilderTest.java +++ b/src/test/java/org/generationcp/middleware/operation/builder/StandardVariableBuilderTest.java @@ -390,6 +390,24 @@ public void testSetRoleOfVariablesVariableTypeIsAssigned() { } + @Test + public void testSetRoleOfVariablesVariableTypeForExperimentalVariables() { + + final StandardVariable nblks = standardVariableBuilder.create(TermId.NBLKS.getId(), null); + final List standardVariables = new ArrayList<>(); + standardVariables.add(nblks); + + // Assign the nblks to VariableType.EXPERIMENTAL_DESIGN + final Map variableTypeMap = new HashMap<>(); + variableTypeMap.put(TermId.NBLKS.getId(), VariableType.EXPERIMENTAL_DESIGN); + + standardVariableBuilder.setRoleOfVariables(standardVariables, variableTypeMap); + + // The phenotypicType (role) of trialInstanceFactor should be from VariableType.ENVIRONMENT_DETAIL + Assert.assertEquals(VariableType.ENVIRONMENT_DETAIL.getRole(), nblks.getPhenotypicType()); + + } + private DmsProject createDMSProject() { final DmsProject dmsProject = new DmsProject(); From 67344bb5c882597351161a3d5e530f590377e5db Mon Sep 17 00:00:00 2001 From: gellisamson Date: Wed, 26 Aug 2020 12:18:09 +0800 Subject: [PATCH 4/6] Code cleanup IBP-3322-ImportExperimentDesignValues --- .../builder/StandardVariableBuilder.java | 31 +++++++-------- .../builder/StandardVariableBuilderTest.java | 38 +++++++++---------- 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/src/main/java/org/generationcp/middleware/operation/builder/StandardVariableBuilder.java b/src/main/java/org/generationcp/middleware/operation/builder/StandardVariableBuilder.java index 53ac106d5a..9f954b17de 100644 --- a/src/main/java/org/generationcp/middleware/operation/builder/StandardVariableBuilder.java +++ b/src/main/java/org/generationcp/middleware/operation/builder/StandardVariableBuilder.java @@ -59,7 +59,7 @@ public class StandardVariableBuilder extends Builder { public StandardVariableBuilder(final HibernateSessionProvider sessionProviderForLocal) { super(sessionProviderForLocal); - daoFactory = new DaoFactory(sessionProviderForLocal); + this.daoFactory = new DaoFactory(sessionProviderForLocal); } public StandardVariable create(final int standardVariableId, final String programUUID) { @@ -127,7 +127,7 @@ private void specialProcessing(final List summaries) { // Now this relationship is linked to the "Property" of the standard variable. (facepalm). if (summary.getProperty() != null) { final List propertyCvTermRelationships = - daoFactory.getCvTermRelationshipDao().getBySubject(summary.getProperty().getId()); + this.daoFactory.getCvTermRelationshipDao().getBySubject(summary.getProperty().getId()); final Term isAOfProperty = this.createTerm(propertyCvTermRelationships, TermId.IS_A); if (isAOfProperty != null) { summary.setIsA(new TermSummary(isAOfProperty.getId(), isAOfProperty.getName(), isAOfProperty.getDefinition())); @@ -150,7 +150,7 @@ public String getCropOntologyId(final Term term) { } final CVTermProperty property = - daoFactory.getCvTermPropertyDao().getOneByCvTermAndType(term.getId(), TermId.CROP_ONTOLOGY_ID.getId()); + this.daoFactory.getCvTermPropertyDao().getOneByCvTermAndType(term.getId(), TermId.CROP_ONTOLOGY_ID.getId()); if (property != null) { cropOntologyId = property.getValue(); } @@ -192,7 +192,7 @@ public List createTermProperties(final int cvTermId) { } private CVTerm getCvTerm(final int id) { - return daoFactory.getCvTermDao().getById(id); + return this.daoFactory.getCvTermDao().getById(id); } public StandardVariable findOrSave( @@ -287,7 +287,7 @@ public VariableType mapPhenotypicTypeToDefaultVariableType(final PhenotypicType } public StandardVariable getByName(final String name, final String programUUID) { - final CVTerm cvTerm = daoFactory.getCvTermDao().getByNameAndCvId(name, CvId.VARIABLES.getId()); + final CVTerm cvTerm = this.daoFactory.getCvTermDao().getByNameAndCvId(name, CvId.VARIABLES.getId()); if (cvTerm != null && cvTerm.getCvTermId() != null) { return this.getStandardVariableBuilder().create(cvTerm.getCvTermId(), programUUID); } @@ -319,8 +319,7 @@ public StandardVariable getByPropertyScaleMethodRole( } public Integer getIdByPropertyScaleMethod(final Integer propertyId, final Integer scaleId, final Integer methodId) { - Integer stdVariableId = null; - stdVariableId = daoFactory.getCvTermDao().getStandadardVariableIdByPropertyScaleMethod(propertyId, scaleId, methodId, "DESC"); + final Integer stdVariableId = this.daoFactory.getCvTermDao().getStandadardVariableIdByPropertyScaleMethod(propertyId, scaleId, methodId, "DESC"); return stdVariableId; } @@ -333,7 +332,7 @@ public Map> getStandardVariablesInProjects(final // Trim all header names final List headerNamesTrimmed = new ArrayList<>(Lists.transform(headerNames, new Function() { - public String apply(String s) { + public String apply(final String s) { // Transform header names to uppercase; header names can be in lowercase or combination when defined in file return s.toUpperCase().trim(); } @@ -439,39 +438,37 @@ public Map> getStandardVariableIdsWithTypeByA public Map> getStandardVariableIdsWithTypeForTerms(final List termNames) { if (!termNames.isEmpty()) { - return daoFactory.getCvTermDao().getTermIdsWithTypeByNameOrSynonyms(termNames, CvId.VARIABLES.getId()); + return this.daoFactory.getCvTermDao().getTermIdsWithTypeByNameOrSynonyms(termNames, CvId.VARIABLES.getId()); } return new HashMap<>(); } public Map> getStandardVariableIdsForTraits(final List traitNames) { if (!traitNames.isEmpty()) { - return daoFactory.getCvTermDao().getStandardVariableIdsWithTypeByProperties(traitNames); + return this.daoFactory.getCvTermDao().getStandardVariableIdsWithTypeByProperties(traitNames); } return new HashMap<>(); } public Integer getIdByTermId(final int cvTermId, final TermId termId) { - Integer stdVariableId = null; - stdVariableId = daoFactory.getCvTermDao().getStandardVariableIdByTermId(cvTermId, termId); + final Integer stdVariableId = this.daoFactory.getCvTermDao().getStandardVariableIdByTermId(cvTermId, termId); return stdVariableId; } public CVTerm getCvTerm(final String name, final int cvId) { - return daoFactory.getCvTermDao().getByNameAndCvId(name, cvId); + return this.daoFactory.getCvTermDao().getByNameAndCvId(name, cvId); } public Integer getIdByPropertyScaleMethodRole( final Integer propertyId, final Integer scaleId, final Integer methodId, final PhenotypicType role) { - Integer stdVariableId = null; - stdVariableId = daoFactory.getCvTermDao().getStandadardVariableIdByPropertyScaleMethodRole(propertyId, scaleId, methodId, role); + final Integer stdVariableId = this.daoFactory.getCvTermDao().getStandadardVariableIdByPropertyScaleMethodRole(propertyId, scaleId, methodId, role); return stdVariableId; } public boolean validateEnumerationUsage(final int standardVariableId, final int enumerationId) { final Integer storedInId = - daoFactory.getCvTermRelationshipDao().getObjectIdByTypeAndSubject(TermId.STORED_IN.getId(), standardVariableId).get(0); + this.daoFactory.getCvTermRelationshipDao().getObjectIdByTypeAndSubject(TermId.STORED_IN.getId(), standardVariableId).get(0); final String value = String.valueOf(enumerationId); if (storedInId == TermId.STUDY_INFO_STORAGE.getId() || storedInId == TermId.DATASET_INFO_STORAGE.getId()) { return !this.isExistsPropertyByTypeAndValue(standardVariableId, value); @@ -516,6 +513,6 @@ private boolean isExistsPhenotypeByTypeAndValue(final Integer variateId, final S } public List findAllByProperty(final int propertyId) { - return new ArrayList<>(daoFactory.getCvTermDao().getStandardVariablesOfProperty(propertyId)); + return new ArrayList<>(this.daoFactory.getCvTermDao().getStandardVariablesOfProperty(propertyId)); } } diff --git a/src/test/java/org/generationcp/middleware/operation/builder/StandardVariableBuilderTest.java b/src/test/java/org/generationcp/middleware/operation/builder/StandardVariableBuilderTest.java index c54d941439..5e79362e6d 100644 --- a/src/test/java/org/generationcp/middleware/operation/builder/StandardVariableBuilderTest.java +++ b/src/test/java/org/generationcp/middleware/operation/builder/StandardVariableBuilderTest.java @@ -69,7 +69,7 @@ public void setUp() { @Test public void testCreate() { - final StandardVariable standardVariable = standardVariableBuilder.create(TermId.TRIAL_INSTANCE_FACTOR.getId(), null); + final StandardVariable standardVariable = this.standardVariableBuilder.create(TermId.TRIAL_INSTANCE_FACTOR.getId(), null); assertNotNull(standardVariable); assertEquals(TermId.TRIAL_INSTANCE_FACTOR.getId(), standardVariable.getId()); assertEquals(TRIAL_INSTANCE_PROPERTY_ID, standardVariable.getProperty().getId()); @@ -88,7 +88,7 @@ public void testCreateObsoleteVariable() { variable.setIsObsolete(true); cvtermDao.update(variable); - final StandardVariable standardVariable = standardVariableBuilder.create(id, null); + final StandardVariable standardVariable = this.standardVariableBuilder.create(id, null); assertNotNull(standardVariable); assertEquals(TermId.TRIAL_INSTANCE_FACTOR.getId(), standardVariable.getId()); assertEquals(TRIAL_INSTANCE_PROPERTY_ID, standardVariable.getProperty().getId()); @@ -107,7 +107,7 @@ public void testCreateList() { standardVariableIds.add(TermId.ENTRY_NO.getId()); standardVariableIds.add(TermId.GID.getId()); - final List standardVariables = standardVariableBuilder.create(standardVariableIds, null); + final List standardVariables = this.standardVariableBuilder.create(standardVariableIds, null); assertNotNull(standardVariables); assertEquals(standardVariableIds.size(), standardVariables.size()); for (final StandardVariable standardVariable : standardVariables) { @@ -128,7 +128,7 @@ public void testCreateList() { public void testCreateEmptyList() { final List standardVariableIds = new ArrayList(); - final List standardVariables = standardVariableBuilder.create(standardVariableIds, null); + final List standardVariables = this.standardVariableBuilder.create(standardVariableIds, null); assertNotNull(standardVariables); assertEquals(0, standardVariables.size()); } @@ -137,7 +137,7 @@ public void testCreateEmptyList() { public void testCreateNullList() { final List standardVariableIds = null; - final List standardVariables = standardVariableBuilder.create(standardVariableIds, null); + final List standardVariables = this.standardVariableBuilder.create(standardVariableIds, null); assertNotNull(standardVariables); assertEquals(0, standardVariables.size()); } @@ -152,7 +152,7 @@ public void testFindOrSaveFindExisting() { final String datatype = "N"; final PhenotypicType role = PhenotypicType.TRIAL_ENVIRONMENT; final StandardVariable standardVariable = - standardVariableBuilder.findOrSave(name, description, property, scale, method, role, null, datatype, null); + this.standardVariableBuilder.findOrSave(name, description, property, scale, method, role, null, datatype, null); assertNotNull(standardVariable); assertEquals(TermId.TRIAL_INSTANCE_FACTOR.getId(), standardVariable.getId()); assertEquals(TRIAL_INSTANCE_PROPERTY_ID, standardVariable.getProperty().getId()); @@ -179,7 +179,7 @@ public void testFindOrSaveSaveNewStandardVariable() { final String datatype = "N"; final PhenotypicType role = PhenotypicType.TRIAL_ENVIRONMENT; final StandardVariable standardVariable = - standardVariableBuilder.findOrSave(name, description, property, scale, method, role, null, datatype, null); + this.standardVariableBuilder.findOrSave(name, description, property, scale, method, role, null, datatype, null); assertNotNull(standardVariable); assertEquals(name, standardVariable.getName()); assertEquals(description, standardVariable.getDescription()); @@ -195,7 +195,7 @@ public void testFindOrSaveSaveNewStandardVariable() { @Test public void testGetByName() { final String name = "TRIAL_INSTANCE"; - final StandardVariable standardVariable = standardVariableBuilder.getByName(name, null); + final StandardVariable standardVariable = this.standardVariableBuilder.getByName(name, null); assertNotNull(standardVariable); assertEquals(TermId.TRIAL_INSTANCE_FACTOR.getId(), standardVariable.getId()); assertEquals(name, standardVariable.getName()); @@ -207,7 +207,7 @@ public void testGetByName() { @Test public void testGetByNameNotFound() { final String name = "VAR_123456"; - final StandardVariable standardVariable = standardVariableBuilder.getByName(name, null); + final StandardVariable standardVariable = this.standardVariableBuilder.getByName(name, null); assertNull(standardVariable); } @@ -216,7 +216,7 @@ public void testGetByPropertyScaleMethod() { final int propertyId = TRIAL_INSTANCE_PROPERTY_ID; final int scaleId = TRIAL_INSTANCE_SCALE_ID; final int methodId = TRIAL_INSTANCE_METHOD_ID; - final StandardVariable standardVariable = standardVariableBuilder.getByPropertyScaleMethod(propertyId, scaleId, methodId, null); + final StandardVariable standardVariable = this.standardVariableBuilder.getByPropertyScaleMethod(propertyId, scaleId, methodId, null); assertNotNull(standardVariable); assertEquals(TRIAL_INSTANCE_PROPERTY_ID, standardVariable.getProperty().getId()); assertEquals(TRIAL_INSTANCE_SCALE_ID, standardVariable.getScale().getId()); @@ -228,7 +228,7 @@ public void testGetByPropertyScaleMethodNotFound() { final int propertyId = 1; final int scaleId = 2; final int methodId = 3; - final StandardVariable standardVariable = standardVariableBuilder.getByPropertyScaleMethod(propertyId, scaleId, methodId, null); + final StandardVariable standardVariable = this.standardVariableBuilder.getByPropertyScaleMethod(propertyId, scaleId, methodId, null); assertNull(standardVariable); } @@ -239,7 +239,7 @@ public void testGetByPropertyScaleMethodRole() { final int methodId = TRIAL_INSTANCE_METHOD_ID; final PhenotypicType role = PhenotypicType.TRIAL_ENVIRONMENT; final StandardVariable standardVariable = - standardVariableBuilder.getByPropertyScaleMethodRole(propertyId, scaleId, methodId, role, null); + this.standardVariableBuilder.getByPropertyScaleMethodRole(propertyId, scaleId, methodId, role, null); assertNotNull(standardVariable); assertEquals(TRIAL_INSTANCE_PROPERTY_ID, standardVariable.getProperty().getId()); assertEquals(TRIAL_INSTANCE_SCALE_ID, standardVariable.getScale().getId()); @@ -253,7 +253,7 @@ public void testGetByPropertyScaleMethodRoleNotFound() { final int methodId = 3; final PhenotypicType role = PhenotypicType.TRIAL_ENVIRONMENT; final StandardVariable standardVariable = - standardVariableBuilder.getByPropertyScaleMethodRole(propertyId, scaleId, methodId, role, null); + this.standardVariableBuilder.getByPropertyScaleMethodRole(propertyId, scaleId, methodId, role, null); assertNull(standardVariable); } @@ -357,7 +357,7 @@ public void testGetStandardVariablesInProjects_HeaderHasMatchWithOntologyVariabl @Test public void testSetRoleOfVariablesVariableTypeIsUnassigned() { - final StandardVariable trialInstanceFactor = standardVariableBuilder.create(TermId.TRIAL_INSTANCE_FACTOR.getId(), null); + final StandardVariable trialInstanceFactor = this.standardVariableBuilder.create(TermId.TRIAL_INSTANCE_FACTOR.getId(), null); final List standardVariables = new ArrayList<>(); standardVariables.add(trialInstanceFactor); @@ -365,7 +365,7 @@ public void testSetRoleOfVariablesVariableTypeIsUnassigned() { final Map variableTypeMap = new HashMap<>(); variableTypeMap.put(TermId.TRIAL_INSTANCE_FACTOR.getId(), null); - standardVariableBuilder.setRoleOfVariables(standardVariables, variableTypeMap); + this.standardVariableBuilder.setRoleOfVariables(standardVariables, variableTypeMap); // The trialInstanceFactor has no VariableType assigned to it, so the phenotypicType (role) is null Assert.assertNull(trialInstanceFactor.getPhenotypicType()); @@ -375,7 +375,7 @@ public void testSetRoleOfVariablesVariableTypeIsUnassigned() { @Test public void testSetRoleOfVariablesVariableTypeIsAssigned() { - final StandardVariable trialInstanceFactor = standardVariableBuilder.create(TermId.TRIAL_INSTANCE_FACTOR.getId(), null); + final StandardVariable trialInstanceFactor = this.standardVariableBuilder.create(TermId.TRIAL_INSTANCE_FACTOR.getId(), null); final List standardVariables = new ArrayList<>(); standardVariables.add(trialInstanceFactor); @@ -383,7 +383,7 @@ public void testSetRoleOfVariablesVariableTypeIsAssigned() { final Map variableTypeMap = new HashMap<>(); variableTypeMap.put(TermId.TRIAL_INSTANCE_FACTOR.getId(), VariableType.ENVIRONMENT_DETAIL); - standardVariableBuilder.setRoleOfVariables(standardVariables, variableTypeMap); + this.standardVariableBuilder.setRoleOfVariables(standardVariables, variableTypeMap); // The phenotypicType (role) of trialInstanceFactor should be from VariableType.ENVIRONMENT_DETAIL Assert.assertEquals(VariableType.ENVIRONMENT_DETAIL.getRole(), trialInstanceFactor.getPhenotypicType()); @@ -393,7 +393,7 @@ public void testSetRoleOfVariablesVariableTypeIsAssigned() { @Test public void testSetRoleOfVariablesVariableTypeForExperimentalVariables() { - final StandardVariable nblks = standardVariableBuilder.create(TermId.NBLKS.getId(), null); + final StandardVariable nblks = this.standardVariableBuilder.create(TermId.NBLKS.getId(), null); final List standardVariables = new ArrayList<>(); standardVariables.add(nblks); @@ -401,7 +401,7 @@ public void testSetRoleOfVariablesVariableTypeForExperimentalVariables() { final Map variableTypeMap = new HashMap<>(); variableTypeMap.put(TermId.NBLKS.getId(), VariableType.EXPERIMENTAL_DESIGN); - standardVariableBuilder.setRoleOfVariables(standardVariables, variableTypeMap); + this.standardVariableBuilder.setRoleOfVariables(standardVariables, variableTypeMap); // The phenotypicType (role) of trialInstanceFactor should be from VariableType.ENVIRONMENT_DETAIL Assert.assertEquals(VariableType.ENVIRONMENT_DETAIL.getRole(), nblks.getPhenotypicType()); From c9501a6d59e0a88f0975dd191ea763d33d57e076 Mon Sep 17 00:00:00 2001 From: gellisamson Date: Mon, 21 Sep 2020 13:01:43 +0800 Subject: [PATCH 5/6] Fix RMAP value for single sheet and with description IBP-3322-ImportExperimentDesignValues --- .../operation/saver/WorkbookSaver.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/main/java/org/generationcp/middleware/operation/saver/WorkbookSaver.java b/src/main/java/org/generationcp/middleware/operation/saver/WorkbookSaver.java index dad36be273..99af3cca7b 100644 --- a/src/main/java/org/generationcp/middleware/operation/saver/WorkbookSaver.java +++ b/src/main/java/org/generationcp/middleware/operation/saver/WorkbookSaver.java @@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils; import org.generationcp.middleware.dao.LocationDAO; import org.generationcp.middleware.domain.dms.*; +import org.generationcp.middleware.domain.dms.Enumeration; import org.generationcp.middleware.domain.etl.MeasurementData; import org.generationcp.middleware.domain.etl.MeasurementRow; import org.generationcp.middleware.domain.etl.MeasurementVariable; @@ -25,6 +26,7 @@ import org.generationcp.middleware.hibernate.HibernateSessionProvider; import org.generationcp.middleware.manager.DaoFactory; import org.generationcp.middleware.manager.Operation; +import org.generationcp.middleware.manager.api.OntologyDataManager; import org.generationcp.middleware.manager.api.StudyDataManager; import org.generationcp.middleware.operation.builder.WorkbookBuilder; import org.generationcp.middleware.operation.transformer.etl.ExperimentValuesTransformer; @@ -76,6 +78,9 @@ public class WorkbookSaver extends Saver { @Resource private StudyDataManager studyDataManager; + @Resource + private OntologyDataManager ontologyDataManager; + public WorkbookSaver() { } @@ -136,6 +141,8 @@ public Map saveVariables(final Workbook workbook, final String programUUID) { variableTypeMap.put(WorkbookSaver.TRIALVARIABLES, trialVariables); variableTypeMap.put(WorkbookSaver.EFFECTVARIABLE, effectVariables); // -- measurementVariables + + this.setRMAPValueIfNecessary(trialMV, programUUID); measurementVariableMap.put(WorkbookSaver.TRIALMV, trialMV); final List effectMV = workbook.getMeasurementDatasetVariables(); @@ -520,6 +527,10 @@ private int createLocationsAndSetToObservations( if (geolocationId == 0) { // if geolocationId does not exist, create the geolocation // and set to row.locationId + + //Set RMAP Value if Necessary + this.setRMAPValueObservationIfNecessary(row.getDataList(), programUUID); + final TimerWatch watch = new TimerWatch("transformTrialEnvironment in createLocationsAndSetToObservations"); final VariableList geolocation = this.getVariableListTransformer().transformTrialEnvironment(row, trialFactors, trialHeaders); @@ -1346,5 +1357,42 @@ private void createMeansExperiments( } } + private void setRMAPValueIfNecessary(final List mvarList, final String programUUID) { + final List catVar = mvarList.stream().filter(variable -> variable.getTermId() == TermId.REPLICATIONS_MAP + .getId()).collect(Collectors.toList()); + if (catVar != null) { + for (final MeasurementVariable mVar : catVar) { + final StandardVariable strdVariable = this.ontologyDataManager.findStandardVariableByTraitScaleMethodNames(mVar.getProperty(), mVar.getScale(), mVar.getMethod(), programUUID); + if (strdVariable != null && strdVariable.getEnumerations() !=null) { + final List possibleValues = strdVariable.getEnumerations().stream().filter(enumeration -> enumeration.getName().equals(mVar.getValue())).collect( + Collectors.toList()); + if (possibleValues != null && possibleValues.size() > 0) { + mVar.setValue(String.valueOf(possibleValues.get(0).getId())); + } + } + } + } + } + + private void setRMAPValueObservationIfNecessary(final List mvarList, final String programUUID) { + final List catVar = mvarList.stream().filter(variable -> variable.getMeasurementVariable().getTermId() == TermId.REPLICATIONS_MAP + .getId()).collect(Collectors.toList()); + if (catVar != null) { + for (final MeasurementData mData : catVar) { + final MeasurementVariable mVar = mData.getMeasurementVariable(); + final StandardVariable strdVariable; + strdVariable = + this.ontologyDataManager.findStandardVariableByTraitScaleMethodNames(mVar.getProperty(), mVar.getScale(), mVar.getMethod(), programUUID); + if (strdVariable != null && strdVariable.getEnumerations() !=null) { + final List possibleValues = strdVariable.getEnumerations().stream().filter(enumeration -> enumeration.getName().equals(mData.getValue())).collect( + Collectors.toList()); + if (possibleValues != null && possibleValues.size() > 0) { + mVar.setValue(String.valueOf(possibleValues.get(0).getId())); + mData.setValue(String.valueOf(possibleValues.get(0).getId())); + } + } + } + } + } } From 810082ce2569e42388659034271a24e5c5f7ecb4 Mon Sep 17 00:00:00 2001 From: gellisamson Date: Mon, 21 Sep 2020 13:38:29 +0800 Subject: [PATCH 6/6] Fix failing unit test: Adding null pointer check IBP-3322-ImportExperimentDesignValues --- .../generationcp/middleware/operation/saver/WorkbookSaver.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/generationcp/middleware/operation/saver/WorkbookSaver.java b/src/main/java/org/generationcp/middleware/operation/saver/WorkbookSaver.java index 99af3cca7b..9898bc6e08 100644 --- a/src/main/java/org/generationcp/middleware/operation/saver/WorkbookSaver.java +++ b/src/main/java/org/generationcp/middleware/operation/saver/WorkbookSaver.java @@ -1375,7 +1375,7 @@ private void setRMAPValueIfNecessary(final List mvarList, f } private void setRMAPValueObservationIfNecessary(final List mvarList, final String programUUID) { - final List catVar = mvarList.stream().filter(variable -> variable.getMeasurementVariable().getTermId() == TermId.REPLICATIONS_MAP + final List catVar = mvarList.stream().filter(variable -> variable.getMeasurementVariable() != null && variable.getMeasurementVariable().getTermId() == TermId.REPLICATIONS_MAP .getId()).collect(Collectors.toList()); if (catVar != null) { for (final MeasurementData mData : catVar) {