/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2017 Serge Rider (serge@jkiss.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jkiss.dbeaver.tools.transfer.stream;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.operation.IRunnableContext;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.registry.formatter.DataFormatterRegistry;
import org.jkiss.dbeaver.tools.transfer.IDataTransferSettings;
import org.jkiss.dbeaver.tools.transfer.wizard.DataTransferSettings;
import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.utils.CommonUtils;
import org.jkiss.utils.StandardConstants;
/**
* Stream transfer settings
*/
public class StreamConsumerSettings implements IDataTransferSettings {
enum LobExtractType {
SKIP,
FILES,
INLINE
}
enum LobEncoding {
BASE64,
HEX,
BINARY
}
public static final String PROP_EXTRACT_IMAGES = "extractImages";
public static final String PROP_FILE_EXTENSION = "extension";
public static final String PROP_FORMAT = "format";
private LobExtractType lobExtractType = LobExtractType.SKIP;
private LobEncoding lobEncoding = LobEncoding.HEX;
private String outputFolder = System.getProperty(StandardConstants.ENV_USER_HOME);
private String outputFilePattern = GeneralUtils.variablePattern(StreamTransferConsumer.VARIABLE_TABLE) + "_" + GeneralUtils.variablePattern(StreamTransferConsumer.VARIABLE_TIMESTAMP);
private String outputEncoding = GeneralUtils.getDefaultFileEncoding();
private boolean outputEncodingBOM = true;
private DBDDataFormatterProfile formatterProfile;
private boolean outputClipboard = false;
private boolean compressResults = false;
private boolean openFolderOnFinish = true;
private boolean executeProcessOnFinish = false;
private String finishProcessCommand = null;
public LobExtractType getLobExtractType() {
return lobExtractType;
}
public void setLobExtractType(LobExtractType lobExtractType) {
this.lobExtractType = lobExtractType;
}
public LobEncoding getLobEncoding() {
return lobEncoding;
}
public void setLobEncoding(LobEncoding lobEncoding) {
this.lobEncoding = lobEncoding;
}
public String getOutputFolder() {
return outputFolder;
}
public void setOutputFolder(String outputFolder) {
this.outputFolder = outputFolder;
}
public String getOutputFilePattern() {
return outputFilePattern;
}
public void setOutputFilePattern(String outputFilePattern) {
this.outputFilePattern = outputFilePattern;
}
public String getOutputEncoding() {
return outputEncoding;
}
public void setOutputEncoding(String outputEncoding) {
this.outputEncoding = outputEncoding;
}
public boolean isOutputEncodingBOM() {
return outputEncodingBOM;
}
public void setOutputEncodingBOM(boolean outputEncodingBOM) {
this.outputEncodingBOM = outputEncodingBOM;
}
public boolean isOutputClipboard() {
return outputClipboard;
}
public void setOutputClipboard(boolean outputClipboard) {
this.outputClipboard = outputClipboard;
}
public boolean isCompressResults() {
return compressResults;
}
public void setCompressResults(boolean compressResults) {
this.compressResults = compressResults;
}
public boolean isOpenFolderOnFinish() {
return openFolderOnFinish;
}
public void setOpenFolderOnFinish(boolean openFolderOnFinish) {
this.openFolderOnFinish = openFolderOnFinish;
}
public boolean isExecuteProcessOnFinish() {
return executeProcessOnFinish;
}
public void setExecuteProcessOnFinish(boolean executeProcessOnFinish) {
this.executeProcessOnFinish = executeProcessOnFinish;
}
public String getFinishProcessCommand() {
return finishProcessCommand;
}
public void setFinishProcessCommand(String finishProcessCommand) {
this.finishProcessCommand = finishProcessCommand;
}
public DBDDataFormatterProfile getFormatterProfile() {
return formatterProfile;
}
public void setFormatterProfile(DBDDataFormatterProfile formatterProfile) {
this.formatterProfile = formatterProfile;
}
@Override
public void loadSettings(IRunnableContext runnableContext, DataTransferSettings dataTransferSettings, IDialogSettings dialogSettings) {
if (!CommonUtils.isEmpty(dialogSettings.get("lobExtractType"))) {
try {
lobExtractType = LobExtractType.valueOf(dialogSettings.get("lobExtractType"));
} catch (IllegalArgumentException e) {
lobExtractType = LobExtractType.SKIP;
}
}
if (!CommonUtils.isEmpty(dialogSettings.get("lobEncoding"))) {
try {
lobEncoding = LobEncoding.valueOf(dialogSettings.get("lobEncoding"));
} catch (IllegalArgumentException e) {
lobEncoding = LobEncoding.HEX;
}
}
if (!CommonUtils.isEmpty(dialogSettings.get("outputFolder"))) {
outputFolder = dialogSettings.get("outputFolder");
}
if (!CommonUtils.isEmpty(dialogSettings.get("outputFilePattern"))) {
outputFilePattern = dialogSettings.get("outputFilePattern");
}
if (!CommonUtils.isEmpty(dialogSettings.get("outputEncoding"))) {
outputEncoding = dialogSettings.get("outputEncoding");
}
if (!CommonUtils.isEmpty(dialogSettings.get("outputEncodingBOM"))) {
outputEncodingBOM = dialogSettings.getBoolean("outputEncodingBOM");
}
if (!CommonUtils.isEmpty(dialogSettings.get("outputClipboard"))) {
outputClipboard = dialogSettings.getBoolean("outputClipboard");
}
if (!CommonUtils.isEmpty(dialogSettings.get("compressResults"))) {
compressResults = dialogSettings.getBoolean("compressResults");
}
if (dialogSettings.get("openFolderOnFinish") != null) {
openFolderOnFinish = dialogSettings.getBoolean("openFolderOnFinish");
}
if (dialogSettings.get("executeProcessOnFinish") != null) {
executeProcessOnFinish = dialogSettings.getBoolean("executeProcessOnFinish");
}
if (!CommonUtils.isEmpty(dialogSettings.get("finishProcessCommand"))) {
finishProcessCommand = dialogSettings.get("finishProcessCommand");
}
if (!CommonUtils.isEmpty(dialogSettings.get("formatterProfile"))) {
formatterProfile = DataFormatterRegistry.getInstance().getCustomProfile(dialogSettings.get("formatterProfile"));
}
}
@Override
public void saveSettings(IDialogSettings dialogSettings) {
dialogSettings.put("lobExtractType", lobExtractType.name());
dialogSettings.put("lobEncoding", lobEncoding.name());
dialogSettings.put("outputFolder", outputFolder);
dialogSettings.put("outputFilePattern", outputFilePattern);
dialogSettings.put("outputEncoding", outputEncoding);
dialogSettings.put("outputEncodingBOM", outputEncodingBOM);
dialogSettings.put("outputClipboard", outputClipboard);
dialogSettings.put("compressResults", compressResults);
dialogSettings.put("openFolderOnFinish", openFolderOnFinish);
dialogSettings.put("executeProcessOnFinish", executeProcessOnFinish);
dialogSettings.put("finishProcessCommand", finishProcessCommand);
if (formatterProfile != null) {
dialogSettings.put("formatterProfile", formatterProfile.getProfileName());
} else {
dialogSettings.put("formatterProfile", "");
}
}
}