Cb 4430 file extension for export (#2405)

* CB-4430. Fixed file extention for export file json

* CB-4430. Fixed file extention for export file json

* CB-4430. Fixed checkstyle

* CB-4430. Refactor after review

---------

Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
This commit is contained in:
DenisSinelnikov
2024-02-23 14:45:26 +00:00
committed by GitHub
co-authored by DenisSinelnikov Evgenia Bezborodova
parent 8c2b2e584e
commit 0877d07d04
3 changed files with 24 additions and 3 deletions
@@ -34,6 +34,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;
public class WebDataTransferServlet extends WebServiceServletBase {
@@ -67,7 +68,7 @@ public class WebDataTransferServlet extends WebServiceServletBase {
}
String fileName = taskInfo.getExportFileName();
if (!CommonUtils.isEmpty(fileName)) {
fileName += "." + WebDataTransferUtils.getProcessorFileExtension(processor);
fileName += "." + WebDataTransferUtils.getProcessorFileExtension(processor, taskInfo.getParameters().getProcessorProperties());
} else {
fileName = taskInfo.getDataFileId();
}
@@ -23,9 +23,12 @@ import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
import org.jkiss.dbeaver.tools.transfer.registry.DataTransferProcessorDescriptor;
import org.jkiss.utils.CommonUtils;
import java.util.Map;
class WebDataTransferUtils {
private static final Log log = Log.getLog(WebDataTransferUtils.class);
public static final String EXTENSION = "extension";
public static String getProcessorFileExtension(DataTransferProcessorDescriptor processor) {
@@ -34,6 +37,14 @@ class WebDataTransferUtils {
return CommonUtils.isEmpty(ext) ? "data" : ext;
}
public static String getProcessorFileExtension(DataTransferProcessorDescriptor processor, Map<String, Object> processorProperties) {
if (processorProperties != null && processorProperties.get(EXTENSION) != null) {
return CommonUtils.toString(processorProperties.get(EXTENSION), "data");
}
return getProcessorFileExtension(processor);
}
public static String normalizeFileName(
@NotNull String fileName,
@NotNull WebDataTransferOutputSettings outputSettings
@@ -107,7 +107,15 @@ public class WebServiceDataTransfer implements DBWServiceDataTransfer {
}
@NotNull
private String makeUniqueFileName(WebSQLProcessor sqlProcessor, DataTransferProcessorDescriptor processor) {
private String makeUniqueFileName(
WebSQLProcessor sqlProcessor,
DataTransferProcessorDescriptor processor,
Map<String, Object> processorProperties
) {
if (processorProperties != null && processorProperties.get(StreamConsumerSettings.PROP_FILE_EXTENSION) != null) {
return sqlProcessor.getWebSession().getSessionId() + "_" + UUID.randomUUID() +
"." + processorProperties.get(StreamConsumerSettings.PROP_FILE_EXTENSION);
}
return sqlProcessor.getWebSession().getSessionId() + "_" + UUID.randomUUID() + "." + WebDataTransferUtils.getProcessorFileExtension(processor);
}
@@ -157,7 +165,8 @@ public class WebServiceDataTransfer implements DBWServiceDataTransfer {
monitor.beginTask("Export data", 1);
try {
monitor.subTask("Export data using " + processor.getName());
Path exportFile = dataExportFolder.resolve(makeUniqueFileName(sqlProcessor, processor));
Path exportFile = dataExportFolder.resolve(
makeUniqueFileName(sqlProcessor, processor, parameters.getProcessorProperties()));
try {
exportData(monitor, processor, dataContainer, parameters, resultsInfo, exportFile);
} catch (Exception e) {