diff --git a/grid/core-impl/src/extractors/DatabaseObjectFormatterConfig.java b/grid/core-impl/src/extractors/DatabaseObjectFormatterConfig.java index c6b0448d2a65..075124460cbb 100644 --- a/grid/core-impl/src/extractors/DatabaseObjectFormatterConfig.java +++ b/grid/core-impl/src/extractors/DatabaseObjectFormatterConfig.java @@ -36,6 +36,11 @@ public class DatabaseObjectFormatterConfig implements ObjectFormatterConfig { return false; } + @Override + public boolean supportsNumberFormats() { + return true; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -67,6 +72,8 @@ public class DatabaseObjectFormatterConfig implements ObjectFormatterConfig { private final DataGridSettings settings; + private final boolean supportsNumberFormats; + private boolean isAllowedShowBigObjects; public DatabaseDisplayObjectFormatterConfig() { @@ -78,9 +85,20 @@ public class DatabaseObjectFormatterConfig implements ObjectFormatterConfig { boolean isModeDetectedAutomatically, @Nullable Set allowedTypes, @Nullable DataGridSettings settings + ) { + this(displayType, isModeDetectedAutomatically, true, allowedTypes, settings); + } + + private DatabaseDisplayObjectFormatterConfig( + @Nullable DisplayType displayType, + boolean isModeDetectedAutomatically, + boolean supportsNumberFormats, + @Nullable Set allowedTypes, + @Nullable DataGridSettings settings ) { super(ObjectFormatterMode.DISPLAY); this.isAllowedShowBigObjects = false; + this.supportsNumberFormats = supportsNumberFormats; this.displayType = displayType; this.isModeDetectedAutomatically = isModeDetectedAutomatically; this.allowedTypes = allowedTypes; @@ -114,6 +132,25 @@ public class DatabaseObjectFormatterConfig implements ObjectFormatterConfig { return this.isAllowedShowBigObjects; } + @Override + public boolean supportsNumberFormats() { + return this.supportsNumberFormats; + } + + @NotNull + public DatabaseDisplayObjectFormatterConfig adjustForExtraction() { + if (supportsNumberFormats) { + return new DatabaseDisplayObjectFormatterConfig( + displayType, + isModeDetectedAutomatically, + false, + allowedTypes, + settings + ); + } + return this; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -122,12 +159,13 @@ public class DatabaseObjectFormatterConfig implements ObjectFormatterConfig { DatabaseDisplayObjectFormatterConfig config = (DatabaseDisplayObjectFormatterConfig)o; return isModeDetectedAutomatically == config.isModeDetectedAutomatically && displayType == config.displayType && + supportsNumberFormats == config.supportsNumberFormats && Objects.equals(allowedTypes, config.allowedTypes); } @Override public int hashCode() { - return Objects.hash(super.hashCode(), displayType, isModeDetectedAutomatically, allowedTypes); + return Objects.hash(super.hashCode(), displayType, isModeDetectedAutomatically, supportsNumberFormats, allowedTypes); } } diff --git a/grid/core-impl/src/extractors/FormatterCreator.java b/grid/core-impl/src/extractors/FormatterCreator.java index 7608a7235ad3..7418d53ca3c7 100644 --- a/grid/core-impl/src/extractors/FormatterCreator.java +++ b/grid/core-impl/src/extractors/FormatterCreator.java @@ -726,7 +726,7 @@ public class FormatterCreator { DecimalFormatSymbols symbols = format.getDecimalFormatSymbols(); DataGridSettings settings = config != null ? config.getSettings() : null; String pattern = settings != null ? settings.getEffectiveNumberPattern() : null; - if (settings != null) { + if (settings != null && config.supportsNumberFormats()) { format.setGroupingUsed(settings.isNumberGroupingEnabled()); symbols.setGroupingSeparator(settings.getNumberGroupingSeparator()); symbols.setDecimalSeparator(settings.getDecimalSeparator()); diff --git a/grid/core-impl/src/extractors/ObjectFormatterConfig.java b/grid/core-impl/src/extractors/ObjectFormatterConfig.java index e6840b60cb6c..4752b5e34f8c 100644 --- a/grid/core-impl/src/extractors/ObjectFormatterConfig.java +++ b/grid/core-impl/src/extractors/ObjectFormatterConfig.java @@ -13,4 +13,6 @@ public interface ObjectFormatterConfig { DataGridSettings getSettings(); boolean isAllowedShowBigObjects(); + + boolean supportsNumberFormats(); } diff --git a/grid/impl/src/datagrid/GridUtil.java b/grid/impl/src/datagrid/GridUtil.java index 1085b0a1b99d..48fd7d5c57c8 100644 --- a/grid/impl/src/datagrid/GridUtil.java +++ b/grid/impl/src/datagrid/GridUtil.java @@ -608,14 +608,20 @@ public class GridUtil extends GridUtilCore { }; } - public static @NotNull Function getConfigProvider(@NotNull DataGrid dataGrid, boolean allowLongValues) { + public static @NotNull Function getConfigProvider( + @NotNull DataGrid dataGrid, + boolean allowLongValues, + boolean extractionMode + ) { return num -> { ModelIndex idx = ModelIndex.forColumn(dataGrid, num); - if (!allowLongValues) { - return createFormatterConfig(dataGrid, idx); - } var config = createFormatterConfig(dataGrid, idx); - config.allowShowBigObjects(); + if (allowLongValues) { + config.allowShowBigObjects(); + } + if (extractionMode) { + config = config.adjustForExtraction(); + } return config; }; } diff --git a/grid/impl/src/run/ui/grid/GridCopyProvider.java b/grid/impl/src/run/ui/grid/GridCopyProvider.java index a7b3b0228610..bcca41758f76 100644 --- a/grid/impl/src/run/ui/grid/GridCopyProvider.java +++ b/grid/impl/src/run/ui/grid/GridCopyProvider.java @@ -108,7 +108,7 @@ public class GridCopyProvider implements CopyProvider { SelectionModel selectionModel = myGrid.getSelectionModel(); if (selectionModel.getSelectedRowCount() == 1 && selectionModel.getSelectedColumnCount() == 1) { - return GridExtractorsUtilCore.getSingleValueExtractor(myGrid.getObjectFormatter(), GridUtil.getConfigProvider(myGrid, true)); + return GridExtractorsUtilCore.getSingleValueExtractor(myGrid.getObjectFormatter(), GridUtil.getConfigProvider(myGrid, true, true)); } DataExtractorFactory extractorFactory = DataExtractorFactories.getExtractorFactory(myGrid, GridUtil::suggestPlugin);