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..1478cf985 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/FileImportService.java @@ -171,20 +171,11 @@ 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 - List columnNames = df.columnNames(); - List namesToReplace = new ArrayList<>(); - for (String name : columnNames) { - if (name.contains(".")) { - namesToReplace.add(name); - } - } - - List> columns = df.columns(namesToReplace.stream().toArray(String[]::new)); - for (int i=0; i column = columns.get(i); - column.setName(namesToReplace.get(i).replace(".","")); - } + // replace certain special characters with "" in column names to deal with json flattening issue in tablesaw + // this includes ".", "[", "]" + df.columns().forEach( + (c) -> c.setName(c.name().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..bb0b5165f 100644 --- a/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java +++ b/src/main/java/org/breedinginsight/services/validators/TraitValidatorError.java @@ -66,8 +66,8 @@ 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 are invalid", HttpStatus.BAD_REQUEST); } @Override 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); } }