From bb876a19aff4df627daad3760b002d855fddaa56 Mon Sep 17 00:00:00 2001 From: Clarysabel Tovar Date: Mon, 24 Aug 2020 15:45:20 -0300 Subject: [PATCH 1/3] Removed some dependencies to name IBP-3981 --- .../DatasetGeneratorInputValidator.java | 15 ++++++++--- .../dataset/validator/DatasetValidator.java | 2 +- .../middleware/ontology/ModelServiceImpl.java | 27 ++++++++----------- .../ontology/validator/VariableValidator.java | 2 +- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidator.java b/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidator.java index 6beaef6788..134d759319 100644 --- a/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidator.java +++ b/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidator.java @@ -5,6 +5,9 @@ import org.generationcp.middleware.domain.dms.DatasetDTO; import org.generationcp.middleware.domain.dms.DatasetTypeDTO; import org.generationcp.middleware.domain.dms.Study; +import org.generationcp.middleware.domain.oms.CvId; +import org.generationcp.middleware.domain.oms.Term; +import org.generationcp.middleware.manager.api.OntologyDataManager; import org.generationcp.middleware.manager.api.StudyDataManager; import org.generationcp.middleware.service.api.dataset.DatasetService; import org.generationcp.middleware.service.api.dataset.DatasetTypeService; @@ -39,6 +42,9 @@ public class DatasetGeneratorInputValidator { @Autowired private DatasetService studyDatasetService; + @Autowired + private OntologyDataManager ontologyDataManager; + @Autowired private Environment environment; @@ -53,11 +59,14 @@ public class DatasetGeneratorInputValidator { private static final Pattern DATASET_NAME_PATTERN = Pattern.compile(DatasetGeneratorInputValidator.DATASET_NAME_REGEX); DatasetGeneratorInputValidator() { + final Term observationUnitTerm = this.ontologyDataManager.getAllTermsByCvId(CvId.VARIABLE_TYPE).stream() + .filter(f -> org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().equals(f.getId())).findFirst() + .get(); this.observationUnitVariableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); + String.valueOf(observationUnitTerm.getId()), + observationUnitTerm.getName(), + observationUnitTerm.getDefinition()); } @PostConstruct diff --git a/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetValidator.java b/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetValidator.java index 07f70a874a..7169daf1c5 100644 --- a/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetValidator.java +++ b/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetValidator.java @@ -134,7 +134,7 @@ void validateIfDatasetVariableAlreadyExists( // If variable was found, check it is a supported variable type for dataset } else if (this.isInvalidVariableTypeForDatasetType(datasetType, variableType)) { this.errors - .reject("dataset.variable.cannot.be.deleted", new Object[] {String.valueOf(variableId), variableType.getName()}, + .reject("dataset.variable.cannot.be.deleted", new Object[] {String.valueOf(variableId), ontologyDataManager.getTermById(variableType.getId()).getName()}, ""); throw new NotSupportedException(this.errors.getAllErrors().get(0)); } diff --git a/src/main/java/org/ibp/api/java/impl/middleware/ontology/ModelServiceImpl.java b/src/main/java/org/ibp/api/java/impl/middleware/ontology/ModelServiceImpl.java index e5731fae2d..b8cf0f4601 100644 --- a/src/main/java/org/ibp/api/java/impl/middleware/ontology/ModelServiceImpl.java +++ b/src/main/java/org/ibp/api/java/impl/middleware/ontology/ModelServiceImpl.java @@ -1,13 +1,7 @@ package org.ibp.api.java.impl.middleware.ontology; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Objects; - +import com.google.common.base.Function; import org.generationcp.middleware.domain.oms.CvId; import org.generationcp.middleware.domain.oms.Term; import org.generationcp.middleware.exceptions.MiddlewareException; @@ -22,7 +16,12 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.google.common.base.Function; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; @Service @Transactional @@ -88,15 +87,11 @@ public int compare(String str1, String str2) { @Override public List getAllVariableTypes() { + final List variableTypeTerms = this.termDataManager.getTermByCvId(CvId.VARIABLE_TYPE.getId()); + List variableTypes = - Util.convertAll(Arrays.asList(org.generationcp.middleware.domain.ontology.VariableType.values()), - new Function() { - - @Override - public VariableType apply(org.generationcp.middleware.domain.ontology.VariableType variableType) { - return new VariableType(String.valueOf(variableType.getId()), variableType.getName(), variableType.getDescription()); - } - }); + Util.convertAll(variableTypeTerms, + term -> new VariableType(String.valueOf(term.getId()), term.getName(), term.getDefinition())); Collections.sort(variableTypes, new Comparator() { diff --git a/src/main/java/org/ibp/api/java/impl/middleware/ontology/validator/VariableValidator.java b/src/main/java/org/ibp/api/java/impl/middleware/ontology/validator/VariableValidator.java index 5da5663b40..1e8213a110 100644 --- a/src/main/java/org/ibp/api/java/impl/middleware/ontology/validator/VariableValidator.java +++ b/src/main/java/org/ibp/api/java/impl/middleware/ontology/validator/VariableValidator.java @@ -545,7 +545,7 @@ private boolean areAllPreviousVariableTypesPresent(Set Date: Mon, 24 Aug 2020 16:36:48 -0300 Subject: [PATCH 2/3] Moved code done by request IBP-3981 --- .../DatasetGeneratorInputValidator.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidator.java b/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidator.java index 134d759319..4eead114d2 100644 --- a/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidator.java +++ b/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidator.java @@ -52,21 +52,13 @@ public class DatasetGeneratorInputValidator { private Integer maxAllowedDatasetsPerParent; - private final VariableType observationUnitVariableType; + private VariableType observationUnitVariableType; private static final String DATASET_NAME_REGEX = "^[a-zA-Z0-9\\s(\\\\/:*?\\\"\"<>|.)]*$"; private static final Pattern DATASET_NAME_PATTERN = Pattern.compile(DatasetGeneratorInputValidator.DATASET_NAME_REGEX); DatasetGeneratorInputValidator() { - final Term observationUnitTerm = this.ontologyDataManager.getAllTermsByCvId(CvId.VARIABLE_TYPE).stream() - .filter(f -> org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().equals(f.getId())).findFirst() - .get(); - this.observationUnitVariableType = - new VariableType( - String.valueOf(observationUnitTerm.getId()), - observationUnitTerm.getName(), - observationUnitTerm.getDefinition()); } @PostConstruct @@ -129,6 +121,15 @@ public Integer apply(final StudyInstance i) { final Study study = this.studyDataManager.getStudy(studyId); try { + final Term observationUnitTerm = this.ontologyDataManager.getAllTermsByCvId(CvId.VARIABLE_TYPE).stream() + .filter(f -> org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().equals(f.getId())).findFirst() + .get(); + this.observationUnitVariableType = + new VariableType( + String.valueOf(observationUnitTerm.getId()), + observationUnitTerm.getName(), + observationUnitTerm.getDefinition()); + final VariableDetails variableDetails = this.variableService .getVariableById(crop, study.getProgramUUID(), String.valueOf(datasetInputGenerator.getSequenceVariableId())); From f5864be6e1e4f7857ea0f8af2a1ad3ca3c392c8f Mon Sep 17 00:00:00 2001 From: Clarysabel Tovar Date: Sun, 20 Sep 2020 18:45:13 -0300 Subject: [PATCH 3/3] Fixed tests IBP-391 --- .../dataset/validator/DatasetValidator.java | 14 ++--- .../DatasetGeneratorInputValidatorTest.java | 61 ++++++------------- 2 files changed, 24 insertions(+), 51 deletions(-) diff --git a/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetValidator.java b/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetValidator.java index 5fc28f39da..68a49139d1 100644 --- a/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetValidator.java +++ b/src/main/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetValidator.java @@ -147,13 +147,13 @@ void validateIfDatasetVariableAlreadyExists( this.errors.reject("variable.already.dataset.variable", new Object[] {String.valueOf(variableId)}, ""); throw new ApiRequestValidationException(this.errors.getAllErrors()); - // If variable was found, check it is a supported variable type for dataset - } else if (this.isInvalidVariableTypeForDatasetType(datasetType, variableType)) { - this.errors - .reject("dataset.variable.cannot.be.deleted", new Object[] {String.valueOf(variableId), ontologyDataManager.getTermById(variableType.getId()).getName()}, - ""); - throw new NotSupportedException(this.errors.getAllErrors().get(0)); - } + // If variable was found, check it is a supported variable type for dataset + } else if (this.isInvalidVariableTypeForDatasetType(datasetType, variableType)) { + this.errors + .reject("dataset.variable.cannot.be.deleted", + new Object[] {String.valueOf(variableId), ontologyDataManager.getTermById(variableType.getId()).getName()}, + ""); + throw new NotSupportedException(this.errors.getAllErrors().get(0)); } } diff --git a/src/test/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidatorTest.java b/src/test/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidatorTest.java index b188459611..b1a060448f 100644 --- a/src/test/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidatorTest.java +++ b/src/test/java/org/ibp/api/java/impl/middleware/dataset/validator/DatasetGeneratorInputValidatorTest.java @@ -1,9 +1,14 @@ package org.ibp.api.java.impl.middleware.dataset.validator; +import com.google.common.collect.Lists; import org.generationcp.middleware.domain.dms.DatasetDTO; import org.generationcp.middleware.domain.dms.DatasetTypeDTO; import org.generationcp.middleware.domain.dms.Study; +import org.generationcp.middleware.domain.oms.CvId; +import org.generationcp.middleware.domain.oms.Term; import org.generationcp.middleware.enumeration.DatasetTypeEnum; +import org.generationcp.middleware.manager.OntologyDataManagerImpl; +import org.generationcp.middleware.manager.api.OntologyDataManager; import org.generationcp.middleware.manager.api.StudyDataManager; import org.generationcp.middleware.service.api.dataset.DatasetService; import org.generationcp.middleware.service.api.dataset.DatasetTypeService; @@ -20,6 +25,7 @@ import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.core.env.Environment; import org.springframework.core.env.StandardEnvironment; @@ -59,6 +65,11 @@ public class DatasetGeneratorInputValidatorTest { @Mock final Environment environment = new StandardEnvironment(); + @Mock + final OntologyDataManager ontologyDataManager = new OntologyDataManagerImpl(); + + private VariableType variableType; + @Before public void setup() { @@ -77,6 +88,12 @@ public void setup() { meansDatasetType.setObservationType(false); when(this.datasetTypeService.getDatasetTypeById(DatasetTypeEnum.MEANS_DATA.getId())).thenReturn(meansDatasetType); + final Term observationUnitTerm = + new Term(org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId(), "OBS", "Desc"); + variableType = + new VariableType(String.valueOf(org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId()), "OBS", + "Desc"); + Mockito.when(this.ontologyDataManager.getAllTermsByCvId(CvId.VARIABLE_TYPE)).thenReturn(Lists.newArrayList(observationUnitTerm)); } @Test @@ -161,10 +178,6 @@ public void testValidateBasicData() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program"; @@ -215,10 +228,6 @@ public void testValidateBasicDataDatasetTypeInexistent() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program"; @@ -262,10 +271,6 @@ public void testValidateBasicDataDatasetTypeIsObservation() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program"; @@ -310,10 +315,6 @@ public void testValidateBasicDataMaxAllowed() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program"; @@ -358,10 +359,6 @@ public void testValidateBasicDataLongName() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program"; @@ -411,10 +408,6 @@ public void testValidateBasicDataEmptyName() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program"; @@ -463,10 +456,6 @@ public void testValidateBasicDataInvalidVariable() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program"; @@ -516,10 +505,6 @@ public void testValidateBasicDataMaxAllowedSubObservations() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program"; @@ -572,10 +557,6 @@ public void testValidateBasicDataInvalidInstance() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program"; @@ -623,10 +604,6 @@ public void testValidateDataSpecialCharacters() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program"; @@ -671,10 +648,6 @@ public void testValidateDataSpecialCharactersError() { final Integer parentId = random.nextInt(); final DatasetGeneratorInput datasetInputGenerator = new DatasetGeneratorInput(); final VariableDetails variableDetails = TestDataProvider.getTestVariableDetails(); - final VariableType variableType = new VariableType( - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getId().toString(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getName(), - org.generationcp.middleware.domain.ontology.VariableType.OBSERVATION_UNIT.getDescription()); final int studyId = random.nextInt(); final String program = "MAIZE-Program";