diff --git a/src/main/java/org/obiba/datasource/opal/spss/support/SpssVariableValueConverter.java b/src/main/java/org/obiba/datasource/opal/spss/support/SpssVariableValueConverter.java index 3eccc95..de64431 100644 --- a/src/main/java/org/obiba/datasource/opal/spss/support/SpssVariableValueConverter.java +++ b/src/main/java/org/obiba/datasource/opal/spss/support/SpssVariableValueConverter.java @@ -17,11 +17,23 @@ import org.opendatafoundation.data.spss.SPSSStringVariable; import org.opendatafoundation.data.spss.SPSSVariable; +import java.text.NumberFormat; + public class SpssVariableValueConverter { - private SpssVariableValueConverter() {} + private final NumberFormat fmt = NumberFormat.getInstance(); + + private SpssVariableValueConverter() { + fmt.setGroupingUsed(false); + fmt.setMaximumIntegerDigits(999); + fmt.setMaximumFractionDigits(999); + } + + static SpssVariableValueConverter getInstance() { + return new SpssVariableValueConverter(); + } - static String convert(SPSSVariable spssVariable, int index) throws SpssValueConversionException, SPSSFileException { + String convert(SPSSVariable spssVariable, int index) throws SpssValueConversionException, SPSSFileException { if (spssVariable instanceof SPSSNumericVariable) { SPSSNumericVariable spssNumVariable = (SPSSNumericVariable) spssVariable; SpssNumericDataType spssNumericDataType = SpssVariableTypeMapper.getSpssNumericDataType(spssNumVariable); @@ -32,7 +44,7 @@ static String convert(SPSSVariable spssVariable, int index) throws SpssValueConv case FIXED: // fixed format (default) case SCIENTIFIC: Double doubleValue = spssNumVariable.getValue(index); - return doubleValue.isNaN() ? "" : "" + doubleValue; + return doubleValue.isNaN() ? "" : fmt.format(doubleValue); } } @@ -41,7 +53,7 @@ static String convert(SPSSVariable spssVariable, int index) throws SpssValueConv } - static String convert(SPSSVariable spssVariable, String value) throws SpssValueConversionException { + private String convert(SPSSVariable spssVariable, String value) throws SpssValueConversionException { String trimmedValue = value.trim(); if(Strings.isNullOrEmpty(trimmedValue) || (spssVariable instanceof SPSSStringVariable)) return value; diff --git a/src/main/java/org/obiba/datasource/opal/spss/support/SpssVariableValueFactory.java b/src/main/java/org/obiba/datasource/opal/spss/support/SpssVariableValueFactory.java index 84639ac..0861466 100644 --- a/src/main/java/org/obiba/datasource/opal/spss/support/SpssVariableValueFactory.java +++ b/src/main/java/org/obiba/datasource/opal/spss/support/SpssVariableValueFactory.java @@ -28,7 +28,7 @@ public SpssVariableValueFactory(List valuesIndex, SPSSVariable spssVari @Override protected String getValue(int index) { try { - return SpssVariableValueConverter.convert(spssVariable, index); + return SpssVariableValueConverter.getInstance().convert(spssVariable, index); } catch(SPSSFileException | SpssValueConversionException e) { String variableName = spssVariable.getName(); throw new SpssDatasourceParsingException("Failed to retieve variable value.", "SpssFailedToCreateVariable",