提交 f5ec3da3 编写于 作者: S serge-rider

dbeaver/dbeaver#9293 Data formatting settings refactoring

上级 e8bc25c3
......@@ -23,10 +23,7 @@ import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.*;
import org.jkiss.dbeaver.model.app.DBPProject;
import org.jkiss.dbeaver.model.data.DBDAttributeBinding;
import org.jkiss.dbeaver.model.data.DBDContent;
import org.jkiss.dbeaver.model.data.DBDContentStorage;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.data.*;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCResultSet;
import org.jkiss.dbeaver.model.exec.DBCSession;
......@@ -226,8 +223,8 @@ public class StreamTransferConsumer implements IDataTransferConsumer<StreamConsu
}
private void initExporter(DBCSession session) throws DBCException {
if (settings.getFormatterProfile() != null) {
session.setDataFormatterProfile(settings.getFormatterProfile());
if (settings.getFormatterProfile() != null && session instanceof DBDFormatSettingsExt) {
((DBDFormatSettingsExt)session).setDataFormatterProfile(settings.getFormatterProfile());
}
exportSite = new StreamExportSite();
......
......@@ -22,7 +22,7 @@ import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.DBPDataSourceInfo;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
......@@ -82,7 +82,7 @@ public class StreamDataSource extends AbstractSimpleDataSource<StreamExecutionCo
// We need to implement value handler provider to pass default value handler for attribute bindings
@Nullable
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject) {
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject) {
return DefaultValueHandler.INSTANCE;
}
......
......@@ -21,6 +21,7 @@ import org.eclipse.equinox.security.storage.ISecurePreferences;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.model.*;
import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry;
import org.jkiss.dbeaver.model.app.DBPPlatform;
......@@ -358,12 +359,22 @@ class StreamDataSourceContainer implements DBPDataSourceContainer {
@Override
public DBDDataFormatterProfile getDataFormatterProfile() {
return null;
return DBWorkbench.getPlatform().getDataFormatterRegistry().getGlobalProfile();
}
@Override
public boolean isUseNativeDateTimeFormat() {
return ModelPreferences.getPreferences().getBoolean(ModelPreferences.RESULT_NATIVE_DATETIME_FORMAT);
}
@Override
public void setDataFormatterProfile(DBDDataFormatterProfile formatterProfile) {
public boolean isUseNativeNumericFormat() {
return ModelPreferences.getPreferences().getBoolean(ModelPreferences.RESULT_NATIVE_NUMERIC_FORMAT);
}
@Override
public boolean isUseScientificNumericFormat() {
return ModelPreferences.getPreferences().getBoolean(ModelPreferences.RESULT_SCIENTIFIC_NUMERIC_FORMAT);
}
@NotNull
......
......@@ -17,7 +17,7 @@
package org.jkiss.dbeaver.ext.db2.data;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCSession;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
......@@ -36,8 +36,8 @@ public class DB2DecFloatValueHandler extends JDBCNumberValueHandler {
final static int DECFLOAT_SPECIALVALUE_ENCOUNTERED = -4231;
public DB2DecFloatValueHandler(DBSTypedObject type, DBDDataFormatterProfile formatterProfile) {
super(type, formatterProfile);
public DB2DecFloatValueHandler(DBSTypedObject type, DBDFormatSettings formatSettings) {
super(type, formatSettings);
}
@Nullable
......
......@@ -16,7 +16,7 @@
*/
package org.jkiss.dbeaver.ext.db2.data;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCNumberValueHandler;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -25,8 +25,8 @@ import org.jkiss.dbeaver.model.struct.DBSTypedObject;
*/
public class DB2NumericValueHandler extends JDBCNumberValueHandler {
DB2NumericValueHandler(DBSTypedObject type, DBDDataFormatterProfile formatterProfile) {
super(type, formatterProfile);
DB2NumericValueHandler(DBSTypedObject type, DBDFormatSettings formatSettings) {
super(type, formatSettings);
}
@Override
......
......@@ -17,7 +17,7 @@
package org.jkiss.dbeaver.ext.db2.data;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCDateTimeValueHandler;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
import org.jkiss.utils.time.ExtendedDateFormat;
......@@ -33,9 +33,9 @@ public class DB2TimestampValueHandler extends JDBCDateTimeValueHandler {
private final SimpleDateFormat DEFAULT_DATETIME_FORMAT = new ExtendedDateFormat("''yyyy-MM-dd HH:mm:ss.ffffff''");
public DB2TimestampValueHandler(DBDDataFormatterProfile formatterProfile)
public DB2TimestampValueHandler(DBDFormatSettings formatSettings)
{
super(formatterProfile);
super(formatSettings);
}
@Nullable
......
......@@ -20,7 +20,7 @@ package org.jkiss.dbeaver.ext.db2.data;
import org.jkiss.dbeaver.ext.db2.DB2Constants;
import org.jkiss.dbeaver.model.DBPDataKind;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -44,15 +44,15 @@ public class DB2ValueHandlerProvider implements DBDValueHandlerProvider {
};
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject)
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject)
{
final String typeName = typedObject.getTypeName();
if (DB2Constants.TYPE_NAME_DECFLOAT.equals(typeName)) {
return new DB2DecFloatValueHandler(typedObject, preferences.getDataFormatterProfile());
return new DB2DecFloatValueHandler(typedObject, preferences);
} else if (ArrayUtils.contains(NUMERIC_TYPES, typedObject.getTypeID())) {
//return new DB2NumericValueHandler(typedObject, preferences.getDataFormatterProfile());
} else if (typeName.contains("TIMESTAMP") || typedObject.getDataKind() == DBPDataKind.DATETIME) {
return new DB2TimestampValueHandler(preferences.getDataFormatterProfile());
return new DB2TimestampValueHandler(preferences);
}
return null;
}
......
......@@ -20,7 +20,7 @@ package org.jkiss.dbeaver.ext.exasol;
import org.jkiss.dbeaver.data.gis.handlers.GISGeometryValueHandler;
import org.jkiss.dbeaver.model.DBPDataKind;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCDateTimeValueHandler;
......@@ -29,10 +29,10 @@ import org.jkiss.dbeaver.model.struct.DBSTypedObject;
public class ExasolValueHandlerProvider implements DBDValueHandlerProvider {
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences,
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences,
DBSTypedObject typedObject) {
if (typedObject.getDataKind() == DBPDataKind.DATETIME) {
return new JDBCDateTimeValueHandler(preferences.getDataFormatterProfile());
return new JDBCDateTimeValueHandler(preferences);
}
String typeID = typedObject.getTypeName();
......
......@@ -18,7 +18,7 @@ package org.jkiss.dbeaver.ext.generic.data;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ext.generic.model.GenericDataSource;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCDateTimeValueHandler;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -32,9 +32,9 @@ public class GenericTimestampValueHandler extends JDBCDateTimeValueHandler {
private final GenericDataSource dataSource;
public GenericTimestampValueHandler(GenericDataSource dataSource, DBDDataFormatterProfile formatterProfile)
public GenericTimestampValueHandler(GenericDataSource dataSource, DBDFormatSettings formatSettings)
{
super(formatterProfile);
super(formatSettings);
this.dataSource = dataSource;
}
......
......@@ -19,7 +19,7 @@ package org.jkiss.dbeaver.ext.generic.data;
import org.jkiss.dbeaver.ext.generic.model.GenericDataSource;
import org.jkiss.dbeaver.model.DBPDataKind;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -30,10 +30,10 @@ import org.jkiss.dbeaver.model.struct.DBSTypedObject;
public class GenericValueHandlerProvider implements DBDValueHandlerProvider {
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject)
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject)
{
if (typedObject.getDataKind() == DBPDataKind.DATETIME) {
return new GenericTimestampValueHandler((GenericDataSource) dataSource, preferences.getDataFormatterProfile());
return new GenericTimestampValueHandler((GenericDataSource) dataSource, preferences);
} else {
return null;
}
......
......@@ -18,7 +18,7 @@ package org.jkiss.dbeaver.ext.h2gis.data;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -30,7 +30,7 @@ public class H2GISValueHandlerProvider implements DBDValueHandlerProvider {
@Nullable
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject)
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject)
{
if (typedObject.getTypeName().equalsIgnoreCase("GEOMETRY")) {
return H2GISGeometryValueHandler.INSTANCE;
......
......@@ -21,7 +21,7 @@ package org.jkiss.dbeaver.ext.hana.model.data;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -30,7 +30,7 @@ public class HANAValueHandlerProvider implements DBDValueHandlerProvider {
@Nullable
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences,
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences,
DBSTypedObject typedObject) {
switch (typedObject.getTypeName()) {
case "ST_GEOMETRY":
......
......@@ -19,8 +19,8 @@ package org.jkiss.dbeaver.ext.mysql.data;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ext.mysql.MySQLConstants;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCResultSet;
import org.jkiss.dbeaver.model.exec.DBCSession;
......@@ -47,9 +47,9 @@ public class MySQLDateTimeValueHandler extends JDBCDateTimeValueHandler {
private static final String ZERO_DATE_STRING = "0000-00-00";
private static final String ZERO_TIMESTAMP_STRING = "0000-00-00 00:00:00";
public MySQLDateTimeValueHandler(DBDDataFormatterProfile formatterProfile)
public MySQLDateTimeValueHandler(DBDFormatSettings formatSettings)
{
super(formatterProfile);
super(formatSettings);
}
@Override
......
......@@ -18,8 +18,8 @@ package org.jkiss.dbeaver.ext.mysql.data;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession;
......@@ -36,8 +36,8 @@ import java.sql.Types;
public class MySQLNumberValueHandler extends JDBCNumberValueHandler {
public MySQLNumberValueHandler(DBSTypedObject type, DBDDataFormatterProfile formatterProfile) {
super(type, formatterProfile);
public MySQLNumberValueHandler(DBSTypedObject type, DBDFormatSettings formatSettings) {
super(type, formatSettings);
}
/**
......
......@@ -21,7 +21,7 @@ import org.jkiss.dbeaver.data.gis.handlers.GISGeometryValueHandler;
import org.jkiss.dbeaver.ext.mysql.MySQLConstants;
import org.jkiss.dbeaver.model.DBPDataKind;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCContentValueHandler;
......@@ -34,12 +34,12 @@ public class MySQLValueHandlerProvider implements DBDValueHandlerProvider {
@Nullable
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject)
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject)
{
if (typedObject.getDataKind() == DBPDataKind.DATETIME) {
return new MySQLDateTimeValueHandler(preferences.getDataFormatterProfile());
return new MySQLDateTimeValueHandler(preferences);
} else if (typedObject.getDataKind() == DBPDataKind.NUMERIC) {
return new MySQLNumberValueHandler(typedObject, preferences.getDataFormatterProfile());
return new MySQLNumberValueHandler(typedObject, preferences);
} else if (typedObject.getTypeName().equalsIgnoreCase(MySQLConstants.TYPE_JSON)) {
return JDBCContentValueHandler.INSTANCE;
} else if (typedObject.getTypeName().equalsIgnoreCase(MySQLConstants.TYPE_GEOMETRY)) {
......
......@@ -19,7 +19,7 @@ package org.jkiss.dbeaver.ext.oracle.data;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ext.oracle.model.OracleConstants;
import org.jkiss.dbeaver.model.data.DBDDataFormatter;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCTemporalAccessorValueHandler;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -35,9 +35,9 @@ public class OracleTemporalAccessorValueHandler extends JDBCTemporalAccessorValu
private static final DateTimeFormatter DEFAULT_DATE_FORMAT = DateTimeFormatter.ofPattern("'DATE '''yyyy-MM-dd''");
private static final DateTimeFormatter DEFAULT_TIME_FORMAT = DateTimeFormatter.ofPattern("'TIME '''HH:mm:ss.SSS''");
public OracleTemporalAccessorValueHandler(DBDDataFormatterProfile formatterProfile)
public OracleTemporalAccessorValueHandler(DBDFormatSettings formatSettings)
{
super(formatterProfile);
super(formatSettings);
}
@Nullable
......
......@@ -20,7 +20,7 @@ import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.ext.oracle.model.OracleConstants;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCSession;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession;
......@@ -46,8 +46,8 @@ public class OracleTimestampValueHandler extends JDBCDateTimeValueHandler {
//private static Method TIMESTAMP_READ_METHOD = null, TIMESTAMPTZ_READ_METHOD = null, TIMESTAMPLTZ_READ_METHOD = null;
public OracleTimestampValueHandler(DBDDataFormatterProfile formatterProfile) {
super(formatterProfile);
public OracleTimestampValueHandler(DBDFormatSettings formatSettings) {
super(formatSettings);
}
@Override
......
......@@ -20,7 +20,7 @@ import org.jkiss.dbeaver.ext.oracle.model.OracleConstants;
import org.jkiss.dbeaver.ext.oracle.model.OracleDataSource;
import org.jkiss.dbeaver.model.DBPDataKind;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -33,7 +33,7 @@ import java.sql.Types;
public class OracleValueHandlerProvider implements DBDValueHandlerProvider {
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject)
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject)
{
switch (typedObject.getTypeID()) {
case Types.BLOB:
......@@ -45,9 +45,9 @@ public class OracleValueHandlerProvider implements DBDValueHandlerProvider {
case Types.TIMESTAMP_WITH_TIMEZONE:
case OracleConstants.DATA_TYPE_TIMESTAMP_WITH_TIMEZONE:
if (((OracleDataSource)dataSource).isDriverVersionAtLeast(12, 2)) {
return new OracleTemporalAccessorValueHandler(preferences.getDataFormatterProfile());
return new OracleTemporalAccessorValueHandler(preferences);
} else {
return new OracleTimestampValueHandler(preferences.getDataFormatterProfile());
return new OracleTimestampValueHandler(preferences);
}
case Types.STRUCT:
return OracleObjectValueHandler.INSTANCE;
......@@ -63,7 +63,7 @@ public class OracleValueHandlerProvider implements DBDValueHandlerProvider {
}
if (typeName.contains(OracleConstants.TYPE_NAME_TIMESTAMP) || typedObject.getDataKind() == DBPDataKind.DATETIME) {
return new OracleTimestampValueHandler(preferences.getDataFormatterProfile());
return new OracleTimestampValueHandler(preferences);
} else {
return null;
}
......
......@@ -18,7 +18,7 @@ package org.jkiss.dbeaver.ext.phoenix.model.data;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -32,7 +32,7 @@ public class PhoenixValueHandlerProvider implements DBDValueHandlerProvider {
@Nullable
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject)
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject)
{
int typeID = typedObject.getTypeID();
if (typeID == Types.ARRAY) {
......
......@@ -17,7 +17,7 @@
package org.jkiss.dbeaver.ext.postgresql.model.data;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCResultSet;
import org.jkiss.dbeaver.model.exec.DBCSession;
......@@ -36,8 +36,8 @@ import java.sql.Types;
public class PostgreDateTimeValueHandler extends JDBCDateTimeValueHandler {
public PostgreDateTimeValueHandler(DBDDataFormatterProfile formatterProfile) {
super(formatterProfile);
public PostgreDateTimeValueHandler(DBDFormatSettings formatSettings) {
super(formatSettings);
}
@Override
......
......@@ -16,7 +16,7 @@
*/
package org.jkiss.dbeaver.ext.postgresql.model.data;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCTemporalAccessorValueHandler;
/**
......@@ -25,7 +25,7 @@ import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCTemporalAccessorValue
public class PostgreTemporalAccessorValueHandler extends JDBCTemporalAccessorValueHandler {
public PostgreTemporalAccessorValueHandler(DBDDataFormatterProfile formatterProfile) {
public PostgreTemporalAccessorValueHandler(DBDFormatSettings formatterProfile) {
super(formatterProfile);
}
......
......@@ -21,7 +21,7 @@ import org.jkiss.dbeaver.ext.postgresql.PostgreConstants;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreDataSource;
import org.jkiss.dbeaver.model.DBPDataKind;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -35,7 +35,7 @@ public class PostgreValueHandlerProvider implements DBDValueHandlerProvider {
@Nullable
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject) {
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject) {
// // FIXME: This doesn't work as data type information is not available during RS metadata reading
// DBSDataType dataType = DBUtils.getDataType(typedObject);
// if (dataType instanceof PostgreDataType && ((PostgreDataType) dataType).getTypeCategory() == PostgreTypeCategory.E) {
......@@ -53,9 +53,9 @@ public class PostgreValueHandlerProvider implements DBDValueHandlerProvider {
case Types.TIMESTAMP:
case Types.TIMESTAMP_WITH_TIMEZONE:
if (((PostgreDataSource) dataSource).getServerType().supportsTemporalAccessor()) {
return new PostgreTemporalAccessorValueHandler(preferences.getDataFormatterProfile());
return new PostgreTemporalAccessorValueHandler(preferences);
} else {
return new PostgreDateTimeValueHandler(preferences.getDataFormatterProfile());
return new PostgreDateTimeValueHandler(preferences);
}
default:
switch (typedObject.getTypeName()) {
......
......@@ -19,11 +19,10 @@ package org.jkiss.dbeaver.ext.sqlite.model.data;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.model.DBValueFormatting;
import org.jkiss.dbeaver.model.data.DBDDataFormatter;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandlerConfigurable;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCSession;
......@@ -45,14 +44,14 @@ public class SQLiteValueHandler extends JDBCAbstractValueHandler implements DBDV
private static final Log log = Log.getLog(SQLiteValueHandler.class);
private final DBDDataFormatterProfile formatterProfile;
private final DBDFormatSettings formatSettings;
private final DBSTypedObject type;
private DBDDataFormatter numberFormatter;
private DBDDataFormatter timestampFormatter;
public SQLiteValueHandler(DBSTypedObject type, DBDDataFormatterProfile formatterProfile)
public SQLiteValueHandler(DBSTypedObject type, DBDFormatSettings formatSettings)
{
this.formatterProfile = formatterProfile;
this.formatSettings = formatSettings;
this.type = type;
}
......@@ -87,11 +86,11 @@ public class SQLiteValueHandler extends JDBCAbstractValueHandler implements DBDV
if (format == DBDDisplayFormat.NATIVE || format == DBDDisplayFormat.EDIT) {
return DBValueFormatting.convertNumberToNativeString(
(Number) value,
formatterProfile.getPreferenceStore().getBoolean(ModelPreferences.RESULT_SCIENTIFIC_NUMERIC_FORMAT));
formatSettings.isUseScientificNumericFormat());
} else {
if (numberFormatter == null) {
try {
numberFormatter = formatterProfile.createFormatter(DBDDataFormatter.TYPE_NAME_NUMBER, type);
numberFormatter = formatSettings.getDataFormatterProfile().createFormatter(DBDDataFormatter.TYPE_NAME_NUMBER, type);
} catch (Exception e) {
log.error("Can't create numberFormatter for number value handler", e); //$NON-NLS-1$
numberFormatter = DefaultDataFormatter.INSTANCE;
......@@ -103,7 +102,7 @@ public class SQLiteValueHandler extends JDBCAbstractValueHandler implements DBDV
if (timestampFormatter == null) {
try {
timestampFormatter = formatterProfile.createFormatter(DBDDataFormatter.TYPE_NAME_TIMESTAMP, type);
timestampFormatter = formatSettings.getDataFormatterProfile().createFormatter(DBDDataFormatter.TYPE_NAME_TIMESTAMP, type);
} catch (Exception e) {
log.error("Can't create timestampFormatter for timestamp value handler", e); //$NON-NLS-1$
timestampFormatter = DefaultDataFormatter.INSTANCE;
......
......@@ -19,7 +19,7 @@ package org.jkiss.dbeaver.ext.sqlite.model.data;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPDataKind;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCContentValueHandler;
......@@ -32,14 +32,14 @@ public class SQLiteValueHandlerProvider implements DBDValueHandlerProvider {
@Nullable
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject)
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject)
{
final DBPDataKind dataKind = typedObject.getDataKind();
if (dataKind == DBPDataKind.BINARY) {
return JDBCContentValueHandler.INSTANCE;
}
// All types must be handled by unified SQLite handler
return new SQLiteValueHandler(typedObject, preferences.getDataFormatterProfile());
return new SQLiteValueHandler(typedObject, preferences);
}
}
\ No newline at end of file
......@@ -24,7 +24,7 @@ import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement;
......@@ -107,7 +107,7 @@ public class TeradataMetaModel extends GenericMetaModel implements DBDValueHandl
@Nullable
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject) {
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject) {
if ("JSON".equals(typedObject.getTypeName())) {
return JDBCContentValueHandler.INSTANCE;
}
......
......@@ -17,7 +17,7 @@
package org.jkiss.dbeaver.ext.wmi.model;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.impl.data.DefaultValueHandler;
......@@ -29,7 +29,7 @@ import org.jkiss.dbeaver.model.struct.DBSTypedObject;
public class WMIValueHandlerProvider implements DBDValueHandlerProvider {
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject)
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject)
{
return DefaultValueHandler.INSTANCE;
}
......
......@@ -26,7 +26,7 @@ import org.jkiss.dbeaver.model.app.DBPProject;
import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration;
import org.jkiss.dbeaver.model.connection.DBPDriver;
import org.jkiss.dbeaver.model.connection.DBPNativeClientLocation;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
import org.jkiss.dbeaver.model.net.DBWNetworkHandler;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
......@@ -43,7 +43,7 @@ import java.util.Date;
/**
* DBPDataSourceContainer
*/
public interface DBPDataSourceContainer extends DBSObject, DBDPreferences, DBPNamedObject2, DBPDataSourcePermissionOwner
public interface DBPDataSourceContainer extends DBSObject, DBDFormatSettings, DBPNamedObject2, DBPDataSourcePermissionOwner
{
/**
* Container unique ID
......
......@@ -842,7 +842,7 @@ public final class DBUtils {
}
@NotNull
public static DBDValueHandler findValueHandler(@Nullable DBPDataSource dataSource, @Nullable DBDPreferences preferences, @NotNull DBSTypedObject column)
public static DBDValueHandler findValueHandler(@Nullable DBPDataSource dataSource, @Nullable DBDFormatSettings preferences, @NotNull DBSTypedObject column)
{
DBDValueHandler valueHandler = null;
// Get handler provider from datasource
......
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2020 DBeaver Corp and others
*
* 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.model.data;
import org.jkiss.code.NotNull;
/**
* Data preferences
*/
public interface DBDPreferences {
/**
* Gets current context's data formatter profile
* @return profile
*/
DBDDataFormatterProfile getDataFormatterProfile();
/**
* Sets current context's data formatter profile
*/
void setDataFormatterProfile(DBDDataFormatterProfile formatterProfile);
/**
* Default value handler
* @return value handler instance
*/
@NotNull
DBDValueHandler getDefaultValueHandler();
}
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2020 DBeaver Corp and others
*
* 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.model.data;
import org.jkiss.code.NotNull;
/**
* Data preferences
*/
public interface DBDFormatSettings {
/**
* Gets current context's data formatter profile
* @return profile
*/
DBDDataFormatterProfile getDataFormatterProfile();
boolean isUseNativeDateTimeFormat();
boolean isUseNativeNumericFormat();
boolean isUseScientificNumericFormat();
/**
* Default value handler
* @return value handler instance
*/
@NotNull
DBDValueHandler getDefaultValueHandler();
}
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2020 DBeaver Corp and others
*
* 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.model.data;
/**
* Data preferences editor
*/
public interface DBDFormatSettingsExt {
/**
* Sets current context's data formatter profile
*/
void setDataFormatterProfile(DBDDataFormatterProfile formatterProfile);
void setUseNativeDateTimeFormat(boolean useNativeDateTimeFormat);
}
......@@ -28,6 +28,6 @@ public interface DBDValueHandlerProvider
{
@Nullable
DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject);
DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject);
}
\ No newline at end of file
......@@ -19,13 +19,13 @@ package org.jkiss.dbeaver.model.exec;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.DBPCloseableObject;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
/**
* Execution session
*/
public interface DBCSession extends DBPCloseableObject, DBDPreferences {
public interface DBCSession extends DBPCloseableObject, DBDFormatSettings {
/**
* Session title
......
......@@ -18,6 +18,7 @@ package org.jkiss.dbeaver.model.impl;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDFormatSettingsExt;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose;
import org.jkiss.dbeaver.model.exec.DBCSession;
......@@ -29,7 +30,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
/**
* Abstract execution context
*/
public abstract class AbstractSession implements DBCSession, DBRBlockingObject {
public abstract class AbstractSession implements DBCSession, DBDFormatSettingsExt, DBRBlockingObject {
private DBRProgressMonitor monitor;
private DBCExecutionPurpose purpose;
......@@ -37,9 +38,9 @@ public abstract class AbstractSession implements DBCSession, DBRBlockingObject {
private DBDDataFormatterProfile dataFormatterProfile;
private boolean holdsBlock = false;
private boolean loggingEnabled = true;
private byte useNativeDateTimeFormat = -1;
public AbstractSession(DBRProgressMonitor monitor, DBCExecutionPurpose purpose, String taskTitle)
{
public AbstractSession(DBRProgressMonitor monitor, DBCExecutionPurpose purpose, String taskTitle) {
this.monitor = monitor;
this.purpose = purpose;
this.taskTitle = taskTitle;
......@@ -55,28 +56,24 @@ public abstract class AbstractSession implements DBCSession, DBRBlockingObject {
@NotNull
@Override
public String getTaskTitle()
{
public String getTaskTitle() {
return taskTitle;
}
@Override
public boolean isConnected()
{
public boolean isConnected() {
return true;
}
@NotNull
@Override
public DBRProgressMonitor getProgressMonitor()
{
public DBRProgressMonitor getProgressMonitor() {
return monitor;
}
@NotNull
@Override
public DBCExecutionPurpose getPurpose()
{
public DBCExecutionPurpose getPurpose() {
return purpose;
}
......@@ -91,8 +88,7 @@ public abstract class AbstractSession implements DBCSession, DBRBlockingObject {
}
@Override
public DBDDataFormatterProfile getDataFormatterProfile()
{
public DBDDataFormatterProfile getDataFormatterProfile() {
if (dataFormatterProfile == null) {
return getDataSource().getContainer().getDataFormatterProfile();
}
......@@ -100,21 +96,41 @@ public abstract class AbstractSession implements DBCSession, DBRBlockingObject {
}
@Override
public void setDataFormatterProfile(DBDDataFormatterProfile formatterProfile)
{
public void setDataFormatterProfile(DBDDataFormatterProfile formatterProfile) {
dataFormatterProfile = formatterProfile;
}
@Override
public boolean isUseNativeDateTimeFormat() {
if (useNativeDateTimeFormat == -1) {
useNativeDateTimeFormat = (byte) (getExecutionContext().getDataSource().getContainer().isUseNativeDateTimeFormat() ? 1 : 0);
}
return useNativeDateTimeFormat == 1;
}
@Override
public void setUseNativeDateTimeFormat(boolean useNativeDateTimeFormat) {
this.useNativeDateTimeFormat = (byte) (useNativeDateTimeFormat ? 1 : 0);
}
@Override
public boolean isUseNativeNumericFormat() {
return getExecutionContext().getDataSource().getContainer().isUseNativeNumericFormat();
}
@Override
public boolean isUseScientificNumericFormat() {
return getExecutionContext().getDataSource().getContainer().isUseScientificNumericFormat();
}
@NotNull
@Override
public DBDValueHandler getDefaultValueHandler()
{
public DBDValueHandler getDefaultValueHandler() {
return DefaultValueHandler.INSTANCE;
}
@Override
public void close()
{
public void close() {
if (holdsBlock) {
monitor.endBlock();
holdsBlock = false;
......
......@@ -18,10 +18,9 @@ package org.jkiss.dbeaver.model.impl.data;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.model.data.DBDDataFormatter;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandlerConfigurable;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCSession;
......@@ -38,12 +37,12 @@ public abstract class DateTimeCustomValueHandler extends DateTimeValueHandler im
protected static final Log log = Log.getLog(DateTimeCustomValueHandler.class);
private final DBDDataFormatterProfile formatterProfile;
protected final DBDFormatSettings formatSettings;
protected DBDDataFormatter formatter;
public DateTimeCustomValueHandler(DBDDataFormatterProfile formatterProfile)
public DateTimeCustomValueHandler(DBDFormatSettings formatSettings)
{
this.formatterProfile = formatterProfile;
this.formatSettings = formatSettings;
}
@Override
......@@ -59,7 +58,7 @@ public abstract class DateTimeCustomValueHandler extends DateTimeValueHandler im
// NULL date
return null;
}
if (session != null && session.getDataSource().getContainer().getPreferenceStore().getBoolean(ModelPreferences.RESULT_NATIVE_DATETIME_FORMAT)) {
if (session != null && session.isUseNativeDateTimeFormat()) {
// Do not use formatter for native format
return object;
}
......@@ -103,7 +102,7 @@ public abstract class DateTimeCustomValueHandler extends DateTimeValueHandler im
private DBDDataFormatter getFormatter(DBSTypedObject typedObject, String typeId)
{
try {
return formatterProfile.createFormatter(typeId, typedObject);
return formatSettings.getDataFormatterProfile().createFormatter(typeId, typedObject);
} catch (Exception e) {
log.error("Can't create formatter for datetime value handler", e); //$NON-NLS-1$
return DefaultDataFormatter.INSTANCE;
......
......@@ -19,8 +19,8 @@ package org.jkiss.dbeaver.model.impl.data;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.data.DBDDataFormatter;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandlerConfigurable;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCSession;
......@@ -40,11 +40,11 @@ public abstract class TemporalAccessorValueHandler extends BaseValueHandler impl
protected static final Log log = Log.getLog(TemporalAccessorValueHandler.class);
private final DBDDataFormatterProfile formatterProfile;
private final DBDFormatSettings formatSettings;
protected DBDDataFormatter formatter;
public TemporalAccessorValueHandler(DBDDataFormatterProfile formatterProfile) {
this.formatterProfile = formatterProfile;
public TemporalAccessorValueHandler(DBDFormatSettings formatSettings) {
this.formatSettings = formatSettings;
}
@Override
......@@ -102,7 +102,7 @@ public abstract class TemporalAccessorValueHandler extends BaseValueHandler impl
{
if (formatter == null) {
try {
formatter = formatterProfile.createFormatter(getFormatterId(column), column);
formatter = formatSettings.getDataFormatterProfile().createFormatter(getFormatterId(column), column);
} catch (Exception e) {
log.error("Can't create formatter for zoned datetime value handler", e); //$NON-NLS-1$
formatter = DefaultDataFormatter.INSTANCE;
......
......@@ -27,15 +27,11 @@ import org.jkiss.dbeaver.model.auth.DBAAuthCredentials;
import org.jkiss.dbeaver.model.auth.DBAAuthModel;
import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration;
import org.jkiss.dbeaver.model.connection.DBPDriver;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.exec.*;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCDatabaseMetaData;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCFactory;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCStatement;
import org.jkiss.dbeaver.model.impl.jdbc.data.handlers.JDBCObjectValueHandler;
import org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCConnectionImpl;
import org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCFactoryDefault;
import org.jkiss.dbeaver.model.messages.ModelMessages;
......@@ -69,7 +65,6 @@ public abstract class JDBCDataSource
DBPDataTypeProvider,
DBPErrorAssistant,
DBPRefreshableObject,
DBDPreferences,
DBSObject,
DBSObjectContainer,
DBSInstanceContainer,
......@@ -731,23 +726,7 @@ public abstract class JDBCDataSource
}
/////////////////////////////////////////////////
// DBDPreferences
@Override
public DBDDataFormatterProfile getDataFormatterProfile() {
return container.getDataFormatterProfile();
}
@Override
public void setDataFormatterProfile(DBDDataFormatterProfile formatterProfile) {
container.setDataFormatterProfile(formatterProfile);
}
@NotNull
@Override
public DBDValueHandler getDefaultValueHandler() {
return JDBCObjectValueHandler.INSTANCE;
}
// DBDFormatSettings
public void cancelStatementExecute(DBRProgressMonitor monitor, JDBCStatement statement) throws DBException {
try {
......
......@@ -238,7 +238,7 @@ public class JDBCCollection extends AbstractDatabaseList implements DBDValueClon
// Null array of unknown type. Just make NULL read-only array
String defDataTypeName = dataSource.getDefaultDataTypeName(DBPDataKind.OBJECT);
DBSDataType defDataType = dataSource.getLocalDataType(defDataTypeName);
DBDValueHandler defValueHandler = dataSource.getDefaultValueHandler();
DBDValueHandler defValueHandler = session.getDefaultValueHandler();
return new JDBCCollection(defDataType, defValueHandler, null);
}
try {
......
......@@ -18,11 +18,10 @@ package org.jkiss.dbeaver.model.impl.jdbc.data.handlers;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.model.DBConstants;
import org.jkiss.dbeaver.model.data.DBDDataFormatter;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCResultSet;
import org.jkiss.dbeaver.model.exec.DBCSession;
......@@ -50,9 +49,9 @@ public class JDBCDateTimeValueHandler extends DateTimeCustomValueHandler {
public static final SimpleDateFormat DEFAULT_DATE_FORMAT = new SimpleDateFormat("''" + DBConstants.DEFAULT_DATE_FORMAT + "''");
public static final SimpleDateFormat DEFAULT_TIME_FORMAT = new SimpleDateFormat("''" + DBConstants.DEFAULT_TIME_FORMAT + "''");
public JDBCDateTimeValueHandler(DBDDataFormatterProfile formatterProfile)
public JDBCDateTimeValueHandler(DBDFormatSettings formatSettings)
{
super(formatterProfile);
super(formatSettings);
}
@Override
......@@ -79,7 +78,7 @@ public class JDBCDateTimeValueHandler extends DateTimeCustomValueHandler {
JDBCResultSet dbResults = (JDBCResultSet) resultSet;
// check for native format
if (session.getDataSource().getContainer().getPreferenceStore().getBoolean(ModelPreferences.RESULT_NATIVE_DATETIME_FORMAT)) {
if (formatSettings.isUseNativeDateTimeFormat()) {
try {
return dbResults.getString(index + 1);
} catch (SQLException e) {
......
......@@ -19,7 +19,6 @@ package org.jkiss.dbeaver.model.impl.jdbc.data.handlers;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.model.DBValueFormatting;
import org.jkiss.dbeaver.model.data.*;
import org.jkiss.dbeaver.model.exec.DBCException;
......@@ -44,12 +43,12 @@ public class JDBCNumberValueHandler extends JDBCAbstractValueHandler implements
private static final Log log = Log.getLog(JDBCNumberValueHandler.class);
private final DBDDataFormatterProfile formatterProfile;
private final DBDFormatSettings formatSettings;
private int useScientificNotation = -1;
private DBDDataFormatter formatter;
public JDBCNumberValueHandler(DBSTypedObject type, DBDDataFormatterProfile formatterProfile) {
this.formatterProfile = formatterProfile;
public JDBCNumberValueHandler(DBSTypedObject type, DBDFormatSettings formatSettings) {
this.formatSettings = formatSettings;
}
@Override
......@@ -83,7 +82,7 @@ public class JDBCNumberValueHandler extends JDBCAbstractValueHandler implements
if (value instanceof Number && (format == DBDDisplayFormat.NATIVE || format == DBDDisplayFormat.EDIT)) {
if (useScientificNotation < 0) {
this.useScientificNotation =
formatterProfile.getPreferenceStore().getBoolean(ModelPreferences.RESULT_SCIENTIFIC_NUMERIC_FORMAT) ? 1 : 0;
formatSettings.isUseScientificNumericFormat() ? 1 : 0;
}
return DBValueFormatting.convertNumberToNativeString((Number) value, useScientificNotation > 0);
......@@ -94,7 +93,7 @@ public class JDBCNumberValueHandler extends JDBCAbstractValueHandler implements
private DBDDataFormatter getFormatter(@NotNull DBSTypedObject column) {
if (formatter == null) {
try {
formatter = formatterProfile.createFormatter(DBDDataFormatter.TYPE_NAME_NUMBER, column);
formatter = formatSettings.getDataFormatterProfile().createFormatter(DBDDataFormatter.TYPE_NAME_NUMBER, column);
} catch (Exception e) {
log.error("Can't create formatter for number value handler", e); //$NON-NLS-1$
formatter = DefaultDataFormatter.INSTANCE;
......
......@@ -18,7 +18,7 @@ package org.jkiss.dbeaver.model.impl.jdbc.data.handlers;
import org.jkiss.dbeaver.model.DBPDataKind;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.data.DBDValueHandlerProvider;
import org.jkiss.dbeaver.model.struct.DBSTypedObject;
......@@ -29,7 +29,7 @@ import org.jkiss.dbeaver.model.struct.DBSTypedObject;
public class JDBCStandardValueHandlerProvider implements DBDValueHandlerProvider {
@Override
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDPreferences preferences, DBSTypedObject typedObject)
public DBDValueHandler getValueHandler(DBPDataSource dataSource, DBDFormatSettings preferences, DBSTypedObject typedObject)
{
int valueType = typedObject.getTypeID();
DBPDataKind dataKind = typedObject.getDataKind();//JDBCUtils.resolveDataKind(dataSource, typedObject.getTypeName(), valueType);
......@@ -44,9 +44,9 @@ public class JDBCStandardValueHandlerProvider implements DBDValueHandlerProvider
return JDBCStringValueHandler.INSTANCE;
}
case NUMERIC:
return new JDBCNumberValueHandler(typedObject, preferences.getDataFormatterProfile());
return new JDBCNumberValueHandler(typedObject, preferences);
case DATETIME:
return new JDBCDateTimeValueHandler(preferences.getDataFormatterProfile());
return new JDBCDateTimeValueHandler(preferences);
case BINARY:
case CONTENT:
if ("UUID".equalsIgnoreCase(typedObject.getTypeName())) {
......
......@@ -20,8 +20,8 @@ import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBConstants;
import org.jkiss.dbeaver.model.data.DBDDataFormatter;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCResultSet;
import org.jkiss.dbeaver.model.exec.DBCSession;
......@@ -50,9 +50,9 @@ public class JDBCTemporalAccessorValueHandler extends TemporalAccessorValueHandl
public static final DateTimeFormatter DEFAULT_TIMESTAMP_FORMAT = DateTimeFormatter.ofPattern("''" + DBConstants.DEFAULT_TIMESTAMP_FORMAT + "''");
public static final DateTimeFormatter DEFAULT_TIMESTAMP_TZ_FORMAT = DateTimeFormatter.ofPattern("''" + DBConstants.DEFAULT_TIMESTAMP_TZ_FORMAT + "''");
public JDBCTemporalAccessorValueHandler(DBDDataFormatterProfile formatterProfile)
public JDBCTemporalAccessorValueHandler(DBDFormatSettings formatSettings)
{
super(formatterProfile);
super(formatSettings);
}
@Override
......@@ -60,6 +60,15 @@ public class JDBCTemporalAccessorValueHandler extends TemporalAccessorValueHandl
try {
if (resultSet instanceof JDBCResultSet) {
JDBCResultSet dbResults = (JDBCResultSet) resultSet;
if (session.isUseNativeDateTimeFormat()) {
try {
return dbResults.getString(index + 1);
} catch (SQLException e) {
log.debug("Can't read date/time value as string: " + e.getMessage());
}
}
if (isZonedType(type)) {
return dbResults.getObject(index + 1, ZonedDateTime.class);
} else {
......
......@@ -213,7 +213,7 @@ public class JDBCConnectionImpl extends AbstractSession implements JDBCSession,
@Override
public DBDValueHandler getDefaultValueHandler()
{
return context.getDataSource().getDefaultValueHandler();
return context.getDataSource().getContainer().getDefaultValueHandler();
}
private JDBCStatement makeStatement(Statement statement)
......
......@@ -156,7 +156,7 @@ public class JDBCPreparedStatementImpl extends JDBCStatementImpl<PreparedStateme
return DBValueFormatting.convertNumberToNativeString((Number) value, false);
} else if (value instanceof java.util.Date) {
try {
DBDDataFormatterProfile formatterProfile = getSession().getDataSource().getDataFormatterProfile();
DBDDataFormatterProfile formatterProfile = getSession().getDataFormatterProfile();
if (value instanceof Date) {
return SQLUtils.quoteString(connection.getDataSource(), formatterProfile.createFormatter(DBDDataFormatter.TYPE_NAME_DATE, null).formatValue(value));
} else if (value instanceof Time) {
......
......@@ -33,7 +33,7 @@ import org.jkiss.dbeaver.model.app.DBPPlatform;
import org.jkiss.dbeaver.model.app.DBPProject;
import org.jkiss.dbeaver.model.connection.*;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.data.DBDPreferences;
import org.jkiss.dbeaver.model.data.DBDFormatSettings;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCExecutionContext;
......@@ -1140,17 +1140,26 @@ public class DataSourceDescriptor
}
@Override
public void setDataFormatterProfile(DBDDataFormatterProfile formatterProfile)
{
this.formatterProfile = formatterProfile;
public boolean isUseNativeDateTimeFormat() {
return getPreferenceStore().getBoolean(ModelPreferences.RESULT_NATIVE_DATETIME_FORMAT);
}
@Override
public boolean isUseNativeNumericFormat() {
return getPreferenceStore().getBoolean(ModelPreferences.RESULT_NATIVE_NUMERIC_FORMAT);
}
@Override
public boolean isUseScientificNumericFormat() {
return getPreferenceStore().getBoolean(ModelPreferences.RESULT_SCIENTIFIC_NUMERIC_FORMAT);
}
@NotNull
@Override
public DBDValueHandler getDefaultValueHandler()
{
if (dataSource instanceof DBDPreferences) {
return ((DBDPreferences) dataSource).getDefaultValueHandler();
if (dataSource instanceof DBDFormatSettings) {
return ((DBDFormatSettings) dataSource).getDefaultValueHandler();
}
return DefaultValueHandler.INSTANCE;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册