This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new b1d8aed228 issue #3209: preserve Text File Input compression when
adding files (#7804)
b1d8aed228 is described below
commit b1d8aed228c431b0ebd6f72e36a73bd8d55d0ecf
Author: Matt Casters <[email protected]>
AuthorDate: Thu Aug 6 15:09:57 2026 +0200
issue #3209: preserve Text File Input compression when adding files (#7804)
Stop checkCompressedFile() from resetting an explicit non-None
Compression choice when files are added or removed. Auto-detect from
filename extensions only when Compression is still None, and fix the
filename column index used for extension lookup.
---
.../fileinput/text/TextFileInputDialog.java | 50 ++++++++++++++--------
1 file changed, 31 insertions(+), 19 deletions(-)
diff --git
a/plugins/transforms/textfile/src/main/java/org/apache/hop/pipeline/transforms/fileinput/text/TextFileInputDialog.java
b/plugins/transforms/textfile/src/main/java/org/apache/hop/pipeline/transforms/fileinput/text/TextFileInputDialog.java
index 20e72be6f6..d24a1d8b69 100644
---
a/plugins/transforms/textfile/src/main/java/org/apache/hop/pipeline/transforms/fileinput/text/TextFileInputDialog.java
+++
b/plugins/transforms/textfile/src/main/java/org/apache/hop/pipeline/transforms/fileinput/text/TextFileInputDialog.java
@@ -483,31 +483,43 @@ public class TextFileInputDialog extends
BaseTransformDialog
checkCompressedFile();
}
- /*check the compressed extension of the first file in the archive and change
the
- * compression mode in the content tab depending on it*/
+ /**
+ * Optionally auto-select compression from filename extensions when the user
has not already
+ * chosen a non-None compression (issue #3209). Does not override an
explicit selection.
+ */
private void checkCompressedFile() {
- if (wFilenameList.getItemCount() > 0) {
- for (int i = 0; i < wFilenameList.getItemCount(); i++) {
- String[] fileRecord = wFilenameList.getItem(i);
- String fileExtension = FilenameUtils.getExtension(fileRecord[i]);
- Collection<ICompressionProvider> compProviders =
- CompressionProviderFactory.getInstance().getCompressionProviders();
- for (ICompressionProvider provider : compProviders) {
- if (provider.getDefaultExtension() != null
- && provider.getDefaultExtension().equals(fileExtension)) {
- int toBeSelected = ArrayUtils.indexOf(wCompression.getItems(),
provider.getName());
+ // Preserve explicit Compression settings (GZip, Zip, ...). Only
auto-detect when None/empty.
+ String current = Const.NVL(wCompression.getText(), "");
+ if (!Utils.isEmpty(current) && !"None".equalsIgnoreCase(current)) {
+ return;
+ }
+
+ if (wFilenameList.getItemCount() <= 0) {
+ return;
+ }
+
+ Collection<ICompressionProvider> compProviders =
+ CompressionProviderFactory.getInstance().getCompressionProviders();
+
+ for (int i = 0; i < wFilenameList.getItemCount(); i++) {
+ String[] fileRecord = wFilenameList.getItem(i);
+ if (fileRecord == null || fileRecord.length == 0 ||
Utils.isEmpty(fileRecord[0])) {
+ continue;
+ }
+ // Filename is always column 0 (not row index i)
+ String fileExtension = FilenameUtils.getExtension(fileRecord[0]);
+ for (ICompressionProvider provider : compProviders) {
+ if (provider.getDefaultExtension() != null
+ && provider.getDefaultExtension().equals(fileExtension)) {
+ int toBeSelected = ArrayUtils.indexOf(wCompression.getItems(),
provider.getName());
+ if (toBeSelected >= 0) {
wCompression.select(toBeSelected);
- return;
}
+ return;
}
}
- wCompression.select(
- ArrayUtils.indexOf(
- wCompression.getItems(),
- CompressionProviderFactory.getInstance()
- .getCompressionProviderByName("None")
- .getName()));
}
+ // No matching compressed extension: leave compression as None/empty (do
not force select).
}
private void showFiles() {