diff --git a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/action/ERDHandlerPaste.java b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/action/ERDHandlerPaste.java index 55e4aa40efcea0191fbdd04aa79512c69179967b..101fd96ea245be6afc3bafe1e5042a4e94ef0bf9 100644 --- a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/action/ERDHandlerPaste.java +++ b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/action/ERDHandlerPaste.java @@ -66,7 +66,7 @@ public class ERDHandlerPaste extends AbstractHandler { if (editor != null && !editor.isReadOnly()) { final Collection objects = DatabaseObjectTransfer.getInstance().getObject(); if (!CommonUtils.isEmpty(objects)) { - final List erdEntities = DiagramObjectCollector.generateEntityList(editor.getDiagram(), objects); + final List erdEntities = DiagramObjectCollector.generateEntityList(editor.getDiagram(), objects, true); if (!CommonUtils.isEmpty(erdEntities)) { Command command = editor.getDiagramPart().createEntityAddCommand(erdEntities, new Point(10, 10)); editor.getCommandStack().execute(command); diff --git a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/dnd/NodeDropTargetListener.java b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/dnd/NodeDropTargetListener.java index ebfe19b89558aad93e3a743e763dd2a372fc5221..d20f49f95538a846984d78e3e159b4c893577d6b 100644 --- a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/dnd/NodeDropTargetListener.java +++ b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/dnd/NodeDropTargetListener.java @@ -63,7 +63,8 @@ public class NodeDropTargetListener extends AbstractTransferDropTargetListener { return DiagramObjectCollector.generateEntityList( ((DiagramPart) getViewer().getRootEditPart().getContents()).getDiagram(), - objects); + objects, + true); } @Override diff --git a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/model/DiagramObjectCollector.java b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/model/DiagramObjectCollector.java index 569df2d7762ee24ee428153d71812c3fa0bb11d5..776702e981cf248d444ce28dbe8e1e556fbd9081 100644 --- a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/model/DiagramObjectCollector.java +++ b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/model/DiagramObjectCollector.java @@ -40,6 +40,7 @@ public class DiagramObjectCollector { private final EntityDiagram diagram; private final List erdEntities = new ArrayList<>(); + private boolean showViews; public DiagramObjectCollector(EntityDiagram diagram) { @@ -56,6 +57,14 @@ public class DiagramObjectCollector { return tables; } + public boolean isShowViews() { + return showViews; + } + + public void setShowViews(boolean showViews) { + this.showViews = showViews; + } + private static void collectTables( DBRProgressMonitor monitor, Collection roots, @@ -115,7 +124,6 @@ public class DiagramObjectCollector { Collection roots) throws DBException { - boolean showViews = ERDActivator.getDefault().getPreferenceStore().getBoolean(ERDConstants.PREF_DIAGRAM_SHOW_VIEWS); Collection tables = collectTables(monitor, roots); for (DBSEntity table : tables) { if (DBUtils.isHiddenObject(table)) { @@ -161,7 +169,7 @@ public class DiagramObjectCollector { return erdEntities; } - public static List generateEntityList(final EntityDiagram diagram, Collection objects) + public static List generateEntityList(final EntityDiagram diagram, Collection objects, boolean showViews) { final List roots = new ArrayList<>(); for (DBPNamedObject object : objects) { @@ -175,6 +183,9 @@ public class DiagramObjectCollector { try { UIUtils.runInProgressService(monitor -> { DiagramObjectCollector collector = new DiagramObjectCollector(diagram); + collector.setShowViews(showViews); + //boolean showViews = ERDActivator.getDefault().getPreferenceStore().getBoolean(ERDConstants.PREF_DIAGRAM_SHOW_VIEWS); + try { collector.generateDiagramObjects(monitor, roots); } catch (DBException e) { diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBValueFormatting.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBValueFormatting.java index 95eb351910d936247da3b64f3aa1009a9397b612..fefacfc7da9eb4eafc8bbedc37a45d9f63ae6901 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBValueFormatting.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBValueFormatting.java @@ -223,11 +223,11 @@ public final class DBValueFormatting { public static String convertNumberToNativeString(Number value) { if (value instanceof BigDecimal) { return ((BigDecimal) value).toPlainString(); - } else if (value instanceof Float) { + } /*else if (value instanceof Float) { return NATIVE_FLOAT_FORMATTER.format(value); } else if (value instanceof Double) { return NATIVE_DOUBLE_FORMATTER.format(value); - } else { + }*/ else { return value.toString(); } diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDAttributeBinding.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDAttributeBinding.java index 9b6bd99e8e858e3b87729d0fa6d84f03f4b4af13..4bcb9f2b02c5c8ebe086dc40a58361c90df476bf 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDAttributeBinding.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDAttributeBinding.java @@ -214,7 +214,7 @@ public abstract class DBDAttributeBinding implements DBSObject, DBSAttributeBase StringBuilder query = new StringBuilder(); boolean hasPrevIdentifier = false; for (DBDAttributeBinding attribute = this; attribute != null; attribute = attribute.getParentObject()) { - if (attribute.isPseudoAttribute() || attribute.getDataKind() == DBPDataKind.DOCUMENT) { + if (attribute.isPseudoAttribute() || (attribute.getParentObject() == null && attribute.getDataKind() == DBPDataKind.DOCUMENT)) { // Skip pseudo attributes and document attributes (e.g. Mongo root document) continue; } diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/data/JDBCCompositeStatic.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/data/JDBCCompositeStatic.java index 9dadf027a758402eaaa2aedb5fc7ded0027c8b5d..c4d7cf919110aad0d3c76b9b41db412b9f292bbc 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/data/JDBCCompositeStatic.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/data/JDBCCompositeStatic.java @@ -16,10 +16,10 @@ */ package org.jkiss.dbeaver.model.impl.jdbc.data; -import org.jkiss.dbeaver.Log; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; +import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.data.DBDValueHandler; import org.jkiss.dbeaver.model.exec.DBCException; @@ -32,7 +32,8 @@ import org.jkiss.utils.CommonUtils; import java.sql.SQLException; import java.sql.Struct; -import java.util.*; +import java.util.Arrays; +import java.util.Collection; /** * Static struct holder. @@ -46,8 +47,7 @@ public class JDBCCompositeStatic extends JDBCComposite { super(struct, monitor); } - public JDBCCompositeStatic(DBCSession session, @NotNull DBSDataType type, @Nullable Struct contents) throws DBCException - { + public JDBCCompositeStatic(DBCSession session, @NotNull DBSDataType type, @Nullable Struct contents) throws DBCException { super(contents); this.type = type; @@ -55,7 +55,7 @@ public class JDBCCompositeStatic extends JDBCComposite { try { Object[] attrValues = contents == null ? null : contents.getAttributes(); if (type instanceof DBSEntity) { - DBSEntity entity = (DBSEntity)type; + DBSEntity entity = (DBSEntity) type; Collection entityAttributes = CommonUtils.safeCollection(entity.getAttributes(session.getProgressMonitor())); int valueCount = attrValues == null ? 0 : attrValues.length; if (attrValues != null && entityAttributes.size() != valueCount) { @@ -87,9 +87,12 @@ public class JDBCCompositeStatic extends JDBCComposite { } @Override - public JDBCCompositeStatic cloneValue(DBRProgressMonitor monitor) throws DBCException - { + public JDBCCompositeStatic cloneValue(DBRProgressMonitor monitor) throws DBCException { return new JDBCCompositeStatic(this, monitor); } + public String getStringRepresentation() { + return Arrays.toString(values); + } + } diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetValueController.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetValueController.java index 5e6ce28d2c3841f11145a06b44fafadb27c5a530..6318763daa887221ef31aace2efee8e0292bb9d3 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetValueController.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetValueController.java @@ -31,6 +31,7 @@ import org.jkiss.dbeaver.model.exec.DBCAttributeMetaData; import org.jkiss.dbeaver.model.exec.DBCExecutionContext; import org.jkiss.dbeaver.model.struct.DBSAttributeBase; import org.jkiss.dbeaver.model.struct.DBSTypedObject; +import org.jkiss.dbeaver.runtime.DBWorkbench; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.data.IAttributeController; import org.jkiss.dbeaver.ui.data.IDataController; @@ -137,7 +138,15 @@ public class ResultSetValueController implements IAttributeController, IRowContr @Override public void updateValue(@Nullable Object value, boolean updatePresentation) { - boolean updated = controller.getModel().updateCellValue(binding, curRow, value); + boolean updated; + try { + updated = controller.getModel().updateCellValue(binding, curRow, value); + } catch (Exception e) { + UIUtils.asyncExec(() -> { + DBWorkbench.getPlatformUI().showError("Value update", "Error updating value: " + e.getMessage(), e); + }); + return; + } if (updated && updatePresentation) { // Update controls UIUtils.syncExec(new Runnable() {