From 3c3b2d20216eb3b060ca888361414205da3dafeb Mon Sep 17 00:00:00 2001 From: HMS17 Date: Thu, 31 Oct 2024 14:12:09 -0400 Subject: [PATCH 1/5] [BI-2355] - Non-informative error message: regression --- .../brapps/importer/services/FileImportService.java | 8 +++++--- .../services/validators/TraitFileValidatorError.java | 4 ++-- .../services/validators/TraitValidatorError.java | 5 ++--- .../services/validators/TraitValidatorErrorInterface.java | 2 +- .../services/validators/TraitValidatorService.java | 4 ++-- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java b/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java index c0df7711c..8acb40144 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java @@ -171,11 +171,12 @@ private Table parseUploadedFile(CompletedFileUpload file) throws UnsupportedType throw new UnsupportedTypeException("Unsupported mime type"); } - // replace "." with "" in column names to deal with json flattening issue in tablesaw + // replace certain special characters with "" in column names to deal with json flattening issue in tablesaw + // this includes ".", "[", "[" List columnNames = df.columnNames(); List namesToReplace = new ArrayList<>(); for (String name : columnNames) { - if (name.contains(".")) { + if (name.contains(".") || name.contains("[") || name.contains("]")) { namesToReplace.add(name); } } @@ -183,7 +184,8 @@ private Table parseUploadedFile(CompletedFileUpload file) throws UnsupportedType List> columns = df.columns(namesToReplace.stream().toArray(String[]::new)); for (int i=0; i column = columns.get(i); - column.setName(namesToReplace.get(i).replace(".","")); + //if more characters, could use replaceall and regex, but this works presently + column.setName(namesToReplace.get(i).replace(".","").replace("[","").replace("]","")); } return df; diff --git a/src/main/java/org/breedinginsight/services/validators/TraitFileValidatorError.java b/src/main/java/org/breedinginsight/services/validators/TraitFileValidatorError.java index 40807cf03..d19e6a295 100644 --- a/src/main/java/org/breedinginsight/services/validators/TraitFileValidatorError.java +++ b/src/main/java/org/breedinginsight/services/validators/TraitFileValidatorError.java @@ -66,8 +66,8 @@ public ValidationError getMissingScaleDataTypeMsg() { } @Override - public ValidationError getPeriodObsVarNameMsg() { - return new ValidationError("Name", "Period is invalid", HttpStatus.UNPROCESSABLE_ENTITY); + public ValidationError getInvalidCharObsVarNameMsg() { + return new ValidationError("Name", "Periods and brackets are invalid", HttpStatus.UNPROCESSABLE_ENTITY); } @Override diff --git a/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java b/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java index 107419539..731f61f89 100644 --- a/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java +++ b/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java @@ -66,11 +66,10 @@ public ValidationError getMissingScaleDataTypeMsg() { } @Override - public ValidationError getPeriodObsVarNameMsg() { - return new ValidationError("observationVariableName", "Period in name is invalid", HttpStatus.BAD_REQUEST); + public ValidationError getInvalidCharObsVarNameMsg() { + return new ValidationError("observationVariableName", "Periods and brackets in name is invalid", HttpStatus.BAD_REQUEST); } - @Override public ValidationError getMissingObsVarNameMsg() { return new ValidationError("observationVariableName", "Missing Name", HttpStatus.BAD_REQUEST); } diff --git a/src/main/java/org/breedinginsight/services/validators/TraitValidatorErrorInterface.java b/src/main/java/org/breedinginsight/services/validators/TraitValidatorErrorInterface.java index 27400e2c5..73c92a425 100644 --- a/src/main/java/org/breedinginsight/services/validators/TraitValidatorErrorInterface.java +++ b/src/main/java/org/breedinginsight/services/validators/TraitValidatorErrorInterface.java @@ -31,7 +31,7 @@ public interface TraitValidatorErrorInterface { ValidationError getMissingScaleUnitMsg(); ValidationError getMissingScaleDataTypeMsg(); ValidationError getMissingObsVarNameMsg(); - ValidationError getPeriodObsVarNameMsg(); + ValidationError getInvalidCharObsVarNameMsg(); ValidationError getMissingTraitEntityMsg(); ValidationError getMissingTraitAttributeMsg(); ValidationError getMissingTraitDescriptionMsg(); diff --git a/src/main/java/org/breedinginsight/services/validators/TraitValidatorService.java b/src/main/java/org/breedinginsight/services/validators/TraitValidatorService.java index e6f73ffcd..aab931921 100644 --- a/src/main/java/org/breedinginsight/services/validators/TraitValidatorService.java +++ b/src/main/java/org/breedinginsight/services/validators/TraitValidatorService.java @@ -217,12 +217,12 @@ public ValidationErrors checkTraitFieldsFormat(List traits, TraitValidato Trait trait = traits.get(i); String name = trait.getObservationVariableName(); - Pattern pattern = Pattern.compile("\\."); + Pattern pattern = Pattern.compile("[\\.\\]\\[]"); Matcher matcher = pattern.matcher(name); boolean containsInvalidCharacter = matcher.find(); if (name != null && containsInvalidCharacter){ - ValidationError error = traitValidatorErrors.getPeriodObsVarNameMsg(); + ValidationError error = traitValidatorErrors.getInvalidCharObsVarNameMsg(); errors.addError(traitValidatorErrors.getRowNumber(i), error); } } From 72e103ff4452f7a62de12b511631dc5e19c72a00 Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Thu, 31 Oct 2024 15:41:02 -0400 Subject: [PATCH 2/5] [BI-2355] - Restore @override --- .../breedinginsight/services/validators/TraitValidatorError.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java b/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java index 731f61f89..9a94e75b4 100644 --- a/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java +++ b/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java @@ -70,6 +70,7 @@ public ValidationError getInvalidCharObsVarNameMsg() { return new ValidationError("observationVariableName", "Periods and brackets in name is invalid", HttpStatus.BAD_REQUEST); } + @Override public ValidationError getMissingObsVarNameMsg() { return new ValidationError("observationVariableName", "Missing Name", HttpStatus.BAD_REQUEST); } From 7826135cbb1b70e67b15ceb6a5eae82ade03523e Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Fri, 1 Nov 2024 15:38:31 -0400 Subject: [PATCH 3/5] [BI-2355] Comment fix Co-authored-by: mlm483 <128052931+mlm483@users.noreply.github.com> --- .../brapps/importer/services/FileImportService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java b/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java index 8acb40144..2696df137 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java @@ -172,7 +172,7 @@ private Table parseUploadedFile(CompletedFileUpload file) throws UnsupportedType } // replace certain special characters with "" in column names to deal with json flattening issue in tablesaw - // this includes ".", "[", "[" + // this includes ".", "[", "]" List columnNames = df.columnNames(); List namesToReplace = new ArrayList<>(); for (String name : columnNames) { From 3ac46357a7cf7e902667abfa69bdf37708886c04 Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Fri, 1 Nov 2024 16:17:18 -0400 Subject: [PATCH 4/5] [BI-2355] - Code review backend logic more elegant --- .../importer/services/FileImportService.java | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java b/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java index 2696df137..1478cf985 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java @@ -173,20 +173,9 @@ private Table parseUploadedFile(CompletedFileUpload file) throws UnsupportedType // replace certain special characters with "" in column names to deal with json flattening issue in tablesaw // this includes ".", "[", "]" - List columnNames = df.columnNames(); - List namesToReplace = new ArrayList<>(); - for (String name : columnNames) { - if (name.contains(".") || name.contains("[") || name.contains("]")) { - namesToReplace.add(name); - } - } - - List> columns = df.columns(namesToReplace.stream().toArray(String[]::new)); - for (int i=0; i column = columns.get(i); - //if more characters, could use replaceall and regex, but this works presently - column.setName(namesToReplace.get(i).replace(".","").replace("[","").replace("]","")); - } + df.columns().forEach( + (c) -> c.setName(c.name().replace(".","").replace("[","").replace("]","")) + ); return df; } From 66b527125413997fe351b79c2a41e0af6231d691 Mon Sep 17 00:00:00 2001 From: HMS17 <84345306+HMS17@users.noreply.github.com> Date: Fri, 1 Nov 2024 16:32:48 -0400 Subject: [PATCH 5/5] [BI-2355] Grammar fix --- .../services/validators/TraitValidatorError.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java b/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java index 9a94e75b4..bb0b5165f 100644 --- a/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java +++ b/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java @@ -67,7 +67,7 @@ public ValidationError getMissingScaleDataTypeMsg() { @Override public ValidationError getInvalidCharObsVarNameMsg() { - return new ValidationError("observationVariableName", "Periods and brackets in name is invalid", HttpStatus.BAD_REQUEST); + return new ValidationError("observationVariableName", "Periods and brackets in name are invalid", HttpStatus.BAD_REQUEST); } @Override