From 21618fded83ec7ab68ea91d85b5f4821d1afac7e Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 23 Jul 2024 12:52:01 +0300 Subject: [PATCH 001/141] Refactor SQLHistoryDialog class code and add localisation for it --- .../gui/editor/SQLHistoryDialog.java | 464 ++++++------------ .../localization/resources.properties | 12 + .../localization/resources_ru.properties | 12 + 3 files changed, 186 insertions(+), 302 deletions(-) diff --git a/src/org/executequery/gui/editor/SQLHistoryDialog.java b/src/org/executequery/gui/editor/SQLHistoryDialog.java index e28dddf72..953ee89b5 100644 --- a/src/org/executequery/gui/editor/SQLHistoryDialog.java +++ b/src/org/executequery/gui/editor/SQLHistoryDialog.java @@ -22,8 +22,6 @@ import org.executequery.Constants; import org.executequery.GUIUtilities; -import org.executequery.gui.DefaultList; -import org.executequery.gui.DefaultPanelButton; import org.executequery.gui.WidgetFactory; import org.executequery.gui.text.SQLTextArea; import org.executequery.localization.Bundles; @@ -31,14 +29,11 @@ import org.executequery.repository.SqlCommandHistoryRepository; import org.underworldlabs.swing.AbstractBaseDialog; import org.underworldlabs.swing.FlatSplitPane; +import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.util.MiscUtils; import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.util.Vector; @@ -58,273 +53,194 @@ * * @author Takis Diakoumis */ -public class SQLHistoryDialog extends AbstractBaseDialog - implements ActionListener, - ListSelectionListener { +public class SQLHistoryDialog extends AbstractBaseDialog { - private JList historyList; + private static final String TITLE = bundleString("title"); - private Vector data; - - private QueryEditor queryEditor; + // --- GUI components --- + private SQLTextArea textPane; private JTextField searchField; + private JCheckBox openNewEditorCheck; + private JList historyList; - private JCheckBox newEditorCheck; + private JButton copyButton; + private JButton clearButton; + private JButton cancelButton; + private JButton selectButton; + private JButton insertButton; + private JButton searchButton; - private SQLTextArea textPane; + // --- + + private Vector data; + private final QueryEditor queryEditor; - /** - * Creates a new object with history data - * to be set within the specified editor. - * - * @param - the statement history Vector - * @param - the editor - */ public SQLHistoryDialog(Vector data, QueryEditor queryEditor) { + super(GUIUtilities.getParentFrame(), TITLE, true); + this.queryEditor = queryEditor; + this.data = data; - super(GUIUtilities.getParentFrame(), "SQL Command History", true); + init(); + arrange(); + } - try { + private void init() { - this.data = data; - this.queryEditor = queryEditor; + // --- buttons --- - initHistoryList(data); + selectButton = WidgetFactory.createButton("selectButton", Bundles.get("common.select.button"), e -> selectQuery()); + selectButton.setToolTipText(bundleString("selectButton.toolTip")); - init(); - pack(); + copyButton = WidgetFactory.createButton("copyButton", Bundles.get("common.copy.button"), e -> copyQuery()); + copyButton.setToolTipText(bundleString("copyButton.toolTip")); - setLocation(GUIUtilities.getLocationForDialog(getSize())); - setVisible(true); + clearButton = WidgetFactory.createButton("clearButton", Bundles.get("common.clear.button"), e -> clearHistory()); + clearButton.setToolTipText(bundleString("clearButton.toolTip")); - } catch (Exception e) { + insertButton = WidgetFactory.createButton("insertButton", bundleString("insertButton"), e -> insertQuery()); + insertButton.setToolTipText(bundleString("insertButton.toolTip")); - e.printStackTrace(); - } + searchButton = WidgetFactory.createButton("searchButton", Bundles.get("common.search.button"), e -> searchForQuery()); + searchButton.setToolTipText(bundleString("searchButton.toolTip")); - } + cancelButton = WidgetFactory.createButton("cancelButton", Bundles.get("common.cancel.button"), e -> dispose()); - /** - *

Initialises the state of this instance - * and positions all components. - * - * @throws Exception - */ - private void init() { - - JButton cancelButton = createButton(Bundles.get("common.cancel.button"), null); - cancelButton.setActionCommand("Cancel"); - JButton selectButton = createButton(Bundles.get("common.select.button"), - "Pastes the selected queries into the Query Editor"); - selectButton.setActionCommand("Select"); - JButton copyButton = createButton(Bundles.get("common.copy.button"), - "Copies the selected queries to the system clipboard"); - copyButton.setActionCommand("Copy"); - JButton insertAtCursorButton = createButton("Insert at Cursor", - "Inserts the selected queries at the cursor position within the Query Editor"); - JButton clearButton = createButton(Bundles.get("common.clear.button"), - "Clears and resets ALL SQL history"); - clearButton.setActionCommand("Clear"); - - newEditorCheck = new JCheckBox("Open in new Query Editor"); - newEditorCheck.setToolTipText("Select to paste the query in a new Query Editor panel"); - - textPane = new SQLTextArea(); - textPane.setEditable(false); - - JSplitPane splitPane = createSplitPane(); - splitPane.setLeftComponent(new JScrollPane(historyList)); - splitPane.setRightComponent(new JScrollPane(textPane)); + // --- history list --- - Container c = getContentPane(); - c.setLayout(new GridBagLayout()); - - searchField = WidgetFactory.createTextField("searchField"); - searchField.addActionListener(this); - JButton searchButton = createButton("Search", null); - - JPanel searchPanel = new JPanel(new GridBagLayout()); - GridBagConstraints gbc = new GridBagConstraints(); - gbc.gridx++; - gbc.insets.right = 5; - searchPanel.add(new JLabel("Find:"), gbc); - gbc.gridx++; - gbc.weightx = 1.0; - gbc.fill = GridBagConstraints.HORIZONTAL; - searchPanel.add(searchField, gbc); - gbc.gridx++; - gbc.weightx = 0; - gbc.insets.right = 0; - searchPanel.add(searchButton, gbc); - - // layout the components - gbc = new GridBagConstraints(); - gbc.gridx = 0; - gbc.gridy = 0; - gbc.insets.top = 5; - gbc.insets.left = 5; - gbc.insets.right = 5; - gbc.gridwidth = GridBagConstraints.REMAINDER; - gbc.insets.bottom = 5; - gbc.weighty = 0; - gbc.fill = GridBagConstraints.HORIZONTAL; - c.add(searchPanel, gbc); - gbc.gridy++; - gbc.weightx = 1.0; - gbc.weighty = 1.0; - gbc.insets.top = 0; - gbc.fill = GridBagConstraints.BOTH; - c.add(splitPane, gbc); - gbc.weightx = 0; - gbc.insets.left = 5; - gbc.insets.bottom = 7; - gbc.gridwidth = 1; - gbc.gridy++; - gbc.gridx = 4; - gbc.weighty = 0; - gbc.fill = GridBagConstraints.NONE; - gbc.anchor = GridBagConstraints.EAST; - c.add(cancelButton, gbc); - gbc.gridx--; - gbc.insets.right = 0; - c.add(clearButton, gbc); - gbc.gridx--; - gbc.insets.right = 0; - c.add(copyButton, gbc); - gbc.gridx--; - c.add(insertAtCursorButton, gbc); - gbc.gridx--; - gbc.weightx = 1.0; - c.add(selectButton, gbc); - gbc.weightx = 0; - gbc.anchor = GridBagConstraints.WEST; - c.add(newEditorCheck, gbc); - - historyList.addListSelectionListener(this); + historyList = new JList<>(data); + historyList.setFixedCellHeight(20); + historyList.addListSelectionListener(e -> updateTextPanel()); historyList.addMouseListener(new java.awt.event.MouseAdapter() { + @Override public void mouseClicked(MouseEvent e) { - historyListMouseClicked(e); + if (e.getClickCount() >= 2) + selectQuery(); } }); historyList.addKeyListener(new java.awt.event.KeyAdapter() { + @Override public void keyPressed(KeyEvent e) { - historyListKeyPressed(e); + if (e.getKeyCode() == KeyEvent.VK_ENTER) + selectQuery(); } }); - c.setPreferredSize(new Dimension(800, 490)); - } - - private void initHistoryList(Vector data) { - - historyList = new DefaultList(data); - } - - private JSplitPane createSplitPane() { - - JSplitPane splitPane = new FlatSplitPane(JSplitPane.VERTICAL_SPLIT); - - splitPane.setDividerSize(4); - splitPane.setResizeWeight(0.5); - splitPane.setDividerLocation(0.7); - - return splitPane; - } + // --- others --- - private JButton createButton(String text, String toolTip) { + openNewEditorCheck = WidgetFactory.createCheckBox("openNewEditorCheck", bundleString("openNewEditorCheck")); + openNewEditorCheck.setToolTipText(bundleString("openNewEditorCheck.toolTip")); - JButton button = new DefaultPanelButton(text); - if (toolTip != null) { - - button.setToolTipText(toolTip); - } + searchField = WidgetFactory.createTextField("searchField"); + searchField.addActionListener(e -> searchForQuery()); - button.addActionListener(this); + textPane = new SQLTextArea(); + textPane.setEditable(false); - return button; } - /** - * Sets the statement history data to the JList. - * - * @param - the statement history Vector - */ - public void setHistoryData(Vector data) { - this.data = data; - historyList.setListData(data); - } + private void arrange() { + GridBagHelper gbh; - /** - *

Initiates the action of the "Select" button adding - * the selected statement to the open Query Editor. - * - * @param - the action event - */ - public void actionPerformed(ActionEvent e) { + // --- split pane --- - String command = e.getActionCommand(); + JSplitPane splitPane = new FlatSplitPane(JSplitPane.VERTICAL_SPLIT); + splitPane.setLeftComponent(new JScrollPane(historyList)); + splitPane.setRightComponent(new JScrollPane(textPane)); + splitPane.setDividerLocation(0.7); + splitPane.setResizeWeight(0.5); + splitPane.setDividerSize(4); - if (command.equals("Select")) { + // --- search panel --- - selectSQLCommand(); + JPanel searchPanel = new JPanel(new GridBagLayout()); - } else if (command.equals("Copy")) { + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally().rightGap(5); + searchPanel.add(new JLabel(Bundles.get("common.search")), gbh.topGap(3).get()); + searchPanel.add(searchField, gbh.nextCol().topGap(0).setMaxWeightX().get()); + searchPanel.add(searchButton, gbh.nextCol().rightGap(0).setMinWeightX().get()); - copySQLCommand(); + // --- button panel --- - } else if (command.equals("Insert at Cursor")) { + JPanel buttonPanel = new JPanel(new GridBagLayout()); - insertAtCursorButton(); + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + buttonPanel.add(openNewEditorCheck, gbh.get()); + buttonPanel.add(new JPanel(), gbh.nextCol().setMaxWeightX().get()); + buttonPanel.add(selectButton, gbh.nextCol().setMinWeightX().rightGap(5).get()); + buttonPanel.add(insertButton, gbh.nextCol().get()); + buttonPanel.add(copyButton, gbh.nextCol().get()); + buttonPanel.add(clearButton, gbh.nextCol().get()); + buttonPanel.add(cancelButton, gbh.nextCol().rightGap(0).get()); - } else if (command.equals("Search") || e.getSource() == searchField) { + // --- main panel --- - String text = searchField.getText(); + JPanel mainPanel = new JPanel(new GridBagLayout()); - if (MiscUtils.isNull(text)) { + gbh = new GridBagHelper().anchorNorthWest().fillBoth().bottomGap(5); + mainPanel.add(searchPanel, gbh.setMinWeightY().spanX().get()); + mainPanel.add(splitPane, gbh.nextRow().setMaxWeightY().get()); + mainPanel.add(buttonPanel, gbh.nextRow().bottomGap(0).setMinWeightY().get()); - return; - } + // --- base --- - int start = historyList.getSelectedIndex(); - if (start == -1 || start == data.size() - 1) { + setLayout(new GridBagLayout()); + setPreferredSize(new Dimension(800, 490)); - start = 0; + gbh = new GridBagHelper().setInsets(5, 5, 5, 5).fillBoth().spanX().spanY(); + add(mainPanel, gbh.get()); - } else { + pack(); + setLocation(GUIUtilities.getLocationForDialog(getSize())); + setVisible(true); + } - start++; - } + private void updateTextPanel() { + textPane.setText(queryForIndex(historyList.getSelectedIndex())); + } - search(text, start); + /** + * Sets the statement history data to the JList. + * + * @param data the statement history Vector + */ + public void setHistoryData(Vector data) { + this.data = data; + historyList.setListData(data); + } - } else if (command.equals("Clear")) { + private void searchForQuery() { - sqlCommandHistoryRepository().clearSqlCommandHistory(queryEditor.getSelectedConnection().getId()); - setHistoryData(new Vector(0)); + String text = searchField.getText(); + if (MiscUtils.isNull(text)) + return; - } else { + int start = historyList.getSelectedIndex(); + if (start == -1 || start == data.size() - 1) + start = 0; + else + start++; - dispose(); - } + search(text, start); + } + private void clearHistory() { + sqlCommandHistoryRepository().clearSqlCommandHistory(queryEditor.getSelectedConnection().getId()); + setHistoryData(new Vector<>(0)); } private SqlCommandHistoryRepository sqlCommandHistoryRepository() { - - return (SqlCommandHistoryRepository) RepositoryCache.load( - SqlCommandHistoryRepository.REPOSITORY_ID); + return (SqlCommandHistoryRepository) RepositoryCache.load(SqlCommandHistoryRepository.REPOSITORY_ID); } private void search(String text, int start) { - Pattern pattern = Pattern.compile("\\b" + text, - Pattern.CASE_INSENSITIVE); + + Pattern pattern = Pattern.compile("\\b" + text, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(Constants.EMPTY); for (int i = start, k = data.size(); i < k; i++) { - matcher.reset(data.get(i)); if (matcher.find()) { @@ -334,50 +250,42 @@ private void search(String text, int start) { } } - GUIUtilities.displayInformationMessage("Search string not found"); + GUIUtilities.displayInformationMessage(bundleString("stringNotFound")); } private void scrollToSelection(int i) { - historyList.ensureIndexIsVisible(i); } - private boolean validSelection() { - - if (data.isEmpty()) { + private boolean invalidSelection() { - return false; - } + if (data.isEmpty()) + return true; if (historyList.isSelectionEmpty()) { - - GUIUtilities.displayErrorMessage("No selection made."); - return false; + GUIUtilities.displayErrorMessage(bundleString("noSelection")); + return true; } - return true; + return false; } - private void copySQLCommand() { - - if (validSelection()) { - - String query = queryForIndices(historyList.getSelectedIndices()); - GUIUtilities.copyToClipBoard(query); + private void copyQuery() { - dispose(); - } + if (invalidSelection()) + return; + String query = queryForIndices(historyList.getSelectedIndices()); + GUIUtilities.copyToClipBoard(query); + dispose(); } - private void insertAtCursorButton() { - - if (newEditorCheck.isSelected()) { + private void insertQuery() { - selectSQLCommand(); + if (openNewEditorCheck.isSelected()) { + selectQuery(); } else if (queryEditor != null) { - String query = queryForIndices(historyList.getSelectedIndices()); queryEditor.insertTextAtCaret(query); dispose(); @@ -385,93 +293,45 @@ private void insertAtCursorButton() { } - private void selectSQLCommand() { - - if (validSelection()) { - - String query = queryForIndices(historyList.getSelectedIndices()); - if (newEditorCheck.isSelected()) { + private void selectQuery() { - QueryEditor editor = new QueryEditor(query); - GUIUtilities.addCentralPane(QueryEditor.TITLE, - QueryEditor.FRAME_ICON, - editor, - null, - true); + if (invalidSelection()) + return; - } else if (queryEditor != null) { + String query = queryForIndices(historyList.getSelectedIndices()); + if (openNewEditorCheck.isSelected()) { + GUIUtilities.addCentralPane( + QueryEditor.TITLE, + QueryEditor.FRAME_ICON, + new QueryEditor(query), + null, + true + ); - queryEditor.setEditorText(query); - } + } else if (queryEditor != null) + queryEditor.setEditorText(query); - dispose(); - } + dispose(); } private String queryForIndices(int[] indices) { - if (indices.length > 0) { + if (indices.length < 1) + return Constants.EMPTY; - StringBuilder sb = new StringBuilder(); - for (int index : indices) { - - sb.append(queryForIndex(index).trim()); - sb.append("\n\n"); - } + StringBuilder sb = new StringBuilder(); + for (int index : indices) + sb.append(queryForIndex(index).trim()).append("\n\n"); - return sb.toString().trim(); - } - - return ""; + return sb.toString().trim(); } private String queryForIndex(int index) { - - if (index != -1) { - - return data.get(index); - } - return ""; + return index != -1 ? data.get(index) : Constants.EMPTY; } - /** - *

Initiates the action on the history list after - * double clicking a selected statement and propagates - * the action to the method selectButton_actionPerformed. - * - * @param - the mouse event - */ - private void historyListMouseClicked(MouseEvent e) { - if (e.getClickCount() >= 2) { - - selectSQLCommand(); - } - } - - public void valueChanged(ListSelectionEvent e) { - - textPane.setText(queryForIndex(historyList.getSelectedIndex())); - } - - /** - *

Initiates the action on the history list after - * pressing the ENTER key on a selected statement and propagates - * the action to the method selectButton_actionPerformed. - * - * @param - the key event - */ - private void historyListKeyPressed(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_ENTER) { - selectSQLCommand(); - } + private static String bundleString(String key, Object... args) { + return Bundles.get(SQLHistoryDialog.class, key, args); } } - - - - - - - - diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index bbacf94a3..b7a361893 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -97,6 +97,7 @@ common.save.button=Save common.save-changes.message=Do you wish to save changes to {0}? common.scale=Scale common.search=Search: +common.search.button=Search common.select.button=Select common.select=Select common.send.button=Send @@ -2046,6 +2047,17 @@ SimpleDataItemViewerPanel.Text=Text SimpleTextComponentPopUpMenu.Copy=Copy SimpleTextComponentPopUpMenu.Cut=Cut SimpleTextComponentPopUpMenu.Paste=Paste +SQLHistoryDialog.title=SQL Command History +SQLHistoryDialog.selectButton.toolTip=Pastes the selected queries into the Query Editor +SQLHistoryDialog.copyButton.toolTip=Copies the selected queries to the system clipboard +SQLHistoryDialog.insertButton=Insert at Cursor +SQLHistoryDialog.insertButton.toolTip=Inserts the selected queries at the cursor position within the Query Editor +SQLHistoryDialog.clearButton.toolTip=Clears and resets ALL SQL history +SQLHistoryDialog.searchButton.toolTip=Search for query in the SQL history +SQLHistoryDialog.openNewEditorCheck=Open in new Query Editor +SQLHistoryDialog.openNewEditorCheck.toolTip=Select to paste the query in a new Query Editor panel +SQLHistoryDialog.stringNotFound=Search string not found +SQLHistoryDialog.noSelection=No selection made SystemLogsViewer.LogFileNotFound=Selected log file not found SystemLogsViewer.outOfMemory=Out of Memory.\nThe file is too large to open for viewing. SystemLogsViewer.reload=Reload this log file diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index ed0d098f9..2eb7c8ac6 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -97,6 +97,7 @@ common.save.button=Сохранить common.save-changes.message=Сохранить изменения {0}? common.scale=Масштаб common.search=Поиск: +common.search.button=Поиск common.select.button=Выбрать common.select=Выбрать common.send.button=Отправить @@ -2046,6 +2047,17 @@ SimpleDataItemViewerPanel.Text=Текст SimpleTextComponentPopUpMenu.Copy=Копировать SimpleTextComponentPopUpMenu.Cut=Вырезать SimpleTextComponentPopUpMenu.Paste=Вставить +SQLHistoryDialog.title=История SQL запросов +SQLHistoryDialog.selectButton.toolTip=Вставить выбранные запросы в редактор +SQLHistoryDialog.copyButton.toolTip=Скопировать выбранные запросы в буфер обмена +SQLHistoryDialog.insertButton=Вставить +SQLHistoryDialog.insertButton.toolTip=Добавить выбранные запросы в редактор после курсора +SQLHistoryDialog.clearButton.toolTip=Очистить всю историю запросов +SQLHistoryDialog.searchButton.toolTip=Найти запрос в истории +SQLHistoryDialog.openNewEditorCheck=Открыть в новом редакторе запросов +SQLHistoryDialog.openNewEditorCheck.toolTip=Выберите, чтобы открыть запрос в новом редакторе +SQLHistoryDialog.stringNotFound=Ничего не найдено +SQLHistoryDialog.noSelection=Ничего не выбрано SystemLogsViewer.LogFileNotFound=Выбранный файл журнала не найден SystemLogsViewer.outOfMemory=Недостаточно памяти.\nФайл слишком велик, чтобы его можно было открыть для просмотра. SystemLogsViewer.reload=Перезагрузить этот файл журнала From 1990a583acf01821df9bacfe8678690c5ab1162b Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Wed, 24 Jul 2024 12:17:06 +0300 Subject: [PATCH 002/141] See RS-187312 add DML operations to SYSTEM TABLE --- .../databaseobjects/impl/DefaultDatabaseMetaTag.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java index b9e7dc9d2..75ff1a97b 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java @@ -22,7 +22,10 @@ import biz.redsoft.IFBDatabaseConnection; import org.executequery.databasemediators.spi.DefaultStatementExecutor; -import org.executequery.databaseobjects.*; +import org.executequery.databaseobjects.DatabaseHost; +import org.executequery.databaseobjects.DatabaseMetaTag; +import org.executequery.databaseobjects.DatabaseObject; +import org.executequery.databaseobjects.NamedObject; import org.executequery.datasource.PooledConnection; import org.executequery.datasource.PooledResultSet; import org.executequery.gui.browser.ComparerDBPanel; @@ -601,6 +604,7 @@ private AbstractDatabaseObject getTable(ResultSet rs, String metaDataKey, int ty switch (type) { case TABLE: + case SYSTEM_TABLE: return new DefaultDatabaseTable(object); case VIEW: return new DefaultDatabaseView(object); From 6970e5292bf0433db0f3e226f641c72843cddcab Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 24 Jul 2024 14:24:00 +0300 Subject: [PATCH 003/141] Fix loading full info for database objects (RS-186325) --- .../impl/DefaultDatabaseCollation.java | 3 ++- .../impl/DefaultDatabaseDomain.java | 3 ++- .../impl/DefaultDatabaseException.java | 4 +++- .../impl/DefaultDatabaseFunction.java | 3 ++- .../impl/DefaultDatabaseIndex.java | 2 +- .../impl/DefaultDatabaseJob.java | 3 ++- .../impl/DefaultDatabaseMetaTag.java | 2 +- .../impl/DefaultDatabaseObject.java | 4 +++- .../impl/DefaultDatabasePackage.java | 4 +++- .../impl/DefaultDatabaseProcedure.java | 3 ++- .../impl/DefaultDatabaseRole.java | 4 +++- .../impl/DefaultDatabaseSequence.java | 2 +- .../impl/DefaultDatabaseTable.java | 2 +- .../impl/DefaultDatabaseTablespace.java | 4 +++- .../impl/DefaultDatabaseTrigger.java | 3 ++- .../impl/DefaultDatabaseUDF.java | 3 ++- .../impl/DefaultDatabaseView.java | 3 ++- src/org/executequery/sql/sqlbuilder/Field.java | 17 ++++++++++++++++- 18 files changed, 51 insertions(+), 18 deletions(-) diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseCollation.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseCollation.java index 997ca5613..ad301ae76 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseCollation.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseCollation.java @@ -80,7 +80,8 @@ protected SelectBuilder builderCommonQuery() { SelectBuilder sb = new SelectBuilder(getHost().getDatabaseConnection()); Table collates = getMainTable(); Table charsets = Table.createTable("RDB$CHARACTER_SETS", "CH"); - sb.appendFields(collates, getFieldName(), BASE_COLLATE, ATTRIBUTES, DESCRIPTION, COLLATION_ATTRIBUTES); + sb.appendField(Field.createField(collates, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(collates, BASE_COLLATE, ATTRIBUTES, DESCRIPTION, COLLATION_ATTRIBUTES); sb.appendFields(charsets, CHARACTER_SET_NAME); sb.appendJoin(Join.createLeftJoin().appendFields(Field.createField(collates, CHARACTER_SET_ID), Field.createField(charsets, CHARACTER_SET_ID))); sb.setOrdering(getObjectField().getFieldTable()); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseDomain.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseDomain.java index d3429c6db..241e6b6c3 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseDomain.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseDomain.java @@ -73,8 +73,9 @@ protected SelectBuilder builderCommonQuery() { Table collations = Table.createTable("RDB$COLLATIONS", "CO"); Table dimensions = Table.createTable("RDB$FIELD_DIMENSIONS", "FD"); + sb.appendField(Field.createField(fields, getFieldName()).setCast("VARCHAR(1024)")); sb.appendFields(fields, - FIELD_NAME, TYPE, SUB_TYPE, FIELD_PRECISION, SCALE, FIELD_LENGTH, NULL_FLAG, + TYPE, SUB_TYPE, FIELD_PRECISION, SCALE, FIELD_LENGTH, NULL_FLAG, COMPUTED_BY, VALIDATION_SOURCE, DEFAULT_SOURCE, COMPUTED_SOURCE, SEGMENT_LENGTH, DESCRIPTION ); sb.appendField(Field.createField(fields, "CHARACTER_LENGTH").setAlias(CHAR_LENGTH)); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseException.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseException.java index 0472f95aa..e1a9faa0f 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseException.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseException.java @@ -2,6 +2,7 @@ import org.executequery.databaseobjects.DatabaseMetaTag; import org.executequery.gui.browser.comparer.Comparer; +import org.executequery.sql.sqlbuilder.Field; import org.executequery.sql.sqlbuilder.SelectBuilder; import org.executequery.sql.sqlbuilder.Table; import org.underworldlabs.jdbc.DataSourceException; @@ -96,7 +97,8 @@ protected Table getMainTable() { protected SelectBuilder builderCommonQuery() { SelectBuilder sb = new SelectBuilder(getHost().getDatabaseConnection()); Table mainTable = getMainTable(); - sb.appendFields(mainTable, getFieldName(), ID, EXCEPTION_TEXT, DESCRIPTION); + sb.appendField(Field.createField(mainTable, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(mainTable, ID, EXCEPTION_TEXT, DESCRIPTION); sb.appendTable(mainTable); sb.setOrdering(getObjectField().getFieldTable()); return sb; diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseFunction.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseFunction.java index d2a846fe3..201da321a 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseFunction.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseFunction.java @@ -207,7 +207,8 @@ protected SelectBuilder builderCommonQuery() { Table charsets = Table.createTable("RDB$CHARACTER_SETS", "CR"); Table collations1 = Table.createTable("RDB$COLLATIONS", "CO1"); Table collations2 = Table.createTable("RDB$COLLATIONS", "CO2"); - sb.appendFields(functions, getFieldName(), PROCEDURE_SOURCE, DESCRIPTION, DETERMINISTIC_FLAG, RETURN_ARGUMENT, VALID_BLR); + sb.appendField(Field.createField(functions, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(functions, PROCEDURE_SOURCE, DESCRIPTION, DETERMINISTIC_FLAG, RETURN_ARGUMENT, VALID_BLR); sb.appendFields(functions, !externalCheck(), ENGINE_NAME, ENTRYPOINT); sb.appendField(buildSqlSecurityField(functions)); sb.appendFields(FA, arguments, PARAMETER_NAME, PARAMETER_NUMBER, FIELD_SOURCE, DESCRIPTION, PARAMETER_MECHANISM, DEFAULT_SOURCE, RELATION_NAME, FIELD_NAME, NULL_FLAG); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseIndex.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseIndex.java index 41c6d3777..c96e9d88c 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseIndex.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseIndex.java @@ -321,7 +321,7 @@ protected SelectBuilder builderCommonQuery() { Table constraints = Table.createTable("RDB$RELATION_CONSTRAINTS", "RC"); Table indexSegments = Table.createTable("RDB$INDEX_SEGMENTS", "ISGMT"); - sb.appendField(Field.createField(indicies, getFieldName())); + sb.appendField(Field.createField(indicies, getFieldName()).setCast("VARCHAR(1024)")); sb.appendField(Field.createField(indicies, RELATION_NAME)); sb.appendField(Field.createField(indicies, INDEX_TYPE)); sb.appendField(Field.createField(indicies, UNIQUE_FLAG)); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseJob.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseJob.java index 35b27dbba..60f6bfeda 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseJob.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseJob.java @@ -3,6 +3,7 @@ import org.executequery.databasemediators.spi.DefaultStatementExecutor; import org.executequery.databaseobjects.DatabaseMetaTag; import org.executequery.databaseobjects.NamedObject; +import org.executequery.sql.sqlbuilder.Field; import org.executequery.sql.sqlbuilder.SelectBuilder; import org.executequery.sql.sqlbuilder.Table; import org.underworldlabs.jdbc.DataSourceException; @@ -62,7 +63,7 @@ protected SelectBuilder builderCommonQuery() { SelectBuilder sb = new SelectBuilder(getHost().getDatabaseConnection()); Table jobs = getMainTable(); sb.appendTable(jobs); - + sb.appendField(Field.createField(jobs, getFieldName()).setCast("VARCHAR(1024)")); sb.appendFields(jobs, JOB_ID, SOURCE, ACTIVE, JOB_TYPE, SCHEDULE, START_DATE, END_DATE, DATABASE, DESCRIPTION); sb.setOrdering(getObjectField().getFieldTable()); return sb; diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java index 75ff1a97b..3aeb8467c 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java @@ -811,7 +811,7 @@ private ResultSet getProceduresResultSet() throws SQLException { String sql = "SELECT CAST (RDB$PROCEDURE_NAME as VARCHAR(1024)) AS PROCEDURE_NAME\n" + "FROM RDB$PROCEDURES\n" + ((majorVersion > 2) ? "WHERE RDB$PACKAGE_NAME IS NULL\n" : "") + - "ORDER BY PROCEDURE_NAME"; + "ORDER BY RDB$PROCEDURE_NAME"; if (typeTree == TreePanel.DEPENDED_ON) sql = getDependOnQuery(5); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseObject.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseObject.java index 649aa091b..7d1d02976 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseObject.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseObject.java @@ -22,6 +22,7 @@ import org.executequery.databaseobjects.*; import org.executequery.gui.browser.tree.TreePanel; +import org.executequery.sql.sqlbuilder.Field; import org.executequery.sql.sqlbuilder.SelectBuilder; import org.executequery.sql.sqlbuilder.Table; import org.underworldlabs.jdbc.DataSourceException; @@ -148,7 +149,8 @@ protected Table getMainTable() { protected SelectBuilder builderCommonQuery() { SelectBuilder sb = new SelectBuilder(getHost().getDatabaseConnection()); Table table = getMainTable(); - sb.appendFields(table, getFieldName(), DESCRIPTION); + sb.appendField(Field.createField(table, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(table, DESCRIPTION); sb.appendTable(table); sb.setOrdering(getObjectField().getFieldTable()); return sb; diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabasePackage.java b/src/org/executequery/databaseobjects/impl/DefaultDatabasePackage.java index 7b438de00..822de0070 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabasePackage.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabasePackage.java @@ -3,6 +3,7 @@ import org.executequery.databaseobjects.DatabaseMetaTag; import org.executequery.databaseobjects.DatabaseProcedure; import org.executequery.databaseobjects.NamedObject; +import org.executequery.sql.sqlbuilder.Field; import org.executequery.sql.sqlbuilder.SelectBuilder; import org.executequery.sql.sqlbuilder.Table; import org.underworldlabs.jdbc.DataSourceException; @@ -152,7 +153,8 @@ protected Table getMainTable() { protected SelectBuilder builderCommonQuery() { SelectBuilder sb = new SelectBuilder(getHost().getDatabaseConnection()); Table packages = getMainTable(); - sb.appendFields(packages, getFieldName(), PACKAGE_HEADER_SOURCE, PACKAGE_BODY_SOURCE, VALID_BODY_FLAG, + sb.appendField(Field.createField(packages, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(packages, PACKAGE_HEADER_SOURCE, PACKAGE_BODY_SOURCE, VALID_BODY_FLAG, SECURITY_CLASS, OWNER_NAME, SYSTEM_FLAG, DESCRIPTION); sb.appendField(buildSqlSecurityField(packages)); sb.appendTable(packages); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseProcedure.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseProcedure.java index 44c1c2686..ec8fe1bba 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseProcedure.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseProcedure.java @@ -176,7 +176,8 @@ protected SelectBuilder builderCommonQuery() { Table charsets = Table.createTable("RDB$CHARACTER_SETS", "CR"); Table collations1 = Table.createTable("RDB$COLLATIONS", "CO1"); Table collations2 = Table.createTable("RDB$COLLATIONS", "CO2"); - sb.appendFields(procedures, getFieldName(), PROCEDURE_SOURCE, PROCEDURE_TYPE, DESCRIPTION, VALID_BLR); + sb.appendField(Field.createField(procedures, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(procedures, PROCEDURE_SOURCE, PROCEDURE_TYPE, DESCRIPTION, VALID_BLR); sb.appendFields(procedures, !externalCheck(), ENGINE_NAME, ENTRYPOINT); sb.appendField(buildSqlSecurityField(procedures)); Field authid = Field.createField(procedures, PROCEDURE_CONTEXT); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseRole.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseRole.java index d8582c921..4f59c0d44 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseRole.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseRole.java @@ -3,6 +3,7 @@ import org.executequery.databaseobjects.DatabaseMetaTag; import org.executequery.databaseobjects.NamedObject; import org.executequery.gui.browser.comparer.Comparer; +import org.executequery.sql.sqlbuilder.Field; import org.executequery.sql.sqlbuilder.SelectBuilder; import org.executequery.sql.sqlbuilder.Table; import org.underworldlabs.jdbc.DataSourceException; @@ -61,7 +62,8 @@ protected Table getMainTable() { protected SelectBuilder builderCommonQuery() { SelectBuilder sb = new SelectBuilder(getHost().getDatabaseConnection()); Table table = getMainTable(); - sb.appendFields(table, getFieldName(), DESCRIPTION, OWNER_NAME); + sb.appendField(Field.createField(table, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(table, DESCRIPTION, OWNER_NAME); sb.appendTable(table); sb.setOrdering(getObjectField().getFieldTable()); return sb; diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseSequence.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseSequence.java index 8a46a522a..38a1f88ae 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseSequence.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseSequence.java @@ -178,7 +178,7 @@ protected SelectBuilder builderCommonQuery() { SelectBuilder sb = SelectBuilder.createSelectBuilder(getHost().getDatabaseConnection()); Table gens = getMainTable(); sb.appendTable(gens); - sb.appendField(getObjectField()); + sb.appendField(Field.createField(gens, getFieldName()).setCast("VARCHAR(1024)")); sb.appendField(Field.createField(gens, INITIAL_VALUE).setNull(getDatabaseMajorVersion() < 3)); sb.appendField(Field.createField(gens, GENERATOR_INCREMENT).setNull(getDatabaseMajorVersion() < 3)); sb.appendField(Field.createField(gens, DESCRIPTION)); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java index d36fcd28e..6c5efa155 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java @@ -1213,7 +1213,7 @@ protected SelectBuilder builderCommonQuery() { .appendArgument(conType.getFieldTable() + " <> 'CHECK'") .appendArgument("NULL") .appendArgument(conName.getFieldTable()); - sb.appendField(getObjectField()); + sb.appendField(Field.createField(getMainTable(), getFieldName()).setCast("VARCHAR(1024)")); sb.appendField(Field.createField().setStatement(compareCheck.getStatement()).setAlias(conName.getAlias())); compareCheck.setArgument(2, conType.getFieldTable()); sb.appendField(Field.createField().setStatement(compareCheck.getStatement()).setAlias(conType.getAlias())); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTablespace.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTablespace.java index a15eee9c3..9fab898d2 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTablespace.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTablespace.java @@ -3,6 +3,7 @@ import org.executequery.databasemediators.spi.DefaultStatementExecutor; import org.executequery.databaseobjects.DatabaseMetaTag; import org.executequery.databaseobjects.NamedObject; +import org.executequery.sql.sqlbuilder.Field; import org.executequery.sql.sqlbuilder.SelectBuilder; import org.executequery.sql.sqlbuilder.Table; import org.underworldlabs.jdbc.DataSourceException; @@ -95,7 +96,8 @@ protected Table getMainTable() { protected SelectBuilder builderCommonQuery() { SelectBuilder sb = new SelectBuilder(getHost().getDatabaseConnection()); Table table = getMainTable(); - sb.appendFields(table, getFieldName(), ID, SYSTEM, DESCRIPTION, OWNER, FILE_NAME, READ_ONLY, OFFLINE); + sb.appendField(Field.createField(table, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(table, ID, SYSTEM, DESCRIPTION, OWNER, FILE_NAME, READ_ONLY, OFFLINE); sb.appendTable(table); sb.setOrdering(getObjectField().getFieldTable()); return sb; diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTrigger.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTrigger.java index 088fb502a..13838012e 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTrigger.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTrigger.java @@ -467,7 +467,8 @@ protected SelectBuilder builderCommonQuery() { SelectBuilder sb = SelectBuilder.createSelectBuilder(getHost().getDatabaseConnection()); Table triggers = getMainTable(); sb.appendTable(triggers); - sb.appendFields(triggers, getFieldName(), TRIGGER_SOURCE, RELATION_NAME, TRIGGER_SEQUENCE, TRIGGER_TYPE, TRIGGER_INACTIVE, DESCRIPTION, VALID_BLR); + sb.appendField(Field.createField(triggers, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(triggers, TRIGGER_SOURCE, RELATION_NAME, TRIGGER_SEQUENCE, TRIGGER_TYPE, TRIGGER_INACTIVE, DESCRIPTION, VALID_BLR); sb.appendFields(triggers, !externalCheck(), ENGINE_NAME, ENTRYPOINT); sb.appendField(buildSqlSecurityField(triggers)); sb.setOrdering(getObjectField().getFieldTable()); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseUDF.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseUDF.java index bb69bce5d..197ec5f4e 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseUDF.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseUDF.java @@ -120,7 +120,8 @@ protected SelectBuilder builderCommonQuery() { Table collations1 = Table.createTable("RDB$COLLATIONS", "CO1"); Table collations2 = Table.createTable("RDB$COLLATIONS", "CO2"); - sb.appendFields(functions, getFieldName(), DESCRIPTION, RETURN_ARGUMENT, MODULE_NAME, ENTRYPOINT); + sb.appendField(Field.createField(functions, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(functions, DESCRIPTION, RETURN_ARGUMENT, MODULE_NAME, ENTRYPOINT); sb.appendField(buildSqlSecurityField(functions)); sb.appendFields(FA, arguments, getDatabaseMajorVersion() < 3 && !isRDB(), PARAMETER_NAME, DESCRIPTION, PARAMETER_MECHANISM, mechanismLabel(), DEFAULT_SOURCE, RELATION_NAME, FIELD_NAME); sb.appendFields(FA, arguments, PARAMETER_NUMBER); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseView.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseView.java index cef2aa3b9..aac5be476 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseView.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseView.java @@ -67,7 +67,8 @@ protected SelectBuilder builderCommonQuery() { SelectBuilder sb = new SelectBuilder(getHost().getDatabaseConnection()); Table rels = getMainTable(); Table rf = Table.createTable("RDB$RELATION_FIELDS", "RF"); - sb.appendFields(rels, getFieldName(), SOURCE, DESCRIPTION); + sb.appendField(Field.createField(rels, getFieldName()).setCast("VARCHAR(1024)")); + sb.appendFields(rels, SOURCE, DESCRIPTION); sb.appendFields(rf, FIELD_NAME); sb.appendJoin(Join.createLeftJoin().appendFields(getObjectField(), Field.createField(rf, getFieldName()))); sb.setOrdering(getObjectField().getFieldTable() + ", " + Field.createField(rf, FIELD_POSITION).getFieldTable()); diff --git a/src/org/executequery/sql/sqlbuilder/Field.java b/src/org/executequery/sql/sqlbuilder/Field.java index 941842459..9e04db4ed 100644 --- a/src/org/executequery/sql/sqlbuilder/Field.java +++ b/src/org/executequery/sql/sqlbuilder/Field.java @@ -6,6 +6,7 @@ public class Field { String alias; boolean isNull = false; String statement; + String castType; public static Field createField() { return new Field(); @@ -66,17 +67,31 @@ public Field setNull(boolean aNull) { return this; } + public Field setCast(String castType) { + this.castType = castType; + return this; + } + + public String getCastType() { + return castType; + } + public String getFieldTable() { return table.getAlias() + "." + name; } public String getFieldForQuery() { StringBuilder sb = new StringBuilder(); + if (isNull) sb.append("NULL"); else if (statement != null) sb.append(statement); - else sb.append(getFieldTable()); + else if (castType != null) + sb.append("CAST (").append(getFieldTable()).append(" AS ").append(castType).append(")"); + else + sb.append(getFieldTable()); + sb.append(" AS ").append(alias); return sb.toString(); } From ab58932e36b04935473c984f042d938c58674d11 Mon Sep 17 00:00:00 2001 From: Nikita Kashin Date: Wed, 24 Jul 2024 14:29:15 +0300 Subject: [PATCH 004/141] Add export LD_LIBRARY_PATH for Linux with RDB3.0 --- ci/test_robot.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/test_robot.sh b/ci/test_robot.sh index 57909af19..befb9adb6 100644 --- a/ci/test_robot.sh +++ b/ci/test_robot.sh @@ -28,6 +28,8 @@ echo "Installing components" $PYTHON -m pip install git+http://git.red-soft.biz/red-database/python/red-database-python-driver.git $PYTHON -m pip install robotframework +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/RedDatabase/lib + export PYTHONPATH=$PYTHONPATH:/root/remoteswinglibrary-2.3.3.jar export DISPLAY=:0 su reduser -c 'xhost +' From a4f067410ab11fec969faf727bd5a7790cf01b94 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 25 Jul 2024 12:03:08 +0300 Subject: [PATCH 005/141] Rework "Import connections from DB" tool (RS-186713) --- .../ImportConnectionsFromDBCommand.java | 12 +- src/org/executequery/gui/ActionContainer.java | 5 + src/org/executequery/gui/BaseDialog.java | 5 + .../gui/browser/BrowserController.java | 13 +- .../gui/browser/ConnectionsTreePanel.java | 19 +- .../executequery/gui/browser/HostPanel.java | 4 +- .../connections/ImportConnectionsDBPanel.java | 266 +++++++++++------- .../localization/resources.properties | 6 + .../localization/resources_ru.properties | 6 + 9 files changed, 222 insertions(+), 114 deletions(-) diff --git a/src/org/executequery/actions/databasecommands/ImportConnectionsFromDBCommand.java b/src/org/executequery/actions/databasecommands/ImportConnectionsFromDBCommand.java index 41884b615..c79d6b59f 100644 --- a/src/org/executequery/actions/databasecommands/ImportConnectionsFromDBCommand.java +++ b/src/org/executequery/actions/databasecommands/ImportConnectionsFromDBCommand.java @@ -10,12 +10,14 @@ public class ImportConnectionsFromDBCommand extends OpenFrameCommand implements BaseCommand { + @Override public void execute(ActionEvent e) { - try { - - GUIUtilities.showWaitCursor(); + if (!isConnected()) + return; + GUIUtilities.showWaitCursor(); + try { BaseDialog dialog = new BaseDialog(ImportConnectionsDBPanel.TITLE, true); ImportConnectionsDBPanel panel = new ImportConnectionsDBPanel(dialog); @@ -23,10 +25,8 @@ public void execute(ActionEvent e) { dialog.display(); } finally { - GUIUtilities.showNormalCursor(); } - } -} \ No newline at end of file +} diff --git a/src/org/executequery/gui/ActionContainer.java b/src/org/executequery/gui/ActionContainer.java index 8145a1659..9016369b3 100644 --- a/src/org/executequery/gui/ActionContainer.java +++ b/src/org/executequery/gui/ActionContainer.java @@ -53,6 +53,11 @@ public interface ActionContainer { */ public void finished(); + /** + * Sets whether this dialog is resizable by the user + */ + void setResizable(boolean resize); + } diff --git a/src/org/executequery/gui/BaseDialog.java b/src/org/executequery/gui/BaseDialog.java index ceae9080d..47084c85f 100644 --- a/src/org/executequery/gui/BaseDialog.java +++ b/src/org/executequery/gui/BaseDialog.java @@ -247,6 +247,11 @@ public void display() { toFront(); } + @Override + public void setResizable(boolean resize) { + super.setResizable(resize); + } + } diff --git a/src/org/executequery/gui/browser/BrowserController.java b/src/org/executequery/gui/browser/BrowserController.java index ceb860326..a5a2b6a1f 100644 --- a/src/org/executequery/gui/browser/BrowserController.java +++ b/src/org/executequery/gui/browser/BrowserController.java @@ -170,11 +170,18 @@ protected void nodeNameValueChanged(DatabaseHost host) { * This void has been moved in BrowserTreePopupMenuActionListener */ public void valueChanged(DatabaseObjectNode node, DatabaseConnection connection) { + valueChanged(node, connection, true); + } + + /** + * This void has been moved in BrowserTreePopupMenuActionListener + */ + public void valueChanged(DatabaseObjectNode node, DatabaseConnection connection, boolean updatePropertiesPanel) { treePanel.setInProcess(true); try { - FormObjectView panel = buildPanelView(node); + FormObjectView panel = buildPanelView(node,updatePropertiesPanel); if (panel == null) return; @@ -225,7 +232,7 @@ public void valueChanged(DatabaseObjectNode node, DatabaseConnection connection) * @param node the selected node */ @SuppressWarnings("DataFlowIssue") - private FormObjectView buildPanelView(DatabaseObjectNode node) { + private FormObjectView buildPanelView(DatabaseObjectNode node, boolean updatePropertiesPanel) { try { NamedObject databaseObject = node.getDatabaseObject(); @@ -247,7 +254,7 @@ private FormObjectView buildPanelView(DatabaseObjectNode node) { viewPanel = new BrowserViewPanel(this); HostPanel hostPanel = hostPanel(); - hostPanel.setValues((DatabaseHost) databaseObject); + hostPanel.setValues((DatabaseHost) databaseObject, updatePropertiesPanel); return hostPanel; } diff --git a/src/org/executequery/gui/browser/ConnectionsTreePanel.java b/src/org/executequery/gui/browser/ConnectionsTreePanel.java index 23cd97297..26b38abe6 100644 --- a/src/org/executequery/gui/browser/ConnectionsTreePanel.java +++ b/src/org/executequery/gui/browser/ConnectionsTreePanel.java @@ -665,6 +665,15 @@ public void newConnection(String sourceName) { * @param dc the connection the new one is to be based on */ public void newConnection(DatabaseConnection dc) { + newConnection(dc, true); + } + + /** + * Creates a new connection based on the specified connection. + * + * @param dc the connection the new one is to be based on + */ + public void newConnection(DatabaseConnection dc, boolean updatePropertiesPanel) { validateConnectionCopyName(dc); DatabaseHost host = databaseObjectFactory().createDatabaseHost(dc); @@ -687,7 +696,7 @@ public void newConnection(DatabaseConnection dc) { } else { DatabaseHostNode databaseHostNode = new DatabaseHostNode(host, null); tree.addToRoot(databaseHostNode); - valueChanged(databaseHostNode, null); + valueChanged(databaseHostNode, null, updatePropertiesPanel); } connectionAdded(dc); @@ -924,8 +933,12 @@ public synchronized void valueChanged(DatabaseObjectNode node) { controller.valueChanged(node, null); } - public synchronized void valueChanged(DatabaseObjectNode node, DatabaseConnection connection) { - controller.valueChanged(node, connection); + public void valueChanged(DatabaseObjectNode node, DatabaseConnection connection) { + valueChanged(node, connection, true); + } + + public synchronized void valueChanged(DatabaseObjectNode node, DatabaseConnection connection, boolean updatePropertiesPanel) { + controller.valueChanged(node, connection, updatePropertiesPanel); } public void reloadOpenedConnections() { diff --git a/src/org/executequery/gui/browser/HostPanel.java b/src/org/executequery/gui/browser/HostPanel.java index 25ffae171..65b003d7d 100644 --- a/src/org/executequery/gui/browser/HostPanel.java +++ b/src/org/executequery/gui/browser/HostPanel.java @@ -102,7 +102,7 @@ public boolean tabViewDeselected() { return connectionPanel.tabViewDeselected(); } - public void setValues(DatabaseHost host) { + public void setValues(DatabaseHost host, boolean updatePropertiesPanel) { this.host = host; connectionPanel.setConnectionValue(host); @@ -110,7 +110,7 @@ public void setValues(DatabaseHost host) { DatabaseConnection databaseConnection = host.getDatabaseConnection(); if (databaseConnection.isConnected()) changePanelData(); - else + else if (updatePropertiesPanel) updateDatabaseProperties(true); } diff --git a/src/org/executequery/gui/connections/ImportConnectionsDBPanel.java b/src/org/executequery/gui/connections/ImportConnectionsDBPanel.java index a74a612c5..ece7a40b9 100644 --- a/src/org/executequery/gui/connections/ImportConnectionsDBPanel.java +++ b/src/org/executequery/gui/connections/ImportConnectionsDBPanel.java @@ -1,163 +1,229 @@ package org.executequery.gui.connections; import org.executequery.GUIUtilities; -import org.executequery.components.BottomButtonPanel; import org.executequery.databasemediators.DatabaseConnection; import org.executequery.databasemediators.DatabaseConnectionFactory; import org.executequery.databasemediators.spi.DatabaseConnectionFactoryImpl; import org.executequery.databasemediators.spi.DefaultStatementExecutor; +import org.executequery.datasource.ConnectionManager; import org.executequery.gui.ActionContainer; +import org.executequery.gui.WidgetFactory; import org.executequery.gui.browser.ConnectionsTreePanel; -import org.executequery.gui.components.OpenConnectionsComboboxPanel; import org.executequery.localization.Bundles; +import org.executequery.log.Log; import org.executequery.repository.DatabaseConnectionRepository; import org.executequery.repository.RepositoryCache; +import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.util.MiscUtils; import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; import java.util.Properties; public class ImportConnectionsDBPanel extends JPanel { - public static final String TITLE = "Import Connections"; + public static final String TITLE = bundleString("title"); - ActionContainer parent; - OpenConnectionsComboboxPanel connectionsComboboxPanel; - DatabaseConnectionFactory databaseConnectionFactory; + private final ActionContainer parent; + private final List loadedConnections; + private final List availableConnections; + private DatabaseConnectionFactory connectionFactory; + private JButton applyButton; + private JButton cancelButton; + private JComboBox connectionsCombo; + + public ImportConnectionsDBPanel(ActionContainer parent) { + this.parent = parent; + this.loadedConnections = new ArrayList<>(); + this.availableConnections = new ArrayList<>(); - public ImportConnectionsDBPanel(ActionContainer dialog) { - parent = dialog; init(); + arrange(); } - void init() { - connectionsComboboxPanel = new OpenConnectionsComboboxPanel(); - BottomButtonPanel bottomButtonPanel = new BottomButtonPanel(parent.isDialog()); - bottomButtonPanel.setOkButtonAction(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - doImport(); - } - }); - bottomButtonPanel.setOkButtonText("OK"); - bottomButtonPanel.setHelpButtonVisible(false); + private void init() { + connectionsCombo = WidgetFactory.createComboBox("connectionsCombo", ConnectionManager.getActiveConnections()); + applyButton = WidgetFactory.createButton("applyButton", Bundles.get("common.ok.button"), e -> importConnections()); + cancelButton = WidgetFactory.createButton("cancelButton", Bundles.get("common.cancel.button"), e -> finished(false)); + } + + private void arrange() { + GridBagHelper gbh; + + // --- button panel --- + + JPanel buttonPanel = new JPanel(new GridBagLayout()); - setLayout(new BorderLayout()); + gbh = new GridBagHelper().anchorSouthWest(); + buttonPanel.add(new JPanel(), gbh.setMaxWeightX().get()); + buttonPanel.add(applyButton, gbh.nextCol().setMinWeightX().get()); + buttonPanel.add(cancelButton, gbh.nextCol().leftGap(5).get()); - this.add(connectionsComboboxPanel, BorderLayout.NORTH); - this.add(bottomButtonPanel, BorderLayout.SOUTH); + // --- main panel --- + JPanel mainPanel = new JPanel(new GridBagLayout()); + + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + mainPanel.add(new JLabel(Bundles.get("common.connection")), gbh.topGap(3).setMinWeightX().get()); + mainPanel.add(connectionsCombo, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + mainPanel.add(buttonPanel, gbh.nextRowFirstCol().leftGap(0).topGap(10).spanX().spanY().get()); + + // --- base --- + + setLayout(new GridBagLayout()); + + gbh = new GridBagHelper().setInsets(5, 5, 5, 5).fillBoth().spanX().spanY(); + add(mainPanel, gbh.get()); + + setPreferredSize(new Dimension(300, getPreferredSize().height)); + parent.setResizable(false); } - void doImport() { - DatabaseConnection connection = connectionsComboboxPanel.getSelectedConnection(); + private void importConnections() { + + DatabaseConnection connection = getSelectedConnection(); DefaultStatementExecutor sender = new DefaultStatementExecutor(connection, true); - String query = "SELECT PROPS FROM DATABASES"; + + ConnectionsTreePanel treePanel = null; + JPanel tabbedComponent = GUIUtilities.getDockedTabComponent(ConnectionsTreePanel.PROPERTY_KEY); + if (tabbedComponent instanceof ConnectionsTreePanel) + treePanel = (ConnectionsTreePanel) tabbedComponent; + + if (treePanel == null) { + GUIUtilities.displayWarningMessage(bundleString("connectionsTreeUnavailable")); + finished(false); + return; + } + try { + + String query = "SELECT PROPS FROM DATABASES"; ResultSet rs = sender.getResultSet(query).getResultSet(); - if (rs == null) - GUIUtilities.displayErrorMessage("Sorry, this connection does not seem to contain connection settings"); - else - while (rs.next()) { - Properties properties = new Properties(); - String str = rs.getString(1); - String[] strs = str.split("\r\n"); - for (int i = 0; i < strs.length; i++) { - int ind = strs[i].indexOf("="); - String key = strs[i].substring(0, ind); - String prop = strs[i].substring(ind + 1); - properties.setProperty(key, prop); - } - String name = properties.getProperty("Alias"); - if (!MiscUtils.isNull(name)) { - DatabaseConnection databaseConnection = databaseConnectionFactory().create(name); - ConnectionsTreePanel connectionsTreePanel = null; - if (!connectionNameExists(databaseConnection.getName(), databaseConnection)) { - try { - connectionsTreePanel = (ConnectionsTreePanel) GUIUtilities. - getDockedTabComponent(ConnectionsTreePanel.PROPERTY_KEY); - } catch (Exception e) { - e.printStackTrace(); - } - - /***/ - databaseConnection.setUserName(properties.getProperty("UserName")); - databaseConnection.setPasswordStored(true); - databaseConnection.setPassword(properties.getProperty("Password")); - databaseConnection.setRole(properties.getProperty("Role")); - databaseConnection.setCharset(properties.getProperty("Charset")); - String s = properties.getProperty("DBName"); - databaseConnection.setSourceName(s); - String host = properties.getProperty("SrvName"); - if (MiscUtils.isNull(host)) { - databaseConnection.setHost("127.0.0.1"); - databaseConnection.setPort("3050"); - } else { - String server; - String port; - if (host.contains("/")) { - String[] serverport = host.split("/"); - server = serverport[0]; - port = serverport[1]; - } else { - server = host; - port = "3050"; - } - databaseConnection.setHost(server); - databaseConnection.setPort(port); - } - - try { - connectionsTreePanel.newConnection(databaseConnection); - } catch (Exception e) { - e.printStackTrace(); - } - } + if (rs == null) { + GUIUtilities.displayErrorMessage(bundleString("noConnections")); + finished(false); + return; + } + + while (rs.next()) { + + String rsValue = rs.getString(1); + if (MiscUtils.isNull(rsValue)) + continue; + + String[] connectionProperties = rsValue.split("\r\n"); + if (MiscUtils.isEmpty(connectionProperties)) + continue; - /***/ + Properties properties = new Properties(); + for (String propertyString : connectionProperties) { + int splitIndex = propertyString.indexOf("="); + properties.setProperty( + propertyString.substring(0, splitIndex), + propertyString.substring(splitIndex + 1) + ); + } + + String alias = properties.getProperty("Alias"); + if (MiscUtils.isNull(alias)) + continue; + + availableConnections.add(alias); + DatabaseConnection databaseConnection = databaseConnectionFactory().create(alias); + if (!connectionNameExists(databaseConnection.getName(), databaseConnection)) { + + String port = "3050"; + String host = "localhost"; + String serverString = properties.getProperty("SrvName"); + if (!MiscUtils.isNull(serverString)) { + if (serverString.contains("/")) { + String[] serverProperties = serverString.split("/"); + host = serverProperties[0]; + port = serverProperties[1]; + } else { + host = serverString; + port = "3050"; + } } + databaseConnection.setHost(host); + databaseConnection.setPort(port); + databaseConnection.setPasswordStored(true); + databaseConnection.setRole(properties.getProperty("Role")); + databaseConnection.setCharset(properties.getProperty("Charset")); + databaseConnection.setSourceName(properties.getProperty("DBName")); + databaseConnection.setUserName(properties.getProperty("UserName")); + databaseConnection.setPassword(properties.getProperty("Password")); + + try { + treePanel.newConnection(databaseConnection, false); + loadedConnections.add(alias); + + } catch (Exception e) { + Log.error(e.getMessage(), e); + } } - parent.finished(); + } + finished(true); + } catch (SQLException e) { - e.printStackTrace(); + Log.error(e.getMessage(), e); + GUIUtilities.displayExceptionErrorDialog(e.getMessage(), e, getClass()); + } finally { sender.releaseResources(); } + } + + private void finished(boolean showMessage) { + parent.finished(); + + if (!showMessage) + return; + + if (availableConnections.size() == loadedConnections.size()) { + GUIUtilities.displayInformationMessage(bundleString("loadedSuccessfully")); + return; + } + + availableConnections.removeAll(loadedConnections); + GUIUtilities.displayWarningMessage(bundleString( + "loadedWithError", + availableConnections.size(), + String.join("\n", availableConnections) + )); + } + private DatabaseConnection getSelectedConnection() { + return (DatabaseConnection) connectionsCombo.getSelectedItem(); } private boolean connectionNameExists(String name, DatabaseConnection databaseConnection) { if (databaseConnectionRepository().nameExists(databaseConnection, name, databaseConnection.getFolderId())) { - GUIUtilities.displayErrorMessage(String.format(Bundles.get("ConnectionPanel.error.nameExist"), name)); + GUIUtilities.displayErrorMessage(bundleString("nameExist", name)); return true; } return false; } - private DatabaseConnectionFactory databaseConnectionFactory() { - - if (databaseConnectionFactory == null) { - - databaseConnectionFactory = new DatabaseConnectionFactoryImpl(); - } - - return databaseConnectionFactory; + if (connectionFactory == null) + connectionFactory = new DatabaseConnectionFactoryImpl(); + return connectionFactory; } private DatabaseConnectionRepository databaseConnectionRepository() { - - return (DatabaseConnectionRepository) RepositoryCache.load( - DatabaseConnectionRepository.REPOSITORY_ID); + return (DatabaseConnectionRepository) RepositoryCache.load(DatabaseConnectionRepository.REPOSITORY_ID); } + private static String bundleString(String key, Object... args) { + return Bundles.get(ImportConnectionsDBPanel.class, key, args); + } } - diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index b7a361893..d2006b5be 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1608,6 +1608,12 @@ HostPanel.DataTypes=Data Types HostPanel.DatabaseConnection=Database Connection HostPanel.DatabaseProperties=Database Properties HostPanel.SQLKeywords=SQL Keywords +ImportConnectionsDBPanel.title=Import Connection +ImportConnectionsDBPanel.nameExist=The name [{0}] is already exists +ImportConnectionsDBPanel.connectionsTreeUnavailable=Couldn't import connections.\nConnections tree panel unavailable +ImportConnectionsDBPanel.noConnections=This connection does not contain any connections properties +ImportConnectionsDBPanel.loadedSuccessfully=All connections loaded successfully +ImportConnectionsDBPanel.loadedWithError={0} connections loaded successfully\nSome connections couldn't be loaded:\n{1} ImportConnectionPanel.ExceptionErrorMessage=Error reading connections from file.\n\nThe system returned:\n{0} ImportConnectionPanel.FinishedImportingConnectionsFromFile=Finished importing connections from file. ImportConnectionPanel.ImportConnections=Import Connections diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 2eb7c8ac6..73d8287af 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1608,6 +1608,12 @@ HostPanel.DataTypes=Типы Данных HostPanel.DatabaseConnection=Подключение к базе данных HostPanel.DatabaseProperties=Свойства базы данных HostPanel.SQLKeywords=Ключевые слова SQL +ImportConnectionsDBPanel.title=Импорт подключения +ImportConnectionsDBPanel.nameExist=Имя [{0}] уже занято +ImportConnectionsDBPanel.connectionsTreeUnavailable=Не удалось импортировать подключения.\nНе удалось получить дерево подключений +ImportConnectionsDBPanel.noConnections=Это подключение не содержит данных о доступных соединениях +ImportConnectionsDBPanel.loadedSuccessfully=Все подключения импортированы успешно +ImportConnectionsDBPanel.loadedWithError={0} подключений импортировано успешно\nНекоторые подключения не удалось импортировать:\n{1} ImportConnectionPanel.ExceptionErrorMessage=Ошибка чтения подключений из файла.\n\nСистема вернула:\n{0} ImportConnectionPanel.FinishedImportingConnectionsFromFile=Завершен импорт соединений из файла. ImportConnectionPanel.ImportConnections=Импорт Соединений From 6445b26a4590ef6eae4aa228768c8ff6ee37724e Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 25 Jul 2024 14:59:53 +0300 Subject: [PATCH 006/141] Fix load full info for Tables and Functions (RS-186325) --- .../impl/DefaultDatabaseMetaTag.java | 54 ++++++++++++------- .../impl/DefaultDatabaseTable.java | 2 +- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java index 3aeb8467c..fe93f8030 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java @@ -808,7 +808,8 @@ private ResultSet getProceduresResultSet() throws SQLException { e.printStackTrace(System.out); } - String sql = "SELECT CAST (RDB$PROCEDURE_NAME as VARCHAR(1024)) AS PROCEDURE_NAME\n" + + String sql = "SELECT\n" + + "CAST (RDB$PROCEDURE_NAME as VARCHAR(1024)) AS PROCEDURE_NAME\n" + "FROM RDB$PROCEDURES\n" + ((majorVersion > 2) ? "WHERE RDB$PACKAGE_NAME IS NULL\n" : "") + "ORDER BY RDB$PROCEDURE_NAME"; @@ -886,7 +887,8 @@ else if (typeTree == TreePanel.DEPENDENT) private ResultSet getSequencesResultSet() throws SQLException { - String query = "SELECT CAST (RDB$GENERATOR_NAME as VARCHAR(1024))\n" + + String query = "SELECT\n" + + "CAST (RDB$GENERATOR_NAME as VARCHAR(1024))\n" + "FROM RDB$GENERATORS\n" + "WHERE ((RDB$SYSTEM_FLAG IS NULL) OR (RDB$SYSTEM_FLAG = 0))\n" + "ORDER BY RDB$GENERATOR_NAME"; @@ -901,10 +903,11 @@ else if (typeTree == TreePanel.DEPENDENT) private ResultSet getSystemSequencesResultSet() throws SQLException { - String query = "SELECT CAST (RDB$GENERATOR_NAME as VARCHAR(1024))\n" + + String query = "SELECT\n" + + "CAST (RDB$GENERATOR_NAME as VARCHAR(1024))\n" + "FROM RDB$GENERATORS\n" + "WHERE ((RDB$SYSTEM_FLAG IS NOT NULL) AND (RDB$SYSTEM_FLAG != 0))\n" + - "ORDER BY RDB$GENERATOR_NAME"; + "ORDER BY RDB$GENERATOR_NAME"; if (typeTree == TreePanel.DEPENDED_ON) query = getDependOnQuery(14); @@ -916,7 +919,8 @@ else if (typeTree == TreePanel.DEPENDENT) private ResultSet getDomainsResultSet() throws SQLException { - String query = "SELECT CAST (RDB$FIELD_NAME as VARCHAR(1024))\n" + + String query = "SELECT\n" + + "CAST (RDB$FIELD_NAME as VARCHAR(1024))\n" + "FROM RDB$FIELDS\n" + "WHERE (NOT (RDB$FIELD_NAME STARTING WITH 'RDB$')) AND (RDB$SYSTEM_FLAG = 0 OR RDB$SYSTEM_FLAG IS NULL)\n" + "ORDER BY RDB$FIELD_NAME"; @@ -931,7 +935,8 @@ else if (typeTree == TreePanel.DEPENDENT) private ResultSet getSystemDomainResultSet() throws SQLException { - String query = "SELECT CAST (RDB$FIELD_NAME as VARCHAR(1024))\n" + + String query = "SELECT\n" + + "CAST (RDB$FIELD_NAME as VARCHAR(1024))\n" + "FROM RDB$FIELDS\n" + "WHERE (RDB$FIELD_NAME STARTING WITH 'RDB$') OR (RDB$SYSTEM_FLAG <> 0 AND RDB$SYSTEM_FLAG IS NOT NULL)\n" + "ORDER BY RDB$FIELD_NAME"; @@ -946,17 +951,18 @@ private ResultSet getSystemRolesResultSet() throws SQLException { "RDB$OWNER_NAME AS OWNER_NAME\n" + "FROM RDB$ROLES\n" + "WHERE RDB$SYSTEM_FLAG != 0 AND RDB$SYSTEM_FLAG IS NOT NULL\n" + - "ORDER BY 1"; + "ORDER BY RDB$ROLE_NAME"; return getResultSetFromQuery(query); } private ResultSet getSystemPackagesResultSet() throws SQLException { - String query = "SELECT CAST (RDB$PACKAGE_NAME as VARCHAR(1024))\n" + + String query = "SELECT\n" + + "CAST (RDB$PACKAGE_NAME as VARCHAR(1024))\n" + "FROM RDB$PACKAGES\n" + "WHERE RDB$SYSTEM_FLAG != 0 AND RDB$SYSTEM_FLAG IS NOT NULL\n" + - "ORDER BY 1"; + "ORDER BY RDB$PACKAGE_NAME"; return getResultSetFromQuery(query); } @@ -967,7 +973,7 @@ private ResultSet getUsersResultSet() throws SQLException { "CAST (SEC$USER_NAME as VARCHAR(1024)),\n" + "SEC$PLUGIN\n" + "FROM SEC$USERS\n" + - "ORDER BY 1,2"; + "ORDER BY SEC$USER_NAME, SEC$PLUGIN"; if (typeTree == TreePanel.DEPENDED_ON) query = getDependOnQuery(8); @@ -984,36 +990,47 @@ private ResultSet getRolesResultSet() throws SQLException { "RDB$OWNER_NAME AS OWNER_NAME\n" + "FROM RDB$ROLES\n" + "WHERE RDB$SYSTEM_FLAG = 0 OR RDB$SYSTEM_FLAG IS NULL\n" + - "ORDER BY 1"; + "ORDER BY RDB$ROLE_NAME"; return getResultSetFromQuery(query); } private ResultSet getTablespacesResultSet() throws SQLException { - String query = "SELECT CAST (RDB$TABLESPACE_NAME as VARCHAR(1024)) FROM RDB$TABLESPACES ORDER BY 1"; + String query = "SELECT\n" + + "CAST (RDB$TABLESPACE_NAME as VARCHAR(1024))\n" + + "FROM RDB$TABLESPACES\n" + + "ORDER BY RDB$TABLESPACE_NAME"; + return getResultSetFromQuery(query); } private ResultSet getJobsResultSet() throws SQLException { - String query = "SELECT CAST (RDB$JOB_NAME as VARCHAR(1024)) FROM RDB$JOBS ORDER BY 1"; + String query = "SELECT\n" + + "CAST (RDB$JOB_NAME as VARCHAR(1024))\n" + + "FROM RDB$JOBS\n" + + "ORDER BY RDB$JOB_NAME"; + return getResultSetFromQuery(query); } private ResultSet getCollationsResultSet() throws SQLException { - String query = "SELECT CAST (RDB$COLLATION_NAME as VARCHAR(1024))\n" + + String query = "SELECT\n" + + "CAST (RDB$COLLATION_NAME as VARCHAR(1024))\n" + "FROM RDB$COLLATIONS\n" + "WHERE RDB$SYSTEM_FLAG = 0 OR RDB$SYSTEM_FLAG IS NULL\n" + - "ORDER BY 1"; + "ORDER BY RDB$COLLATION_NAME"; return getResultSetFromQuery(query); } private ResultSet getExceptionResultSet() throws SQLException { - String query = "SELECT CAST (RDB$EXCEPTION_NAME as VARCHAR(1024)), RDB$DESCRIPTION\n" + + String query = "SELECT\n" + + "CAST (RDB$EXCEPTION_NAME as VARCHAR(1024)),\n" + + "RDB$DESCRIPTION\n" + "FROM RDB$EXCEPTIONS\n" + "ORDER BY RDB$EXCEPTION_NAME"; @@ -1099,7 +1116,8 @@ private ResultSet getPackagesResultSet() throws SQLException { String query = "SELECT CAST (P.RDB$PACKAGE_NAME as VARCHAR(1024))\n" + "FROM RDB$PACKAGES P\n" + - "WHERE RDB$SYSTEM_FLAG = 0 OR RDB$SYSTEM_FLAG IS NULL ORDER BY 1"; + "WHERE RDB$SYSTEM_FLAG = 0 OR RDB$SYSTEM_FLAG IS NULL\n" + + "ORDER BY P.RDB$PACKAGE_NAME"; if (typeTree == TreePanel.DEPENDED_ON) query = getDependOnQuery(19); @@ -1177,7 +1195,7 @@ private ResultSet getFunctionsResultSet() throws SQLException { "RDB$DESCRIPTION AS REMARKS\n" + "FROM RDB$FUNCTIONS\n" + "WHERE (RDB$MODULE_NAME IS NULL) AND (RDB$PACKAGE_NAME IS NULL)\n" + - "ORDER BY FUNCTION_NAME "; + "ORDER BY RDB$FUNCTION_NAME"; try { diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java index 6c5efa155..53a5cc407 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java @@ -1233,7 +1233,7 @@ protected SelectBuilder builderCommonQuery() { .appendCondition(Condition.createCondition(Field.createField(triggers, "TRIGGER_TYPE"), "=", "1")) .appendCondition(Condition.createCondition(Field.createField(triggers, "TRIGGER_TYPE"), "IS", "NULL")) .setLogicOperator("OR")); - sb.setOrdering("1"); + sb.setOrdering(getObjectField().getFieldTable()); return sb; } From 1be91790e206b6b0dc1b1d65dd2f319649d4d923 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 25 Jul 2024 15:07:30 +0300 Subject: [PATCH 007/141] Remove default "Favourites" folder (RS-186713) --- src/org/executequery/connection-folders-default.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/org/executequery/connection-folders-default.xml b/src/org/executequery/connection-folders-default.xml index 06904e3f9..61de7bb22 100644 --- a/src/org/executequery/connection-folders-default.xml +++ b/src/org/executequery/connection-folders-default.xml @@ -13,10 +13,4 @@ - - 61a05e8a-df1c-44fd-b8b7-8684691ee6ca - Favourites - - - From 9b8b3d405f386642fc8d7546bac22ad4a393ecd8 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 25 Jul 2024 15:55:21 +0300 Subject: [PATCH 008/141] Rework ErdDeleteRelationshipDialog and add locale (RS-186713) --- .../gui/erd/ErdDeleteRelationshipDialog.java | 378 +++++++----------- .../localization/resources.properties | 8 + .../localization/resources_ru.properties | 8 + 3 files changed, 161 insertions(+), 233 deletions(-) diff --git a/src/org/executequery/gui/erd/ErdDeleteRelationshipDialog.java b/src/org/executequery/gui/erd/ErdDeleteRelationshipDialog.java index 2a9fa474d..233f5bbad 100644 --- a/src/org/executequery/gui/erd/ErdDeleteRelationshipDialog.java +++ b/src/org/executequery/gui/erd/ErdDeleteRelationshipDialog.java @@ -20,368 +20,289 @@ package org.executequery.gui.erd; +import org.executequery.Constants; import org.executequery.GUIUtilities; -import org.executequery.gui.DefaultPanelButton; import org.executequery.gui.DefaultTable; +import org.executequery.gui.WidgetFactory; import org.executequery.gui.browser.ColumnConstraint; import org.executequery.gui.browser.ColumnData; import org.executequery.localization.Bundles; +import org.underworldlabs.swing.layouts.GridBagHelper; import javax.swing.*; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableColumnModel; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.util.Vector; /** * @author Takis Diakoumis */ @SuppressWarnings({"unchecked", "rawtypes"}) -public class ErdDeleteRelationshipDialog extends ErdPrintableDialog - implements ActionListener { +public class ErdDeleteRelationshipDialog extends ErdPrintableDialog { + private static final String TITLE = bundleString("title"); - /** - * The controller for the ERD viewer - */ - private final ErdViewerPanel parent; - /** - * The table listing constraints - */ private JTable table; - /** - * The two related tables - */ - private ErdTable[] erdTables; - /** - * The SQL text string buffer - */ - private StringBuffer sqlBuffer; - /** - * The constraints - */ - private Vector constraints; + private JButton deleteButton; + private JButton cancelButton; - /** - * The literal 'ALTER TABLE ' - */ - private static final String ALTER_TABLE = "ALTER TABLE "; - /** - * The literal ' ADD CONSTRAINT ' - */ - private static final String DROP_CONSTRAINT = " DROP CONSTRAINT "; - /** - * The literal ';' - */ - private static final String CLOSE_END = ";\n"; + private Vector constraints; + private final ErdViewerPanel parent; public ErdDeleteRelationshipDialog(ErdViewerPanel parent, ErdTable[] erdTables) { - super("Delete Table Relationship"); - + super(TITLE); this.parent = parent; - this.erdTables = erdTables; + this.constraints = new Vector(); + + if (!preInit(erdTables)) { + dispose(); + return; + } + + init(); + arrange(); + display(); + } - ColumnData[] cd1 = erdTables[0].getTableColumns(); - ColumnData[] cd2 = erdTables[1].getTableColumns(); + private boolean preInit(ErdTable[] erdTables) { String tableName1 = erdTables[0].getTableName(); String tableName2 = erdTables[1].getTableName(); - ColumnConstraint[] tableConstraints = null; - - constraints = new Vector(); - for (int i = 0; i < cd1.length; i++) { + ColumnData[] columnData1 = erdTables[0].getTableColumns(); + ColumnData[] columnData2 = erdTables[1].getTableColumns(); - if (!cd1[i].isForeignKey()) { + for (ColumnData columnData : columnData1) { + if (!columnData.isForeignKey()) continue; - } - tableConstraints = cd1[i].getColumnConstraintsArray(); - if (tableConstraints == null || tableConstraints.length == 0) { + ColumnConstraint[] tableConstraints = columnData.getColumnConstraintsArray(); + if (tableConstraints == null || tableConstraints.length == 0) break; - } for (int j = 0; j < tableConstraints.length; j++) { - if (tableConstraints[j].isPrimaryKey()) { - continue; - } - - if (tableConstraints[j].getRefTable().equalsIgnoreCase(tableName2)) { - constraints.add(new ColumnConstraintDrop(cd1[i], erdTables[0], j)); - } + ColumnConstraint constraint = tableConstraints[j]; + if (!constraint.isPrimaryKey() && constraint.getRefTable().equalsIgnoreCase(tableName2)) + constraints.add(new ColumnConstraintDrop(columnData, erdTables[0], j)); } - } - for (int i = 0; i < cd2.length; i++) { - - if (!cd2[i].isForeignKey()) { + for (ColumnData columnData : columnData2) { + if (!columnData.isForeignKey()) continue; - } - tableConstraints = cd2[i].getColumnConstraintsArray(); - if (tableConstraints == null || tableConstraints.length == 0) { + ColumnConstraint[] tableConstraints = columnData.getColumnConstraintsArray(); + if (tableConstraints == null || tableConstraints.length == 0) continue; - } for (int j = 0; j < tableConstraints.length; j++) { - if (tableConstraints[j].isPrimaryKey()) { - continue; - } - - if (tableConstraints[j].getRefTable().equalsIgnoreCase(tableName1)) { - constraints.add(new ColumnConstraintDrop(cd2[i], erdTables[1], j)); - } + ColumnConstraint constraint = tableConstraints[j]; + if (!constraint.isPrimaryKey() && constraint.getRefTable().equalsIgnoreCase(tableName1)) + constraints.add(new ColumnConstraintDrop(columnData, erdTables[1], j)); } - } - if (constraints.size() == 0) { - GUIUtilities.displayErrorMessage( - "No relation exists between the selected tables"); - super.dispose(); - return; + if (constraints.isEmpty()) { + GUIUtilities.displayErrorMessage(bundleString("noRelation")); + return false; } - try { - jbInit(); - } catch (Exception e) { - e.printStackTrace(); - } - - display(); - + return true; } - private void jbInit() throws Exception { - JButton deleteButton = new DefaultPanelButton(Bundles.get("common.delete.button"), "Delete"); - JButton cancelButton = new DefaultPanelButton(Bundles.get("common.cancel.button"), "Cancel"); + private void init() { - cancelButton.addActionListener(this); - deleteButton.addActionListener(this); + deleteButton = WidgetFactory.createButton("deleteButton", Bundles.get("common.delete.button"), e -> delete()); + cancelButton = WidgetFactory.createButton("cancelButton", Bundles.get("common.cancel.button"), e -> dispose()); - sqlText.setPreferredSize(new Dimension(480, 90)); + sqlText.setSQLTextEditable(false); + sqlText.setPreferredSize(new Dimension(450, 200)); table = new DefaultTable(new ConstraintTableModel()); - table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.getTableHeader().setReorderingAllowed(false); - table.setCellSelectionEnabled(true); table.setColumnSelectionAllowed(false); table.setRowSelectionAllowed(false); + table.setCellSelectionEnabled(true); + table.setFillsViewportHeight(true); TableColumnModel tcm = table.getColumnModel(); tcm.getColumn(0).setPreferredWidth(25); - tcm.getColumn(1).setPreferredWidth(100); - tcm.getColumn(2).setPreferredWidth(125); - tcm.getColumn(3).setPreferredWidth(125); - tcm.getColumn(4).setPreferredWidth(125); - tcm.getColumn(5).setPreferredWidth(125); - - JScrollPane tableScroller = new JScrollPane(table); - tableScroller.setPreferredSize(new Dimension(640, 130)); - - JPanel panel = new JPanel(new GridBagLayout()); - panel.setBorder(BorderFactory.createEtchedBorder()); - - GridBagConstraints gbc = new GridBagConstraints(); - gbc.insets = new Insets(5, 5, 5, 5); - gbc.anchor = GridBagConstraints.NORTHWEST; - panel.add(new JLabel("Select the constraints to be dropped:"), gbc); - gbc.gridy = 1; - gbc.fill = GridBagConstraints.BOTH; - gbc.gridwidth = GridBagConstraints.REMAINDER; - gbc.weightx = 1.0; - gbc.weighty = 0.7; - gbc.insets.top = 0; - panel.add(tableScroller, gbc); - gbc.gridx = 0; - gbc.gridy = 2; - gbc.weighty = 0.3; - panel.add(sqlText, gbc); - gbc.gridy = 3; - gbc.gridx = 1; - gbc.weighty = 0; - gbc.gridwidth = 1; - gbc.fill = GridBagConstraints.VERTICAL; - gbc.anchor = GridBagConstraints.EAST; - panel.add(deleteButton, gbc); - gbc.gridx = 2; - gbc.insets.left = 0; - gbc.weightx = 0; - panel.add(cancelButton, gbc); - - Container c = getContentPane(); - c.setLayout(new GridBagLayout()); - - c.add(panel, new GridBagConstraints(1, 1, 1, 1, 1.0, 1.0, - GridBagConstraints.SOUTHEAST, GridBagConstraints.BOTH, - new Insets(7, 7, 7, 7), 0, 0)); - - sqlBuffer = new StringBuffer(); + tcm.getColumn(0).setMaxWidth(25); + tcm.getColumn(0).setMinWidth(25); + } + + private void arrange() { + GridBagHelper gbh; + + // --- button panel --- + + JPanel buttonPanel = new JPanel(new GridBagLayout()); + + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + buttonPanel.add(new JPanel(), gbh.setMaxWeightX().get()); + buttonPanel.add(deleteButton, gbh.nextCol().setMinWeightX().get()); + buttonPanel.add(cancelButton, gbh.nextCol().leftGap(5).get()); + + // --- main panel --- + + JPanel mainPanel = new JPanel(new GridBagLayout()); + + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally().spanX(); + mainPanel.add(new JLabel(bundleString("selectConstraints")), gbh.get()); + mainPanel.add(new JScrollPane(table), gbh.nextRow().topGap(5).setMaxWeightY().fillBoth().get()); + mainPanel.add(sqlText, gbh.nextRow().get()); + mainPanel.add(buttonPanel, gbh.nextRow().setMinWeightY().get()); + + // --- base --- + + setLayout(new GridBagLayout()); + setPreferredSize(new Dimension(800, 500)); setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + + gbh = new GridBagHelper().setInsets(5, 5, 5, 5).fillBoth().spanX().spanY(); + add(mainPanel, gbh.get()); } private void setSQLText() { - sqlBuffer.setLength(0); - ColumnConstraintDrop ccd = null; + + StringBuilder sb = new StringBuilder(); for (int i = 0, n = constraints.size(); i < n; i++) { - ccd = (ColumnConstraintDrop) constraints.elementAt(i); - if (ccd.isDropped()) { - sqlBuffer.append(ccd.getSql()); - } + ColumnConstraintDrop constraintToDrop = (ColumnConstraintDrop) constraints.elementAt(i); + if (constraintToDrop.isDropped()) + sb.append(constraintToDrop.getSql()); } - sqlText.setSQLText(sqlBuffer.toString()); + + sqlText.setSQLText(sb.toString()); } private void delete() { - ColumnConstraintDrop ccd = null; + for (int i = 0, n = constraints.size(); i < n; i++) { - ccd = (ColumnConstraintDrop) constraints.elementAt(i); - ccd.dropConstraint(); + ColumnConstraintDrop constraintToDrop = (ColumnConstraintDrop) constraints.elementAt(i); + constraintToDrop.dropConstraint(); } constraints = null; - erdTables = null; table = null; parent.updateTableRelationships(); dispose(); } - public void actionPerformed(ActionEvent e) { - Object button = e.getSource(); - - if (button instanceof JButton) { - String command = e.getActionCommand(); - - if (command.equals("Cancel")) - dispose(); - - else if (command.equals("Delete")) - delete(); - - } - + private static String bundleString(String key, Object... args) { + return Bundles.get(ErdDeleteRelationshipDialog.class, key, args); } private class ConstraintTableModel extends AbstractTableModel { - protected String[] header = {" ", "Name", "Referencing Table", - "Referencing Column", "Referenced Table", - "Referenced Column"}; + private final String[] headers = { + " ", + bundleString("Name"), + bundleString("ReferencingTable"), + bundleString("ReferencingColumn"), + bundleString("ReferencedTable"), + bundleString("ReferencedColumn") + }; + @Override public int getColumnCount() { - return 6; + return headers.length; } + @Override public int getRowCount() { return constraints.size(); } + @Override public Object getValueAt(int row, int col) { - ColumnConstraintDrop ccd = (ColumnConstraintDrop) constraints.elementAt(row); - ColumnConstraint cc = ccd.getColumnConstraint(); + ColumnConstraintDrop constraintToDrop = (ColumnConstraintDrop) constraints.elementAt(row); + ColumnConstraint constraint = constraintToDrop.getColumnConstraint(); switch (col) { - case 0: - return Boolean.valueOf(ccd.isDropped()); - + return constraintToDrop.isDropped(); case 1: - return cc.getName(); - + return constraint.getName(); case 2: - return cc.getTable(); - + return constraint.getTable(); case 3: - return cc.getColumn(); - + return constraint.getColumn(); case 4: - return cc.getRefTable(); - + return constraint.getRefTable(); case 5: - return cc.getRefColumn(); - + return constraint.getRefColumn(); default: return null; - } } + @Override public void setValueAt(Object value, int row, int col) { - ColumnConstraintDrop ccd = (ColumnConstraintDrop) constraints.elementAt(row); - ColumnConstraint cc = ccd.getColumnConstraint(); + ColumnConstraintDrop constraintToDrop = (ColumnConstraintDrop) constraints.elementAt(row); + ColumnConstraint constraint = constraintToDrop.getColumnConstraint(); switch (col) { case 0: - ccd.setDropped(((Boolean) value).booleanValue()); + constraintToDrop.setDropped((Boolean) value); setSQLText(); break; case 1: - cc.setName((String) value); + constraint.setName((String) value); break; case 2: - cc.setTable((String) value); + constraint.setTable((String) value); break; case 3: - cc.setColumn((String) value); + constraint.setColumn((String) value); break; case 4: - cc.setRefTable((String) value); + constraint.setRefTable((String) value); break; case 5: - cc.setRefColumn((String) value); + constraint.setRefColumn((String) value); break; } fireTableRowsUpdated(row, row); } + @Override public boolean isCellEditable(int row, int col) { - return (col == 0); + return col == 0; } + @Override public String getColumnName(int col) { - return header[col]; + return headers[col]; } + @Override public Class getColumnClass(int col) { - if (col == 0) { - return Boolean.class; - } - return String.class; + return col == 0 ? Boolean.class : String.class; } - } // ConstraintTableModel + } // ConstraintTableModel class - - class ColumnConstraintDrop { + private static class ColumnConstraintDrop { private boolean dropped; private final ErdTable erdTable; - private ColumnConstraint columnConstraint; private final ColumnData columnData; + private final ColumnConstraint columnConstraint; - public ColumnConstraintDrop(ColumnData columnData, - ErdTable erdTable, int constraintIndex) { - columnConstraint = columnData.getColumnConstraintsArray()[constraintIndex]; - this.erdTable = erdTable; + public ColumnConstraintDrop(ColumnData columnData, ErdTable erdTable, int constraintIndex) { + this.columnConstraint = columnData.getColumnConstraintsArray()[constraintIndex]; this.columnData = columnData; - dropped = false; + this.erdTable = erdTable; + this.dropped = false; } public void dropConstraint() { - if (dropped) { columnData.removeConstraint(columnConstraint); columnData.setForeignKey(false); erdTable.setDropConstraintsScript(getSql()); } - - } - - public void setColumnConstraint(ColumnConstraint columnConstraint) { - this.columnConstraint = columnConstraint; } public ColumnConstraint getColumnConstraint() { @@ -390,12 +311,15 @@ public ColumnConstraint getColumnConstraint() { public String getSql() { - if (dropped) - return ALTER_TABLE + erdTable.getTableName() + - DROP_CONSTRAINT + columnConstraint.getName() + CLOSE_END; - else - return ""; + if (dropped) { + return String.format( + "ALTER TABLE %s DROP CONSTRAINT %s;\n", + erdTable.getTableName(), + columnConstraint.getName() + ); + } + return Constants.EMPTY; } public boolean isDropped() { @@ -406,18 +330,6 @@ public void setDropped(boolean dropped) { this.dropped = dropped; } - } // ColumnConstraintDrop + } // ColumnConstraintDrop class } - - - - - - - - - - - - diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index d2006b5be..ebed74f5a 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1309,6 +1309,14 @@ EditConstraintPanel.Sorting=Sorting EditConstraintPanel.Table=Table: EditConstraintPanel.Type=Type: EditConstraintPanel.UpdateRule=Update rule +ErdDeleteRelationshipDialog.title=Delete Table Relationship +ErdDeleteRelationshipDialog.Name=Name +ErdDeleteRelationshipDialog.ReferencingTable=Referencing Table +ErdDeleteRelationshipDialog.ReferencingColumn=Referencing Column +ErdDeleteRelationshipDialog.ReferencedTable=Referenced Table +ErdDeleteRelationshipDialog.ReferencedColumn=Referenced Column +ErdDeleteRelationshipDialog.noRelation=No relation exists between the selected tables +ErdDeleteRelationshipDialog.selectConstraints=Select the constraints to be dropped ErdFontStyleDialog.Bold-Italic=Bold/Italic ErdFontStyleDialog.Bold=Bold ErdFontStyleDialog.ColumnNameStyleLabel=Column Name Style: diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 73d8287af..9b95d3da9 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1309,6 +1309,14 @@ EditConstraintPanel.Sorting=Сортировка EditConstraintPanel.Table=Таблица: EditConstraintPanel.Type=Тип: EditConstraintPanel.UpdateRule=Правило обновления +ErdDeleteRelationshipDialog.title=Удаление ограничений +ErdDeleteRelationshipDialog.Name=Имя +ErdDeleteRelationshipDialog.ReferencingTable=Таблица +ErdDeleteRelationshipDialog.ReferencingColumn=Столбец +ErdDeleteRelationshipDialog.ReferencedTable=Связанная таблица +ErdDeleteRelationshipDialog.ReferencedColumn=Связанный столбец +ErdDeleteRelationshipDialog.noRelation=Между выбранными таблицами нет связи +ErdDeleteRelationshipDialog.selectConstraints=Выберите ограничения, которые нужно удалить ErdFontStyleDialog.Bold-Italic=Жирный/Курсив ErdFontStyleDialog.Bold=Жирный ErdFontStyleDialog.ColumnNameStyleLabel=Стиль имени столбца: From 1aa440c7d8e91e5bb4dbfd628f0c8392eb751807 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 25 Jul 2024 17:49:26 +0300 Subject: [PATCH 009/141] Rework ErdNewRelationshipDialog and add locale (RS-186713) --- .../gui/erd/ErdNewRelationshipDialog.java | 402 ++++++------------ .../localization/resources.properties | 11 + .../localization/resources_ru.properties | 11 + 3 files changed, 154 insertions(+), 270 deletions(-) diff --git a/src/org/executequery/gui/erd/ErdNewRelationshipDialog.java b/src/org/executequery/gui/erd/ErdNewRelationshipDialog.java index 46415cf91..25200851c 100644 --- a/src/org/executequery/gui/erd/ErdNewRelationshipDialog.java +++ b/src/org/executequery/gui/erd/ErdNewRelationshipDialog.java @@ -20,13 +20,13 @@ package org.executequery.gui.erd; +import org.executequery.GUIUtilities; import org.executequery.databaseobjects.NamedObject; -import org.executequery.gui.DefaultPanelButton; import org.executequery.gui.WidgetFactory; import org.executequery.gui.browser.ColumnConstraint; import org.executequery.gui.browser.ColumnData; import org.executequery.localization.Bundles; -import org.underworldlabs.swing.DefaultFieldLabel; +import org.underworldlabs.swing.layouts.GridBagHelper; import javax.swing.*; import java.awt.*; @@ -36,330 +36,192 @@ * @author Takis Diakoumis */ public class ErdNewRelationshipDialog extends ErdPrintableDialog { + private static final String TITLE = bundleString("title"); - /** - * The controller for the ERD viewer - */ private final ErdViewerPanel parent; - /** - * The constraint name text field - */ + + private JButton createButton; + private JButton cancelButton; private JTextField nameField; - /** - * The referencing table combo - */ - private JComboBox referencingTableCombo; - /** - * The referencing column combo - */ - private JComboBox referencingColumnCombo; - /** - * The referenced table combo - */ - private JComboBox referencedTableCombo; - /** - * The referenced column combo - */ - private JComboBox referencedColumnCombo; - /** - * The SQL text string buffer - */ - private StringBuffer sqlBuffer; - - /** - * The literal 'ALTER TABLE ' - */ - private static final String ALTER_TABLE = "ALTER TABLE "; - /** - * The literal ' ADD CONSTRAINT ' - */ - private static final String ADD_CONSTRAINT = "\n ADD CONSTRAINT "; - /** - * The literal ' FOREIGN KEY(' - */ - private static final String FOREIGN_KEY = " FOREIGN KEY("; - /** - * The literal ') REFERENCES ' - */ - private static final String REFERENCES = ")\n REFERENCES "; - /** - * The literal '(' - */ - private static final char OPEN_B = '('; - /** - * The literal ');' - */ - private static final String CLOSE_END = ");\n"; - - private static final int DIALOG_WIDTH = 600; - private static final int DIALOG_HEIGHT = 400; - public ErdNewRelationshipDialog(ErdViewerPanel parent) { - super("New Table Relationship"); + private JComboBox referencedTableCombo; + private JComboBox referencedColumnCombo; + private JComboBox referencingTableCombo; + private JComboBox referencingColumnCombo; + public ErdNewRelationshipDialog(ErdViewerPanel parent) { + super(TITLE); this.parent = parent; - try { - jbInit(); - } catch (Exception e) { - e.printStackTrace(); - } - + init(); + arrange(); display(); - } - private void jbInit() throws Exception { - JButton createButton = new DefaultPanelButton(Bundles.get("common.create.button")); - JButton cancelButton = new DefaultPanelButton(Bundles.get("common.cancel.button")); - createButton.setActionCommand("Create"); - cancelButton.setActionCommand("Cancel"); - - ActionListener btnListener = new ActionListener() { - public void actionPerformed(ActionEvent e) { - buttons_actionPerformed(e); - } - }; + private void init() { + ErdTable[] tables = parent.getAllTablesArray(); - cancelButton.addActionListener(btnListener); - createButton.addActionListener(btnListener); + createButton = WidgetFactory.createButton("createButton", Bundles.get("common.create.button"), e -> create()); + cancelButton = WidgetFactory.createButton("cancelButton", Bundles.get("common.cancel.button"), e -> dispose()); - sqlText.setPreferredSize(new Dimension(420, 120)); + sqlText.setSQLTextEditable(false); + sqlText.setPreferredSize(new Dimension(420, 150)); nameField = WidgetFactory.createTextField("nameField"); nameField.addKeyListener(new KeyAdapter() { + @Override public void keyReleased(KeyEvent e) { setSQLText(); } }); - ErdTable[] tables = parent.getAllTablesArray(); referencingTableCombo = WidgetFactory.createComboBox("referencingTableCombo", tables); + referencingTableCombo.addActionListener(this::tableChanged); + referencedTableCombo = WidgetFactory.createComboBox("referencedTableCombo", tables); + referencedTableCombo.addActionListener(this::tableChanged); referencingColumnCombo = WidgetFactory.createComboBox("referencingColumnCombo"); - referencedColumnCombo = WidgetFactory.createComboBox("referencedColumnCombo"); - - referencingTableCombo.addActionListener(btnListener); - referencedTableCombo.addActionListener(btnListener); - referencingColumnCombo.addActionListener(btnListener); - referencedColumnCombo.addActionListener(btnListener); - - JPanel panel = new JPanel(new GridBagLayout()); - panel.setBorder(BorderFactory.createEtchedBorder()); - - GridBagConstraints gbc = new GridBagConstraints(); - gbc.anchor = GridBagConstraints.NORTHWEST; - gbc.fill = GridBagConstraints.HORIZONTAL; - - gbc.insets = new Insets(10, 10, 0, 10); - gbc.gridy++; - gbc.gridx = 0; - gbc.gridwidth = 1; - gbc.insets.top = 0; - gbc.weightx = 0; - panel.add(new DefaultFieldLabel("Constraint Name:"), gbc); - gbc.gridwidth = GridBagConstraints.REMAINDER; - gbc.gridx = 1; - gbc.insets.left = 5; - gbc.weightx = 1.0; - panel.add(nameField, gbc); - - gbc.insets = new Insets(10, 10, 0, 10); - gbc.gridy++; - gbc.gridx = 0; - gbc.gridwidth = 1; - gbc.weightx = 0; - panel.add(new DefaultFieldLabel("Referencing Table:"), gbc); - gbc.gridwidth = GridBagConstraints.REMAINDER; - gbc.gridx = 1; - gbc.insets.left = 5; - gbc.weightx = 1.0; - panel.add(referencingTableCombo, gbc); - - gbc.insets = new Insets(10, 10, 0, 10); - gbc.gridy++; - gbc.gridx = 0; - gbc.gridwidth = 1; - gbc.weightx = 0; - panel.add(new DefaultFieldLabel("Referencing Column:"), gbc); - gbc.gridwidth = GridBagConstraints.REMAINDER; - gbc.gridx = 1; - gbc.insets.left = 5; - gbc.weightx = 1.0; - panel.add(referencingColumnCombo, gbc); - - gbc.insets = new Insets(10, 10, 0, 10); - gbc.gridy++; - gbc.gridx = 0; - gbc.gridwidth = 1; - gbc.weightx = 0; - panel.add(new DefaultFieldLabel("Referenced Table:"), gbc); - gbc.gridwidth = GridBagConstraints.REMAINDER; - gbc.gridx = 1; - gbc.insets.left = 5; - gbc.weightx = 1.0; - panel.add(referencedTableCombo, gbc); - - gbc.insets = new Insets(10, 10, 0, 10); - gbc.gridy++; - gbc.gridx = 0; - gbc.gridwidth = 1; - gbc.weightx = 0; - panel.add(new DefaultFieldLabel("Referenced Column:"), gbc); - gbc.gridwidth = GridBagConstraints.REMAINDER; - gbc.gridx = 1; - gbc.insets.left = 5; - gbc.weightx = 1.0; - panel.add(referencedColumnCombo, gbc); - - gbc.gridx = 0; - gbc.gridy = 5; - gbc.weighty = 1.0; - gbc.fill = GridBagConstraints.BOTH; - gbc.insets.left = 5; - gbc.insets.bottom = 5; - panel.add(sqlText, gbc); - gbc.gridy = 6; - gbc.gridx = 2; - gbc.weighty = 0; - gbc.weightx = 1.0; - gbc.gridwidth = 1; - gbc.fill = GridBagConstraints.NONE; - gbc.anchor = GridBagConstraints.EAST; - panel.add(createButton, gbc); - gbc.gridx = 3; - gbc.insets.left = 0; - gbc.weightx = 0; - panel.add(cancelButton, gbc); - - Container c = getContentPane(); - c.setLayout(new GridBagLayout()); - - c.add(panel, new GridBagConstraints(1, 1, 1, 1, 1.0, 1.0, - GridBagConstraints.SOUTHEAST, GridBagConstraints.BOTH, - new Insets(7, 7, 7, 7), 0, 0)); - - this.addComponentListener(new ComponentAdapter() { - public void componentResized(ComponentEvent e) { - int width = getWidth(); - int height = getHeight(); - - if (width < DIALOG_WIDTH) - width = DIALOG_WIDTH; - - if (height < DIALOG_HEIGHT) - height = DIALOG_HEIGHT; - - setSize(width, height); - } - }); + referencingColumnCombo.addActionListener(e -> setSQLText()); - sqlBuffer = new StringBuffer(); - - ErdTable table = (ErdTable) referencingTableCombo.getSelectedItem(); - referencingColumnCombo.setModel(new DefaultComboBoxModel( - table.getTableColumns())); - table = (ErdTable) referencedTableCombo.getSelectedItem(); - referencedColumnCombo.setModel(new DefaultComboBoxModel( - table.getTableColumns())); - - this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + referencedColumnCombo = WidgetFactory.createComboBox("referencedColumnCombo"); + referencedColumnCombo.addActionListener(e -> setSQLText()); + referencingTableChanged(); + referencedTableChanged(); } - private void setSQLText() { - sqlBuffer.delete(0, sqlBuffer.length()); - - sqlBuffer.append(ALTER_TABLE). - append(referencingTableCombo.getSelectedItem()). - append(ADD_CONSTRAINT). - append(nameField.getText()). - append(FOREIGN_KEY). - append(referencingColumnCombo.getSelectedItem()). - append(REFERENCES). - append(referencedTableCombo.getSelectedItem()). - append(OPEN_B). - append(referencedColumnCombo.getSelectedItem()). - append(CLOSE_END); - - sqlText.setSQLText(sqlBuffer.toString()); + private void arrange() { + GridBagHelper gbh; - } + // --- button panel --- - private void create() { + JPanel buttonPanel = new JPanel(new GridBagLayout()); - ColumnData column = (ColumnData) referencingColumnCombo.getSelectedItem(); + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + buttonPanel.add(new JPanel(), gbh.setMaxWeightX().get()); + buttonPanel.add(createButton, gbh.nextCol().fillNone().setMinWeightX().get()); + buttonPanel.add(cancelButton, gbh.nextCol().leftGap(5).get()); - ColumnConstraint constraint = new ColumnConstraint(); - constraint.setName(nameField.getText()); - constraint.setRefTable(referencedTableCombo.getSelectedItem().toString()); - constraint.setColumn(column.getColumnName()); - constraint.setRefColumn(referencedColumnCombo.getSelectedItem().toString()); - constraint.setType(NamedObject.FOREIGN_KEY); + // --- main panel --- - column.addConstraint(constraint); - column.setForeignKey(true); + JPanel mainPanel = new JPanel(new GridBagLayout()); - ErdTable referencingTable = (ErdTable) referencingTableCombo.getSelectedItem(); - referencingTable.setAddConstraintsScript(sqlText.getSQLText()); + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + mainPanel.add(new JLabel(bundleString("ConstraintName")), gbh.topGap(3).get()); + mainPanel.add(nameField, gbh.nextCol().leftGap(5).topGap(0).get()); + mainPanel.add(new JLabel(bundleString("ReferencingTable")), gbh.nextRowFirstCol().leftGap(0).topGap(8).get()); + mainPanel.add(referencingTableCombo, gbh.nextCol().leftGap(5).topGap(5).get()); + mainPanel.add(new JLabel(bundleString("ReferencingColumn")), gbh.nextRowFirstCol().leftGap(0).topGap(8).get()); + mainPanel.add(referencingColumnCombo, gbh.nextCol().leftGap(5).topGap(5).get()); + mainPanel.add(new JLabel(bundleString("ReferencedTable")), gbh.nextRowFirstCol().leftGap(0).topGap(8).get()); + mainPanel.add(referencedTableCombo, gbh.nextCol().leftGap(5).topGap(5).get()); + mainPanel.add(new JLabel(bundleString("ReferencedColumn")), gbh.nextRowFirstCol().leftGap(0).topGap(8).get()); + mainPanel.add(referencedColumnCombo, gbh.nextCol().leftGap(5).topGap(5).get()); + mainPanel.add(sqlText, gbh.nextRowFirstCol().leftGap(0).setMaxWeightY().fillBoth().spanX().get()); + mainPanel.add(buttonPanel, gbh.nextRowFirstCol().setMinWeightY().get()); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - parent.updateTableRelationships(); - } - }); + // --- base --- - dispose(); + setLayout(new GridBagLayout()); + setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + setPreferredSize(new Dimension(800, 400)); + setMinimumSize(getPreferredSize()); + gbh = new GridBagHelper().setInsets(5, 5, 5, 5).fillBoth().spanX().spanY(); + add(mainPanel, gbh.get()); } - private void buttons_actionPerformed(ActionEvent e) { - Object button = e.getSource(); - - if (button instanceof JButton) { - String command = e.getActionCommand(); - - if (command.equals("Cancel")) - dispose(); - - else if (command.equals("Create")) - create(); - - } else { - - if (button == referencingTableCombo) { - ErdTable table = (ErdTable) referencingTableCombo.getSelectedItem(); - referencingColumnCombo.setModel(new DefaultComboBoxModel( - table.getTableColumns())); - } else if (button == referencedTableCombo) { - ErdTable table = (ErdTable) referencedTableCombo.getSelectedItem(); - referencedColumnCombo.setModel(new DefaultComboBoxModel( - table.getTableColumns())); - } - - setSQLText(); + private void create() { + Object selectedReferencingColumn = referencingColumnCombo.getSelectedItem(); + if (!(selectedReferencingColumn instanceof ColumnData)) { + GUIUtilities.displayWarningMessage(bundleString("isEmptyOrNull", bundleString("referencingColumn"))); + return; } - } - -} - + Object selectedReferencingTable = referencingTableCombo.getSelectedItem(); + if (!(selectedReferencingTable instanceof ErdTable)) { + GUIUtilities.displayWarningMessage(bundleString("isEmptyOrNull", bundleString("referencingTable"))); + return; + } + Object selectedReferencedColumn = referencedColumnCombo.getSelectedItem(); + if (selectedReferencedColumn == null) { + GUIUtilities.displayWarningMessage(bundleString("isEmptyOrNull", bundleString("referencedColumn"))); + return; + } + Object selectedReferencedTable = referencedTableCombo.getSelectedItem(); + if (selectedReferencedTable == null) { + GUIUtilities.displayWarningMessage(bundleString("isEmptyOrNull", bundleString("referencedTable"))); + return; + } + ErdTable referencingTable = (ErdTable) selectedReferencingTable; + ColumnData referencingColumn = (ColumnData) selectedReferencingColumn; + ColumnConstraint constraint = new ColumnConstraint(); + constraint.setName(nameField.getText()); + constraint.setRefTable(selectedReferencedTable.toString()); + constraint.setColumn(referencingColumn.getColumnName()); + constraint.setRefColumn(selectedReferencedColumn.toString()); + constraint.setType(NamedObject.FOREIGN_KEY); + referencingColumn.addConstraint(constraint); + referencingColumn.setForeignKey(true); + referencingTable.setAddConstraintsScript(sqlText.getSQLText()); + SwingUtilities.invokeLater(parent::updateTableRelationships); + dispose(); + } + private void setSQLText() { + String query = String.format( + "ALTER TABLE %s ADD CONSTRAINT %s FOREIGN KEY(%s) REFERENCES %s (%s);\n", + referencingTableCombo.getSelectedItem(), + nameField.getText(), + referencingColumnCombo.getSelectedItem(), + referencedTableCombo.getSelectedItem(), + referencedColumnCombo.getSelectedItem() + ); + sqlText.setSQLText(query); + } + private void tableChanged(ActionEvent e) { + Object source = e.getSource(); + if (source == referencingTableCombo) + referencingTableChanged(); + if (source == referencedTableCombo) + referencedTableChanged(); + setSQLText(); + } + @SuppressWarnings({"rawtypes", "unchecked"}) + private void referencedTableChanged() { + Object selectedItem = referencedTableCombo.getSelectedItem(); + if (selectedItem instanceof ErdTable) { + ErdTable table = (ErdTable) selectedItem; + referencedColumnCombo.setModel(new DefaultComboBoxModel(table.getTableColumns())); + } + } + @SuppressWarnings({"rawtypes", "unchecked"}) + private void referencingTableChanged() { + Object selectedItem = referencingTableCombo.getSelectedItem(); + if (selectedItem instanceof ErdTable) { + ErdTable table = (ErdTable) selectedItem; + referencingColumnCombo.setModel(new DefaultComboBoxModel(table.getTableColumns())); + } + } + private static String bundleString(String key, Object... args) { + return Bundles.get(ErdNewRelationshipDialog.class, key, args); + } +} diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index ebed74f5a..6a5f98441 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1337,6 +1337,17 @@ ErdLineStyleDialog.LineStyleLabel=Line Style: ErdLineStyleDialog.LineWeightLabel=Line Weight: ErdLineStyleDialog.BendLineLabel=Line Bend: ErdLineStyleDialog.title=Line Style +ErdNewRelationshipDialog.title=New Table Relationship +ErdNewRelationshipDialog.ConstraintName=Constraint Name: +ErdNewRelationshipDialog.ReferencingTable=Referencing Table: +ErdNewRelationshipDialog.ReferencingColumn=Referencing Column: +ErdNewRelationshipDialog.ReferencedTable=Referenced Table: +ErdNewRelationshipDialog.ReferencedColumn=Referenced Column: +ErdNewRelationshipDialog.isEmptyOrNull={0} is empty or null +ErdNewRelationshipDialog.referencingColumn=Referencing column +ErdNewRelationshipDialog.referencingTable=Referencing table +ErdNewRelationshipDialog.referencedColumn=Referenced column +ErdNewRelationshipDialog.referencedTable=Referenced table ErdNewTableDialog.TableExistsError=This table name already exists ErdNewTableDialog.TableNameEmptyError=Table name can not be empty ErdNewTableDialog.editableTitle=Table: diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 9b95d3da9..847ca104d 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1337,6 +1337,17 @@ ErdLineStyleDialog.LineStyleLabel=Стиль линий: ErdLineStyleDialog.LineWeightLabel=Ширина линий: ErdLineStyleDialog.BendLineLabel=Изгиб линий: ErdLineStyleDialog.title=Стиль линий +ErdNewRelationshipDialog.title=Добавление ограничения +ErdNewRelationshipDialog.ConstraintName=Имя ограничения: +ErdNewRelationshipDialog.ReferencingTable=Таблица: +ErdNewRelationshipDialog.ReferencingColumn=Столбец: +ErdNewRelationshipDialog.ReferencedTable=Связанная таблица: +ErdNewRelationshipDialog.ReferencedColumn=Связанный столбец: +ErdNewRelationshipDialog.isEmptyOrNull={0} не заполнено +ErdNewRelationshipDialog.referencingColumn=Имя столбца +ErdNewRelationshipDialog.referencingTable=Имя таблицы +ErdNewRelationshipDialog.referencedColumn=Имя связанного столбца +ErdNewRelationshipDialog.referencedTable=Имя связанной таблицы ErdNewTableDialog.TableExistsError=Эта таблица уже существует ErdNewTableDialog.TableNameEmptyError=Имя таблицы не может быть пустым ErdNewTableDialog.editableTitle=Таблица: From ba977600c7ba1287fe2a4a4f8bf67d6e7c52e99a Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 26 Jul 2024 13:56:57 +0300 Subject: [PATCH 010/141] Fix load full info for database objects (RS-186325) --- .../impl/DefaultDatabaseMetaTag.java | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java index fe93f8030..57449ef91 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java @@ -177,12 +177,12 @@ public void loadFullInfoForObjects() { if (Thread.currentThread() instanceof InterruptibleThread) thread = (InterruptibleThread) Thread.currentThread(); - ResultSet rs = querySender.getResultSet(query).getResultSet(); - ComparerDBPanel comparerDBPanel = getComparerDBPanel( thread, "LoadFullInfoForObjects", objects.size()); - int i = 0; + int currentIndex = 0; + int skippedCount = 0; + ResultSet rs = querySender.getResultSet(query).getResultSet(); while (rs != null && rs.next()) { if (thread != null && thread.isCanceled()) { @@ -190,38 +190,44 @@ public void loadFullInfoForObjects() { return; } - String userName = MiscUtils.trimEnd(rs.getString(1)); - if (objects.get(i) instanceof DefaultDatabaseUser) { + String objectName = MiscUtils.trimEnd(rs.getString(1)); + if (objects.get(currentIndex) instanceof DefaultDatabaseUser) { - DefaultDatabaseUser user = (DefaultDatabaseUser) objects.get(i); + DefaultDatabaseUser user = (DefaultDatabaseUser) objects.get(currentIndex); String pluginName = MiscUtils.trimEnd(rs.getString("SEC$PLUGIN")); - while (!user.getName().contentEquals(userName) || !user.getPlugin().contentEquals(pluginName)) { + while (!user.getName().contentEquals(objectName) || !user.getPlugin().contentEquals(pluginName)) { - i++; - if (i >= objects.size()) + currentIndex = first ? currentIndex + 1 : currentIndex - skippedCount; + skippedCount = first ? skippedCount + 1 : 0; + + if (currentIndex >= objects.size()) throw new DataSourceException("Error load info for " + metaDataKey); - user = (DefaultDatabaseUser) objects.get(i); + user = (DefaultDatabaseUser) objects.get(currentIndex); first = true; } } else { - while (!objects.get(i).getName().contentEquals(userName)) { - i++; - if (i >= objects.size()) + while (!objects.get(currentIndex).getName().contentEquals(objectName)) { + + currentIndex = first ? currentIndex + 1 : currentIndex - skippedCount; + skippedCount = first ? skippedCount + 1 : 0; + + if (currentIndex >= objects.size()) throw new DataSourceException("Error load info for " + metaDataKey); + first = true; } } if (first) { - ((AbstractDatabaseObject) objects.get(i)).prepareLoadingInfo(); + ((AbstractDatabaseObject) objects.get(currentIndex)).prepareLoadingInfo(); if (comparerDBPanel != null) comparerDBPanel.incrementProgressBarValue(); } - ((AbstractDatabaseObject) objects.get(i)).setInfoFromSingleRowResultSet(rs, first); + ((AbstractDatabaseObject) objects.get(currentIndex)).setInfoFromSingleRowResultSet(rs, first); first = false; } From 7a8f4b8079e72d617f3ec4693df1cc806962b19a Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 26 Jul 2024 15:02:34 +0300 Subject: [PATCH 011/141] Revert "Fix load full info for database objects (RS-186325)" This reverts commit ba977600c7ba1287fe2a4a4f8bf67d6e7c52e99a. --- .../impl/DefaultDatabaseMetaTag.java | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java index 57449ef91..fe93f8030 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseMetaTag.java @@ -177,12 +177,12 @@ public void loadFullInfoForObjects() { if (Thread.currentThread() instanceof InterruptibleThread) thread = (InterruptibleThread) Thread.currentThread(); + ResultSet rs = querySender.getResultSet(query).getResultSet(); + ComparerDBPanel comparerDBPanel = getComparerDBPanel( thread, "LoadFullInfoForObjects", objects.size()); - int currentIndex = 0; - int skippedCount = 0; - ResultSet rs = querySender.getResultSet(query).getResultSet(); + int i = 0; while (rs != null && rs.next()) { if (thread != null && thread.isCanceled()) { @@ -190,44 +190,38 @@ public void loadFullInfoForObjects() { return; } - String objectName = MiscUtils.trimEnd(rs.getString(1)); - if (objects.get(currentIndex) instanceof DefaultDatabaseUser) { + String userName = MiscUtils.trimEnd(rs.getString(1)); + if (objects.get(i) instanceof DefaultDatabaseUser) { - DefaultDatabaseUser user = (DefaultDatabaseUser) objects.get(currentIndex); + DefaultDatabaseUser user = (DefaultDatabaseUser) objects.get(i); String pluginName = MiscUtils.trimEnd(rs.getString("SEC$PLUGIN")); - while (!user.getName().contentEquals(objectName) || !user.getPlugin().contentEquals(pluginName)) { + while (!user.getName().contentEquals(userName) || !user.getPlugin().contentEquals(pluginName)) { - currentIndex = first ? currentIndex + 1 : currentIndex - skippedCount; - skippedCount = first ? skippedCount + 1 : 0; - - if (currentIndex >= objects.size()) + i++; + if (i >= objects.size()) throw new DataSourceException("Error load info for " + metaDataKey); - user = (DefaultDatabaseUser) objects.get(currentIndex); + user = (DefaultDatabaseUser) objects.get(i); first = true; } } else { - while (!objects.get(currentIndex).getName().contentEquals(objectName)) { - - currentIndex = first ? currentIndex + 1 : currentIndex - skippedCount; - skippedCount = first ? skippedCount + 1 : 0; - - if (currentIndex >= objects.size()) + while (!objects.get(i).getName().contentEquals(userName)) { + i++; + if (i >= objects.size()) throw new DataSourceException("Error load info for " + metaDataKey); - first = true; } } if (first) { - ((AbstractDatabaseObject) objects.get(currentIndex)).prepareLoadingInfo(); + ((AbstractDatabaseObject) objects.get(i)).prepareLoadingInfo(); if (comparerDBPanel != null) comparerDBPanel.incrementProgressBarValue(); } - ((AbstractDatabaseObject) objects.get(currentIndex)).setInfoFromSingleRowResultSet(rs, first); + ((AbstractDatabaseObject) objects.get(i)).setInfoFromSingleRowResultSet(rs, first); first = false; } From 6451e616c5eecb4861285ade15bdb7abfa2d7f2b Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 26 Jul 2024 16:25:29 +0300 Subject: [PATCH 012/141] CreateTablePanel class code clean and fix components arranging (RS-186713) --- .../ExportConnectionsPanelTwo.java | 2 +- .../ImportConnectionsPanelOne.java | 2 +- .../gui/erd/ErdNewTableDialog.java | 4 +- .../gui/table/CreateTablePanel.java | 774 ++++++++---------- .../localization/resources.properties | 34 +- .../localization/resources_ru.properties | 34 +- 6 files changed, 370 insertions(+), 480 deletions(-) diff --git a/src/org/executequery/gui/connections/ExportConnectionsPanelTwo.java b/src/org/executequery/gui/connections/ExportConnectionsPanelTwo.java index 5e3fc224b..579e9a931 100644 --- a/src/org/executequery/gui/connections/ExportConnectionsPanelTwo.java +++ b/src/org/executequery/gui/connections/ExportConnectionsPanelTwo.java @@ -45,7 +45,7 @@ private void init() { fileNameField = WidgetFactory.createTextField("fileNameField"); - JButton button = WidgetFactory.createInlineFieldButton("browseButton", Bundles.get("CreateTableFunctionPanel.BrowseButtonText")); + JButton button = WidgetFactory.createInlineFieldButton("browseButton", Bundles.get("CreateTablePanel.BrowseButtonText")); button.setActionCommand("browse"); button.addActionListener(this); button.setMnemonic('r'); diff --git a/src/org/executequery/gui/connections/ImportConnectionsPanelOne.java b/src/org/executequery/gui/connections/ImportConnectionsPanelOne.java index 2e7cc54de..8fa46fa47 100644 --- a/src/org/executequery/gui/connections/ImportConnectionsPanelOne.java +++ b/src/org/executequery/gui/connections/ImportConnectionsPanelOne.java @@ -45,7 +45,7 @@ private void init() { fileNameField = WidgetFactory.createTextField("fileNameField"); - JButton button = WidgetFactory.createInlineFieldButton("browseButton", Bundles.get("CreateTableFunctionPanel.BrowseButtonText")); + JButton button = WidgetFactory.createInlineFieldButton("browseButton", Bundles.get("CreateTablePanel.BrowseButtonText")); button.setActionCommand("browse"); button.addActionListener(this); button.setMnemonic('r'); diff --git a/src/org/executequery/gui/erd/ErdNewTableDialog.java b/src/org/executequery/gui/erd/ErdNewTableDialog.java index f707353d9..ed8a6c2ec 100644 --- a/src/org/executequery/gui/erd/ErdNewTableDialog.java +++ b/src/org/executequery/gui/erd/ErdNewTableDialog.java @@ -235,11 +235,11 @@ public List getErdTables() { } public boolean isShowCommentOnTable() { - return showCommentOnTableBox.isSelected(); + return showTableCommentCheck.isSelected(); } public boolean isShowCommentOnFields() { - return showCommentOnFieldsBox.isSelected(); + return showFieldCommentCheck.isSelected(); } @Override diff --git a/src/org/executequery/gui/table/CreateTablePanel.java b/src/org/executequery/gui/table/CreateTablePanel.java index ad3717f29..68b0e9659 100644 --- a/src/org/executequery/gui/table/CreateTablePanel.java +++ b/src/org/executequery/gui/table/CreateTablePanel.java @@ -26,6 +26,7 @@ import org.executequery.databaseobjects.DatabaseTypeConverter; import org.executequery.databaseobjects.NamedObject; import org.executequery.databaseobjects.T; +import org.executequery.databaseobjects.impl.DefaultDatabaseHost; import org.executequery.gui.ActionContainer; import org.executequery.gui.FocusComponentPanel; import org.executequery.gui.WidgetFactory; @@ -56,7 +57,6 @@ import java.awt.*; import java.awt.event.*; import java.io.File; -import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Vector; @@ -75,128 +75,71 @@ public class CreateTablePanel extends AbstractSQLSecurityObjectPanel TableConstraintFunction, TextEditorContainer { - public static final String TITLE = Bundles.get(CreateTablePanel.class, "title"); - + public static final String TITLE = bundledString("title"); public static final String FRAME_ICON = "icon_table_add"; - protected JComboBox tablespacesCombo; + // --- GUI components --- - protected DynamicComboBoxModel tablespaceComboModel; + private JComboBox tablespacesCombo; + private JComboBox temporaryTypeCombo; - /** - * The components for creating EXTERNAL table - */ - protected JCheckBox isExternalTable; //checking for creating EXTERNAL table - protected JPanel externalTablePropsPanel; //panel with components for creating EXTERNAL table - protected JTextField externalTableFilePathField; //path to table data file - protected JButton browseExternalTableFileButton; //button for open selectFileDialog - protected JCheckBox isAdapterNeeded; //checking for using ADAPTER table + private JCheckBox isExternalCheck; + private JCheckBox isAdapterNeededCheck; + protected JCheckBox showTableCommentCheck; + protected JCheckBox showFieldCommentCheck; - /** - * The table column definition panel - */ - protected NewTablePanel tablePanel; + private DynamicComboBoxModel tablespaceComboModel; - /** - * The table constraints panel - */ - protected NewTableConstraintsPanel consPanel; + private JButton browseExternalFileButton; + private JTextField externalFileField; - /** - * The text pane showing SQL generated - */ - protected SimpleSqlTextPanel sqlText; - /** - * The buffer off all SQL generated - */ - protected StringBuffer sqlBuffer; + private JPanel externalPanel; + private NewTablePanel tablePanel; + private SimpleSqlTextPanel sqlText; + private NewTableConstraintsPanel consPanel; - /** - * The toolbar - */ - private CreateTableToolBar colTools; - private CreateTableToolBar conTools; - - /** - * The base panel - */ - protected JPanel mainPanel; - private JComboBox typeTemporaryBox; + private CreateTableToolBar columnsToolBar; + private CreateTableToolBar constraintsToolBar; - protected JCheckBox showCommentOnTableBox; - protected JCheckBox showCommentOnFieldsBox; + // --- - /** - *

Constructs a new instance. - */ public CreateTablePanel(DatabaseConnection dc, ActionContainer dialog) { super(dc, dialog, null, null); } - @Override - protected void reset() { - - } + // --- AbstractCreateObjectPanel impl --- + @Override protected void init() { - initSQLSecurity(); - securityCombo.addActionListener(actionEvent -> setSQLText()); + securityCombo.addActionListener(e -> setSQLText()); connectionsCombo.addItemListener(this); - colTools = new CreateTableToolBar(this); - conTools = new CreateTableToolBar(this); + + columnsToolBar = new CreateTableToolBar(this); + constraintsToolBar = new CreateTableToolBar(this); + tablespaceComboModel = new DynamicComboBoxModel(new Vector<>()); tablespacesCombo = WidgetFactory.createComboBox("tablespaceCombo", tablespaceComboModel); tablespacesCombo.addItemListener(this); - JPanel columnsPanel = new JPanel(new GridBagLayout()); + + sqlText = new SimpleSqlTextPanel(); tablePanel = new NewTablePanel(this); - GridBagHelper gbh = new GridBagHelper(); - gbh.setDefaultsStatic(); - columnsPanel.add(colTools, gbh.setLabelDefault().fillVertical().spanY().get()); - columnsPanel.add(tablePanel, gbh.nextCol().fillBoth().spanX().spanY().get()); - tabbedPane.add(bundledString("Columns"), columnsPanel); - // create the constraints table and model - JPanel constraintsPanel = new JPanel(new GridBagLayout()); consPanel = new NewTableConstraintsPanel(this); - consPanel.setData(new Vector(0), true); - typeTemporaryBox = new JComboBox(new DefaultComboBoxModel(new String[]{"DELETE ROWS", "PRESERVE ROWS"})); - typeTemporaryBox.addActionListener(actionEvent -> setSQLText()); - gbh.setDefaultsStatic(); - constraintsPanel.add(conTools, gbh.setLabelDefault().fillVertical().spanY().get()); - constraintsPanel.add(consPanel, gbh.nextCol().fillBoth().spanX().spanY().get()); - - tabbedPane.add(bundledString("Constraints"), constraintsPanel); - - addCommentTab(null); - simpleCommentPanel.getCommentField().getTextAreaComponent().addKeyListener(new KeyListener() { - @Override - public void keyTyped(KeyEvent e) { - setSQLText(); - } - @Override - public void keyPressed(KeyEvent e) { - setSQLText(); - } - @Override - public void keyReleased(KeyEvent e) { - setSQLText(); - } - }); + consPanel.setData(new Vector<>(0), true); - sqlText = new SimpleSqlTextPanel(); - - // ----- components for creating EXTERNAL table ----- + temporaryTypeCombo = WidgetFactory.createComboBox("temporaryTypeCombo", new String[]{"DELETE ROWS", "PRESERVE ROWS"}); + temporaryTypeCombo.addActionListener(e -> setSQLText()); - isExternalTable = new JCheckBox(bundledString("IsExternalTableText")); - isExternalTable.addActionListener(e -> externalTablePropsChanged()); + isExternalCheck = WidgetFactory.createCheckBox("isExternalCheck", bundledString("IsExternalTableText")); + isExternalCheck.addActionListener(e -> externalTablePropsChanged()); - showCommentOnTableBox = new JCheckBox(Bundles.get(ErdPopupMenu.class, "DisplayCommentOnTable")); - showCommentOnFieldsBox = new JCheckBox(Bundles.get(ErdPopupMenu.class, "DisplayCommentsOnFields")); + showTableCommentCheck = WidgetFactory.createCheckBox("showTableCommentCheck", Bundles.get(ErdPopupMenu.class, "DisplayCommentOnTable")); + showFieldCommentCheck = WidgetFactory.createCheckBox("showFieldCommentCheck", Bundles.get(ErdPopupMenu.class, "DisplayCommentsOnFields")); - externalTableFilePathField = WidgetFactory.createTextField("externalTableFilePathField"); - externalTableFilePathField.getDocument().addDocumentListener(new DocumentListener() { + externalFileField = WidgetFactory.createTextField("externalFileField"); + externalFileField.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { @@ -215,95 +158,81 @@ public void changedUpdate(DocumentEvent e) { }); - browseExternalTableFileButton = WidgetFactory.createInlineFieldButton("browseExternalTableFileButton", bundledString("BrowseButtonText")); - browseExternalTableFileButton.addActionListener(e -> browseExternalTableFile()); - - isAdapterNeeded = new JCheckBox(bundledString("IsAdapterNeededText")); - isAdapterNeeded.addActionListener(e -> externalTablePropsChanged()); - - // ------ components arranging ----- - if (!(this instanceof CreateGlobalTemporaryTable)) - topGbh.addLabelFieldPair(topPanel, bundledString("Tablespace"), tablespacesCombo, null, false); - tablespacesCombo.setToolTipText(Bundles.get(TableDefinitionPanel.class, "Tablespace")); - tablespacesCombo.addActionListener(actionEvent -> setSQLText()); - if (this instanceof CreateGlobalTemporaryTable) { - topGbh.addLabelFieldPair(topPanel, bundledString("TypeTemporaryTable"), typeTemporaryBox, null, false); - } - if (connection != null) { - if (getDatabaseVersion() >= 3 && !(this instanceof CreateGlobalTemporaryTable)) { - - topPanel.add(isExternalTable, topGbh.nextRowFirstCol().setLabelDefault().get()); - - topPanel.add(isAdapterNeeded, topGbh.nextCol().get()); - } - } - if (this instanceof ErdNewTableDialog.CreateTableERDPanel) { - if (connection == null) - topGbh.nextRowFirstCol().previousCol(); - topPanel.add(showCommentOnTableBox, topGbh.nextCol().setLabelDefault().get()); - topPanel.add(showCommentOnFieldsBox, topGbh.nextCol().setLabelDefault().get()); - } - - // ----- external panel ----- - GridBagHelper gridBagHelper = new GridBagHelper(); - gridBagHelper.setDefaultsStatic(); - externalTablePropsPanel = new JPanel(new GridBagLayout()); - - gridBagHelper.addLabelFieldPair(externalTablePropsPanel, - bundledString("ExternalTableDataFileLabel"), externalTableFilePathField, - null, true, false); - - externalTablePropsPanel.add(browseExternalTableFileButton, - gridBagHelper.nextCol().setLabelDefault().get()); + browseExternalFileButton = WidgetFactory.createButton("browseExternalTableFileButton", Bundles.get("common.browse.button")); + browseExternalFileButton.addActionListener(e -> browseExternalTableFile()); - // ----- + isAdapterNeededCheck = WidgetFactory.createCheckBox("isAdapterNeededCheck", bundledString("IsAdapterNeededText")); + isAdapterNeededCheck.addActionListener(e -> externalTablePropsChanged()); - topPanel.add(externalTablePropsPanel, topGbh.nextRowFirstCol().spanX().spanY().fillHorizontally().get()); - tabbedPane.addTab("SQL", sqlText); - - // ------ - - setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); - //add(mainPanel, BorderLayout.CENTER); - - tabbedPane.addChangeListener(this); - nameField.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(KeyEvent e) { - setSQLText(); - } - }); - - sqlBuffer = new StringBuffer(CreateTableSQLSyntax.CREATE_TABLE); + arrange(); + addListeners(); - // check initial values for possible value inits if (connection != null) { tablePanel.setDataTypes(connection.getDataTypesArray(), connection.getIntDataTypesArray()); tablePanel.setDomains(getDomains()); tablePanel.setGenerators(getGenerators()); - } else { + } else tablePanel.setDataTypes(T.DEFAULT_TYPES, DatabaseTypeConverter.getSQLDataTypesFromNames(T.DEFAULT_TYPES)); - } + tablePanel.setDatabaseConnection(connection); if (connection != null) populateTablespaces(connection); externalTablePropsChanged(); - conTools.enableButtons(false); - colTools.enableButtons(true); + constraintsToolBar.enableButtons(false); + columnsToolBar.enableButtons(true); centralPanel.setVisible(false); } @Override - protected void initEdited() { + @SuppressWarnings("unchecked") + protected String generateQuery() { + + String tablespace = null; + if (tablespacesCombo.getSelectedItem() != null) + tablespace = ((NamedObject) tablespacesCombo.getSelectedItem()).getName(); + + String adapter = null; + String externalFile = null; + + if (isExternalCheck.isSelected()) { + externalFile = externalFileField.getText(); + if (isAdapterNeededCheck.isSelected()) + adapter = "CSV"; + } + String comment = null; + if (!Objects.equals(simpleCommentPanel.getComment(), "")) + comment = simpleCommentPanel.getComment().trim(); + + return SQLUtils.generateCreateTable( + nameField.getText(), + tablePanel.getTableColumnDataVector(), + consPanel.getKeys(), + false, + this instanceof CreateGlobalTemporaryTable, + true, + true, + true, + "ON COMMIT " + temporaryTypeCombo.getSelectedItem(), + externalFile, + adapter, + (String) securityCombo.getSelectedItem(), + tablespace, + comment, + "^" + ); } @Override public void createObject() { - if (!checkFullType()) - return; - String queries = getSQLText(); - displayExecuteQueryDialog(queries, "^"); + if (checkFullType()) + displayExecuteQueryDialog(getSQLText(), "^"); + } + + @Override + public String getTypeObject() { + return NamedObject.META_TYPES[NamedObject.TABLE]; } @Override @@ -317,204 +246,203 @@ public String getEditTitle() { } @Override - public String getTypeObject() { - return NamedObject.META_TYPES[NamedObject.TABLE]; + protected void initEdited() { } @Override - public void setDatabaseObject(Object databaseObject) { + protected void reset() { } @Override - public void setParameters(Object[] params) { + public void setDatabaseObject(Object databaseObject) { } @Override - protected String generateQuery() { + public void setParameters(Object[] params) { + } - String tablespace = null; - if (tablespacesCombo.getSelectedItem() != null) - tablespace = ((NamedObject) tablespacesCombo.getSelectedItem()).getName(); + // --- - String externalFile = null; - String adapter = null; - if (isExternalTable.isSelected()) { - externalFile = externalTableFilePathField.getText(); + private void arrange() { + GridBagHelper gbh; - if (isAdapterNeeded.isSelected()) - adapter = "CSV"; - } + // --- columns panel --- - String comment = null; - if (!Objects.equals(simpleCommentPanel.getComment(), "")) - comment = simpleCommentPanel.getComment().trim(); + JPanel columnsPanel = new JPanel(new GridBagLayout()); - return SQLUtils.generateCreateTable( - nameField.getText(), tablePanel.getTableColumnDataVector(), consPanel.getKeys(), - false, this instanceof CreateGlobalTemporaryTable, true, true, true, - "ON COMMIT " + typeTemporaryBox.getSelectedItem(), - externalFile, adapter, (String) securityCombo.getSelectedItem(), tablespace, comment, "^"); - } + gbh = new GridBagHelper().setDefaultsStatic(); + columnsPanel.add(columnsToolBar, gbh.setLabelDefault().fillVertical().spanY().get()); + columnsPanel.add(tablePanel, gbh.nextCol().fillBoth().spanX().spanY().get()); - private void externalTablePropsChanged() { + // --- constraints panel --- - if (isExternalTable.isSelected()) { + JPanel constraintsPanel = new JPanel(new GridBagLayout()); - externalTablePropsPanel.setVisible(true); - isAdapterNeeded.setVisible(true); - setSQLText(); + gbh = new GridBagHelper().setDefaultsStatic(); + constraintsPanel.add(constraintsToolBar, gbh.setLabelDefault().fillVertical().spanY().get()); + constraintsPanel.add(consPanel, gbh.nextCol().fillBoth().spanX().spanY().get()); - } else { + // --- erd panel --- - externalTablePropsPanel.setVisible(false); - isAdapterNeeded.setVisible(false); - setSQLText(); - } + JPanel erdPanel = new JPanel(new GridBagLayout()); - } + gbh = new GridBagHelper().rightGap(5).fillHorizontally(); + erdPanel.add(showTableCommentCheck, gbh.get()); + erdPanel.add(showFieldCommentCheck, gbh.nextCol().rightGap(0).get()); + erdPanel.add(new JPanel(), gbh.nextCol().setMaxWeightX().get()); - public void sqlSecurityChanged(ActionEvent e) { - setSQLText(); - } + // --- external panel --- + externalPanel = new JPanel(new GridBagLayout()); - public void browseExternalTableFile() { + gbh = new GridBagHelper().rightGap(5).leftGap(2).fillHorizontally(); + externalPanel.add(new JLabel(bundledString("ExternalTableDataFileLabel")), gbh.setMinWeightX().get()); + externalPanel.add(externalFileField, gbh.nextCol().leftGap(0).setMaxWeightX().get()); + externalPanel.add(browseExternalFileButton, gbh.nextCol().setMinWeightX().rightGap(0).get()); - FileChooserDialog fileChooser = new FileChooserDialog(); - fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - fileChooser.setFileFilter( - new FileNameExtensionFilter("CSV Files", "csv")); - fileChooser.setMultiSelectionEnabled(false); + // --- top panel --- - fileChooser.setDialogTitle(bundledString("OpenFileDialogText")); - fileChooser.setDialogType(JFileChooser.OPEN_DIALOG); + if (!(this instanceof CreateGlobalTemporaryTable)) { + topPanel.add(new JLabel(bundledString("Tablespace")), topGbh.nextCol().topGap(3).setMinWeightX().get()); + topPanel.add(tablespacesCombo, topGbh.nextCol().topGap(0).setMaxWeightX().get()); - int result = fileChooser.showDialog( - GUIUtilities.getInFocusDialogOrWindow(), bundledString("OpenFileDialogButton")); - if (result == JFileChooser.CANCEL_OPTION) { + if (connection != null && getDatabaseVersion() >= 3) { + topPanel.add(isExternalCheck, topGbh.nextRowFirstCol().leftGap(2).setMinWeightX().setWidth(1).get()); + topPanel.add(isAdapterNeededCheck, topGbh.nextCol().get()); + topPanel.add(externalPanel, topGbh.nextRowFirstCol().fillHorizontally().spanX().get()); + } + } - return; + if (this instanceof CreateGlobalTemporaryTable) { + topPanel.add(new JLabel(bundledString("TypeTemporaryTable")), topGbh.nextCol().topGap(3).setMinWeightX().get()); + topPanel.add(temporaryTypeCombo, topGbh.nextCol().topGap(0).setMaxWeightX().get()); } - File file = fileChooser.getSelectedFile(); + if (this instanceof ErdNewTableDialog.CreateTableERDPanel) + topPanel.add(erdPanel, topGbh.nextRowFirstCol().fillHorizontally().spanX().get()); - if (!file.exists()) { + // --- tabbed pane filling --- - GUIUtilities.displayWarningMessage( - bundledString("FileDoesNotExistMessage")); - return; - } + tabbedPane.add(bundledString("Columns"), columnsPanel); + tabbedPane.add(bundledString("Constraints"), constraintsPanel); + addCommentTab(null); + tabbedPane.addTab("SQL", sqlText); + tabbedPane.addChangeListener(this); - externalTableFilePathField.setText(file.getAbsolutePath()); - externalTablePropsChanged(); + // --- base --- + setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); } - String[] getDomains() { - java.util.List domains = ConnectionsTreePanel.getPanelFromBrowser().getDefaultDatabaseHostFromConnection(getSelectedConnection()).getDatabaseObjectNamesForMetaTag(NamedObject.META_TYPES[NamedObject.DOMAIN]); - return domains.toArray(new String[domains.size()]); - } + private void addListeners() { - String[] getGenerators() { - java.util.List generators = ConnectionsTreePanel.getPanelFromBrowser().getDefaultDatabaseHostFromConnection(getSelectedConnection()).getDatabaseObjectNamesForMetaTag(NamedObject.META_TYPES[NamedObject.SEQUENCE]); - return generators.toArray(new String[generators.size()]); + KeyAdapter keyAdapter = new KeyAdapter() { + @Override + public void keyReleased(KeyEvent e) { + setSQLText(); + } + }; + + nameField.addKeyListener(keyAdapter); + simpleCommentPanel.getCommentField().getTextAreaComponent().addKeyListener(keyAdapter); } - /** - * Returns the selected connection from the panel's - * connections combo selection box. - * - * @return the selected connection properties object - */ - public DatabaseConnection getSelectedConnection() { - return (DatabaseConnection) connectionsCombo.getSelectedItem(); + protected void addButtonsPanel(JPanel buttonsPanel) { + add(buttonsPanel, BorderLayout.SOUTH); } - /** - * Returns the table name field. - */ - public Component getDefaultFocusComponent() { - return nameField; + private void externalTablePropsChanged() { + boolean isExternal = isExternalCheck.isSelected(); + externalPanel.setVisible(isExternal); + isAdapterNeededCheck.setVisible(isExternal); + + setSQLText(); } - /** - * Invoked when an item has been selected or deselected by the user. - * The code written for this method performs the operations - * that need to occur when an item is selected (or deselected). - */ - public void itemStateChanged(ItemEvent event) { - // interested in selections only - if (event.getStateChange() == ItemEvent.DESELECTED) { + public void browseExternalTableFile() { + + FileChooserDialog fileChooser = new FileChooserDialog(); + fileChooser.setFileFilter(new FileNameExtensionFilter("CSV Files", "csv")); + fileChooser.setDialogTitle(bundledString("OpenFileDialogText")); + fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + fileChooser.setDialogType(JFileChooser.OPEN_DIALOG); + fileChooser.setMultiSelectionEnabled(false); + + int result = fileChooser.showDialog(GUIUtilities.getInFocusDialogOrWindow(), Bundles.get("common.select.button")); + if (result == JFileChooser.CANCEL_OPTION) + return; + + File file = fileChooser.getSelectedFile(); + if (!file.exists()) { + GUIUtilities.displayWarningMessage(bundledString("FileDoesNotExistMessage")); return; } - final Object source = event.getSource(); - if (event.getSource() == tablespacesCombo) { - setSQLText(); + externalFileField.setText(file.getAbsolutePath()); + externalTablePropsChanged(); + } - } else - GUIUtils.startWorker(() -> { - try { - setInProcess(true); - if (source == connectionsCombo) - connectionChanged(); + private String[] getDomains() { + List domains = getDatabaseObjectNames(getSelectedConnection(), NamedObject.DOMAIN); + return domains.toArray(new String[0]); + } - } finally { - setInProcess(false); - } - }); + private String[] getGenerators() { + List generators = getDatabaseObjectNames(getSelectedConnection(), NamedObject.SEQUENCE); + return generators.toArray(new String[0]); } private void columnChangeConnection(DatabaseConnection dc) { - Vector cd = getTableColumnDataVector(); - for (ColumnData c : cd) { - c.setConnection(dc); - } + for (Object object : getTableColumnDataVector()) + if (object instanceof ColumnData) + ((ColumnData) object).setConnection(dc); } private void connectionChanged() { - // retrieve connection selection - DatabaseConnection connection = - (DatabaseConnection) connectionsCombo.getSelectedItem(); - // reset meta data - tablePanel.setDatabaseConnection(connection); - columnChangeConnection(connection); + DatabaseConnection selectedConnection = getSelectedConnection(); + tablePanel.setDatabaseConnection(selectedConnection); + columnChangeConnection(selectedConnection); - // reset data types try { - populateDataTypes(getDatabaseConnection().getDataTypesArray(), getDatabaseConnection().getIntDataTypesArray()); + DatabaseConnection databaseConnection = getDatabaseConnection(); + populateDataTypes(databaseConnection.getDataTypesArray(), databaseConnection.getIntDataTypesArray()); + } catch (DataSourceException e) { GUIUtilities.displayExceptionErrorDialog( - bundledString("error.retrieving", bundledString("data-types"), bundledString("selected-connection"), e.getExtendedMessage()), - e, this.getClass()); + bundledString("error.retrieving", + bundledString("data-types"), + bundledString("selected-connection"), + e.getExtendedMessage()), + e, + this.getClass() + ); + populateDataTypes(new String[0], new int[0]); } - populateTablespaces(connection); - + populateTablespaces(selectedConnection); } private void populateTablespaces(DatabaseConnection connection) { - List tss = ConnectionsTreePanel.getPanelFromBrowser().getDefaultDatabaseHostFromConnection(connection) - .getDatabaseObjectsForMetaTag(NamedObject.META_TYPES[NamedObject.TABLESPACE]); - if (tss == null) + + List tablespacesList = getDatabaseObjects(connection, NamedObject.TABLESPACE); + if (tablespacesList == null) { tablespacesCombo.setEnabled(false); - else { - Vector vector = new Vector<>(); - vector.add(null); - vector.addAll(tss); - tablespaceComboModel.setElements(vector); + return; } + + Vector vector = new Vector<>(); + vector.add(null); + vector.addAll(tablespacesList); + tablespaceComboModel.setElements(vector); } private void populateDataTypes(final String[] dataTypes, final int[] intDataTypes) { - GUIUtils.invokeAndWait(new Runnable() { - public void run() { - tablePanel.setDataTypes(dataTypes, intDataTypes); - tablePanel.setDomains(getDomains()); - tablePanel.setGenerators(getGenerators()); - } + GUIUtils.invokeAndWait(() -> { + tablePanel.setDataTypes(dataTypes, intDataTypes); + tablePanel.setDomains(getDomains()); + tablePanel.setGenerators(getGenerators()); }); } @@ -527,37 +455,17 @@ public void setSQLTextCaretPosition(int position) { sqlText.setCaretPosition(position); } - protected void addButtonsPanel(JPanel buttonsPanel) { - add(buttonsPanel, BorderLayout.SOUTH); - } - public void fireEditingStopped() { tablePanel.fireEditingStopped(); consPanel.fireEditingStopped(); } - public void setColumnDataArray(ColumnData[] cda) { - tablePanel.setColumnDataArray(cda); - } - - public void setColumnConstraintVector(Vector ccv, boolean fillCombos) { - consPanel.setData(ccv, fillCombos); + public void setColumnDataArray(ColumnData[] columnData) { + tablePanel.setColumnDataArray(columnData); } - public void setColumnConstraintsArray(ColumnConstraint[] cca, boolean fillCombos) { - Vector ccv = new Vector(cca.length); - Collections.addAll(ccv, cca); - consPanel.setData(ccv, fillCombos); - } - - /** - * Indicates that a [long-running] process has begun or ended - * as specified. This may trigger the glass pane on or off - * or set the cursor appropriately. - * - * @param inProcess - true | false - */ - public void setInProcess(boolean inProcess) { + public void setColumnConstraintVector(Vector constraintsVector, boolean fillCombos) { + consPanel.setData(constraintsVector, fillCombos); } public void resetSQLText() { @@ -565,11 +473,6 @@ public void resetSQLText() { consPanel.resetSQLText(); } - @Override - public void setSQLText() { - setSQLText(generateQuery()); - } - private void setSQLText(final String text) { GUIUtils.invokeLater(() -> sqlText.setSQLText(text)); } @@ -578,203 +481,198 @@ public String getSQLText() { return sqlText.getSQLText(); } - @Override - public String getTableName() { - return nameField.getText(); + private boolean checkFullType() { + + for (ColumnData columnData : getTableColumnData()) { + if (columnData.getTypeName() == null) { + GUIUtilities.displayErrorMessage(bundledString("error.select-type")); + tabbedPane.setSelectedIndex(0); + return false; + } + } + + return true; } - // ----------------------------------------------- + public ColumnData[] getTableColumnDataAndConstraints() { + ColumnData[] tableColumnData = tablePanel.getTableColumnData(); + ColumnConstraint[] constraintsArray = consPanel.getColumnConstraintArray(); - // constraints panel only - public void updateCellEditor(int col, int row, String value) { - } + for (ColumnData columnData : tableColumnData) { + columnData.setForeignKey(false); + columnData.resetConstraints(); - public void columnValuesChanging(int col, int row, String value) { - } + String tableName = columnData.getTableName(); + String columnName = columnData.getColumnName(); - public Vector getTableColumnDataVector() { - return tablePanel.getTableColumnDataVector(); - } + for (ColumnConstraint constraint : constraintsArray) { - public void stateChanged(ChangeEvent e) { - if (tabbedPane.getSelectedIndex() == 1) { - checkFullType(); - } - if (e.getSource() == sqlText) - setSQLText(); - } + String constraintColumn = constraint.getColumn(); + if (constraintColumn == null || constraintColumn.equalsIgnoreCase(columnName)) + continue; - protected boolean checkFullType() { - for (int i = 0; i < getTableColumnData().length; i++) { - if (getTableColumnData()[i].getTypeName() == null) { - GUIUtilities.displayErrorMessage(bundledString("error.select-type")); - tabbedPane.setSelectedIndex(0); - return false; + columnData.setPrimaryKey(constraint.isPrimaryKey()); + columnData.setForeignKey(constraint.isForeignKey()); + columnData.setUniqueKey(constraint.isUniqueKey()); + + constraint.setTable(tableName); + constraint.setNewConstraint(true); + columnData.addConstraint(constraint); } } - return true; + + return tableColumnData; } - /* - private void tableTabs_changed() { - - if (tableTabs.getSelectedIndex() == 1) { - tools.enableButtons(false); - - // if (table.isEditing()) - // table.removeEditor(); - - } - else { - tools.enableButtons(true); - } - + private static DefaultDatabaseHost getDefaultDatabaseHost(DatabaseConnection connection) { + return ConnectionsTreePanel.getPanelFromBrowser().getDefaultDatabaseHostFromConnection(connection); } - */ - public ColumnData[] getTableColumnDataAndConstraints() { - String tableName; - ColumnData[] cda = tablePanel.getTableColumnData(); - ColumnConstraint[] cca = consPanel.getColumnConstraintArray(); + @SuppressWarnings("SameParameterValue") + private static List getDatabaseObjects(DatabaseConnection connection, int metaTag) { + return getDefaultDatabaseHost(connection).getDatabaseObjectsForMetaTag(NamedObject.META_TYPES[metaTag]); + } - for (ColumnData columnData : cda) { + private static List getDatabaseObjectNames(DatabaseConnection connection, int metaTag) { + return getDefaultDatabaseHost(connection).getDatabaseObjectNamesForMetaTag(NamedObject.META_TYPES[metaTag]); + } - // reset the keys - //columnData.setPrimaryKey(false); - columnData.setForeignKey(false); - columnData.resetConstraints(); + // --- ItemListener impl --- - tableName = columnData.getTableName(); + /** + * Invoked when an item has been selected or deselected by the user. + * The code written for this method performs the operations + * that need to occur when an item is selected (or deselected). + */ + @Override + public void itemStateChanged(ItemEvent event) { - String columnName = columnData.getColumnName(); + if (event.getStateChange() == ItemEvent.DESELECTED) + return; - for (ColumnConstraint columnConstraint : cca) { + final Object source = event.getSource(); + if (event.getSource() == tablespacesCombo) { + setSQLText(); + return; + } - String constraintColumn = columnConstraint.getColumn(); + GUIUtils.startWorker(() -> { + if (source == connectionsCombo) + connectionChanged(); + }); + } - if (constraintColumn != null - && constraintColumn.equalsIgnoreCase(columnName)) { + // --- TableModifier impl --- - if (columnConstraint.isPrimaryKey()) { - columnData.setPrimaryKey(true); - } else if (columnConstraint.isForeignKey()) { - columnData.setForeignKey(true); - } else if (columnConstraint.isUniqueKey()) { - columnData.setUniqueKey(true); - } + @Override + public void setSQLText() { + setSQLText(generateQuery()); + } - columnConstraint.setTable(tableName); - columnConstraint.setNewConstraint(true); - columnData.addConstraint(columnConstraint); - } + @Override + public String getTableName() { + return nameField.getText(); + } - } + // --- ChangeListener impl --- - } + @Override + public void stateChanged(ChangeEvent e) { - return cda; + if (tabbedPane.getSelectedIndex() == 1) + checkFullType(); + if (e.getSource() == sqlText) + setSQLText(); } - public void columnValuesChanging() { + // --- TableConstraintFunction impl --- + + @Override + public DatabaseConnection getSelectedConnection() { + return (DatabaseConnection) connectionsCombo.getSelectedItem(); } @Override public List getTables() { - return ConnectionsTreePanel.getPanelFromBrowser().getDefaultDatabaseHostFromConnection(connection).getTableNames(); + return getDefaultDatabaseHost(connection).getTableNames(); } @Override public List getColumns(String table) { - return ConnectionsTreePanel.getPanelFromBrowser().getDefaultDatabaseHostFromConnection(connection).getColumnNames(table); + return getDefaultDatabaseHost(connection).getColumnNames(table); } + @Override public ColumnData[] getTableColumnData() { return tablePanel.getTableColumnData(); } - // ----------------------------------------------- - // -------- TableFunction implementations -------- - // ----------------------------------------------- + @Override + public Vector getTableColumnDataVector() { + return tablePanel.getTableColumnDataVector(); + } + + // --- DefinitionPanel impl --- @Override public void moveRowUp() { - int index = tabbedPane.getSelectedIndex(); - if (index == 0) { + if (tabbedPane.getSelectedIndex() == 0) tablePanel.moveColumnUp(); - } } @Override public void moveRowDown() { - int index = tabbedPane.getSelectedIndex(); - if (index == 0) { + if (tabbedPane.getSelectedIndex() == 0) tablePanel.moveColumnDown(); - } } @Override public void deleteRow() { - if (tabbedPane.getSelectedIndex() == 0) { + int selectedIndex = tabbedPane.getSelectedIndex(); + + if (selectedIndex == 0) tablePanel.deleteRow(); - } else if (tabbedPane.getSelectedIndex() == 1) { + else if (selectedIndex == 1) consPanel.deleteSelectedRow(); - } } @Override public void addRow() { - if (tabbedPane.getSelectedIndex() == 0) { + int selectedIndex = tabbedPane.getSelectedIndex(); + + if (selectedIndex == 0) tablePanel.insertAfter(); - } else if (tabbedPane.getSelectedIndex() == 1) { + else if (selectedIndex == 1) consPanel.insertRowAfter(); - } - } - - // ----------------------------------------------- - - public String getDisplayName() { - return ""; } - // ------------------------------------------------ - // ----- TextEditorContainer implementations ------ - // ------------------------------------------------ + // --- TextEditorContainer impl --- /** * Returns the SQL text pane as the TextEditor component * that this container holds. */ + @Override public TextEditor getTextEditor() { return sqlText; } - protected String bundleString(String key, Object... args) { - return Bundles.get(getClass(), key, args); - } + // --- FocusComponentPanel impl --- - private String bundledString(String key) { - return Bundles.get("CreateTableFunctionPanel." + key); + /** + * Returns the table name field. + */ + @Override + public Component getDefaultFocusComponent() { + return nameField; } - private String bundledString(String key, Object... args) { - return Bundles.get("CreateTableFunctionPanel." + key, args); + // --- + + private static String bundledString(String key, Object... args) { + return Bundles.get(CreateTablePanel.class, key, args); } } - - - - - - - - - - - - - - - diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index 6a5f98441..1c2e34d4e 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1126,25 +1126,21 @@ CreateProcedureFunctionPanel.OutputParameters=Output Parameters CreateProcedureFunctionPanel.PROCEDURE=Procedure CreateProcedureFunctionPanel.Variables=Variables CreateProcedureFunctionPanel.confirmTabChange=When you exit this tab, all changes you have made will be lost.\nAre you sure you want to switch tab? -CreateTableFunctionPanel.BrowseButtonText=Browse -CreateTableFunctionPanel.Columns=Columns -CreateTableFunctionPanel.Connection=Connection: -CreateTableFunctionPanel.Constraints=Constraints -CreateTableFunctionPanel.ExternalTableDataFileLabel=Data File: -CreateTableFunctionPanel.FileDoesNotExistMessage=The selected file does not exist -CreateTableFunctionPanel.IsAdapterNeededText=ADAPTER 'CSV' -CreateTableFunctionPanel.IsExternalTableText=EXTERNAL -CreateTableFunctionPanel.OpenFileDialogButton=Select -CreateTableFunctionPanel.OpenFileDialogText=Select Data File -CreateTableFunctionPanel.TableCommentLabel=Comment -CreateTableFunctionPanel.TableName=Table Name: -CreateTableFunctionPanel.Tablespace=Tablespace -CreateTableFunctionPanel.TypeTemporaryTable=Type Temporary Table: -CreateTableFunctionPanel.UseSQLSecurity=Use SQL Security? -CreateTableFunctionPanel.data-types=data types -CreateTableFunctionPanel.error.retrieving=Error retrieving the {0} list for the {1}.\n\nThe system returned:\n{2} -CreateTableFunctionPanel.error.select-type=Select type for all columns -CreateTableFunctionPanel.selected-connection=selected connection +CreateTablePanel.Columns=Columns +CreateTablePanel.Connection=Connection: +CreateTablePanel.Constraints=Constraints +CreateTablePanel.ExternalTableDataFileLabel=Data File: +CreateTablePanel.FileDoesNotExistMessage=The selected file does not exist +CreateTablePanel.IsAdapterNeededText=ADAPTER 'CSV' +CreateTablePanel.IsExternalTableText=EXTERNAL +CreateTablePanel.OpenFileDialogText=Select Data File +CreateTablePanel.TableCommentLabel=Comment +CreateTablePanel.TableName=Table Name: +CreateTablePanel.Tablespace=Tablespace +CreateTablePanel.TypeTemporaryTable=Type Temporary Table +CreateTablePanel.UseSQLSecurity=Use SQL Security? +CreateTablePanel.data-types=data types +CreateTablePanel.error.select-type=Select type for all columns CreateTablePanel.Create=Create CreateTablePanel.column-names=column names CreateTablePanel.error.retrieving=Error retrieving the {0} list for the {1}.\n\nThe system returned:\n{2} diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 847ca104d..9c1e6681d 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1126,25 +1126,21 @@ CreateProcedureFunctionPanel.OutputParameters=Выходные параметр CreateProcedureFunctionPanel.PROCEDURE=процедуры CreateProcedureFunctionPanel.Variables=Переменные CreateProcedureFunctionPanel.confirmTabChange=При выходе с этой вкладки все внесенные изменения будут потеряны.\nВы действительно хотите перейти на другую вкладку? -CreateTableFunctionPanel.BrowseButtonText=Открыть Файл -CreateTableFunctionPanel.Columns=Столбцы -CreateTableFunctionPanel.Connection=Подключение: -CreateTableFunctionPanel.Constraints=Ограничения -CreateTableFunctionPanel.ExternalTableDataFileLabel=Файл данных: -CreateTableFunctionPanel.FileDoesNotExistMessage=Выбранный файл не существует -CreateTableFunctionPanel.IsAdapterNeededText=ADAPTER 'CSV' -CreateTableFunctionPanel.IsExternalTableText=Внешняя -CreateTableFunctionPanel.OpenFileDialogButton=Выбрать -CreateTableFunctionPanel.OpenFileDialogText=Выберите Файл Данных -CreateTableFunctionPanel.TableCommentLabel=Комментарий -CreateTableFunctionPanel.TableName=Имя таблицы: -CreateTableFunctionPanel.Tablespace=Табличное пространство -CreateTableFunctionPanel.TypeTemporaryTable=Тип временной таблицы: -CreateTableFunctionPanel.UseSQLSecurity=Использовать SQL Security? -CreateTableFunctionPanel.data-types=типов данных -CreateTableFunctionPanel.error.retrieving=Ошибка построения списка {0} для {1}.\n\nСистема вернула:\n{2} -CreateTableFunctionPanel.error.select-type=Выберите тип данных для всех столбцов -CreateTableFunctionPanel.selected-connection=выбранного подключения +CreateTablePanel.Columns=Столбцы +CreateTablePanel.Connection=Подключение: +CreateTablePanel.Constraints=Ограничения +CreateTablePanel.ExternalTableDataFileLabel=Файл данных: +CreateTablePanel.FileDoesNotExistMessage=Выбранный файл не существует +CreateTablePanel.IsAdapterNeededText=ADAPTER 'CSV' +CreateTablePanel.IsExternalTableText=Внешняя +CreateTablePanel.OpenFileDialogText=Выберите Файл Данных +CreateTablePanel.TableCommentLabel=Комментарий +CreateTablePanel.TableName=Имя таблицы: +CreateTablePanel.Tablespace=Табличное пространство +CreateTablePanel.TypeTemporaryTable=Тип временной таблицы +CreateTablePanel.UseSQLSecurity=Использовать SQL Security? +CreateTablePanel.data-types=типов данных +CreateTablePanel.error.select-type=Выберите тип данных для всех столбцов CreateTablePanel.Create=Создать CreateTablePanel.column-names=столбцов CreateTablePanel.error.retrieving=Ошибка построения списка {0} для {1}.\n\nСистема вернула:\n{2} From 204a1d9d497f79e47bafab584fe846d8a638d014 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 29 Jul 2024 14:44:08 +0300 Subject: [PATCH 013/141] Add notification when records count limit is enabled (RS-187241) --- .../executequery/gui/editor/QueryEditor.java | 11 +++++ .../gui/editor/QueryEditorResultsPanel.java | 42 ++++++++++-------- .../gui/editor/QueryEditorStatusBar.java | 9 ++++ .../icons/base/icon_warning_animated.gif | Bin 0 -> 9381 bytes .../localization/resources.properties | 5 ++- .../localization/resources_ru.properties | 5 ++- .../swing/AbstractStatusBarPanel.java | 22 +++++++++ 7 files changed, 72 insertions(+), 22 deletions(-) create mode 100644 src/org/executequery/icons/base/icon_warning_animated.gif diff --git a/src/org/executequery/gui/editor/QueryEditor.java b/src/org/executequery/gui/editor/QueryEditor.java index 5ff888490..311c3ef76 100644 --- a/src/org/executequery/gui/editor/QueryEditor.java +++ b/src/org/executequery/gui/editor/QueryEditor.java @@ -571,6 +571,17 @@ public void setLeftStatusText(String text) { statusBar.setStatus(text); } + /** + * Sets the text of the left status label. + * + * @param text the text to be set + * @param toolTip the label toolTip + * @param icon the icon to be set + */ + public void setLeftStatus(String text, String toolTip, Icon icon) { + statusBar.setStatus(text, toolTip, icon); + } + /** * Propagates the call to interrupt an executing process. */ diff --git a/src/org/executequery/gui/editor/QueryEditorResultsPanel.java b/src/org/executequery/gui/editor/QueryEditorResultsPanel.java index 76c3183b9..16293fe90 100644 --- a/src/org/executequery/gui/editor/QueryEditorResultsPanel.java +++ b/src/org/executequery/gui/editor/QueryEditorResultsPanel.java @@ -37,6 +37,7 @@ import org.underworldlabs.swing.plaf.TabRolloverEvent; import org.underworldlabs.swing.plaf.TabSelectionListener; import org.underworldlabs.util.MiscUtils; +import org.underworldlabs.util.SystemProperties; import javax.swing.*; import javax.swing.event.ChangeEvent; @@ -89,10 +90,13 @@ public class QueryEditorResultsPanel extends SimpleCloseTabbedPane private static final String SUCCESS = bundleString("SUCCESS"); private static final String NO_ROWS = bundleString("NO_ROWS"); private static final String SUCCESS_NO_ROWS = SUCCESS + "\n" + NO_ROWS; - private static final String ZERO_ROWS = bundleString("ZERO_ROWS"); - private static final String SPACE = " "; - private static final String ROW_RETURNED = bundleString("ROW_RETURNED"); - private static final String ROWS_RETURNED = bundleString("ROWS_RETURNED"); + + private static final Icon WARNING_ICON = IconManager.getIcon( + "icon_warning_animated", + "gif", + 20, + IconManager.IconFolder.BASE + ); private ResultSetTableColumnResizingManager resultSetTableColumnResizingManager; @@ -505,23 +509,27 @@ private Icon resulSetTabIcon() { */ private void resetEditorRowCount(int rowCount) { - if (queryEditor != null) { - - if (rowCount > 1) { - - queryEditor.setLeftStatusText(SPACE + rowCount + " " + ROWS_RETURNED); + if (queryEditor == null) + return; - } else if (rowCount == 1) { + String text = bundleString("ZERO_ROWS"); + if (rowCount > 1) { + text = bundleString("ROWS_RETURNED", rowCount); - queryEditor.setLeftStatusText(SPACE + rowCount + " " + ROW_RETURNED); + } else if (rowCount == 1) + text = bundleString("ROW_RETURNED", rowCount); - } else { + boolean isRowsCountLimited = SystemProperties.getBooleanProperty("user", "editor.limit.records.count"); + if (isRowsCountLimited) { - queryEditor.setLeftStatusText(ZERO_ROWS); + int limit = SystemProperties.getIntProperty("user", "editor.max.records.count"); + if (limit <= rowCount) { + queryEditor.setLeftStatus(text, bundleString("LIMIT_ON", limit), WARNING_ICON); + return; } - } + queryEditor.setLeftStatusText(text); } private int getResultSetRowCount(ResultSetTableModel model, boolean showRowNumber) { @@ -896,10 +904,8 @@ public boolean isTransposeAvailable() { return true; } - private static String bundleString(String key) { - return Bundles.get(QueryEditorResultsPanel.class, key); + private static String bundleString(String key, Object... args) { + return Bundles.get(QueryEditorResultsPanel.class, key, args); } } - - diff --git a/src/org/executequery/gui/editor/QueryEditorStatusBar.java b/src/org/executequery/gui/editor/QueryEditorStatusBar.java index d0c8fa879..d4bc43639 100644 --- a/src/org/executequery/gui/editor/QueryEditorStatusBar.java +++ b/src/org/executequery/gui/editor/QueryEditorStatusBar.java @@ -125,7 +125,16 @@ public void setInsertionMode(String text) { * Sets the editor status to the text specified. */ public void setStatus(String text) { + setStatus(text, null, null); + } + + /** + * Sets the editor status to the text specified. + */ + public void setStatus(String text, String toolTip, Icon icon) { + setLabelIcon(0, icon); setLabelText(0, text); + setLabelToolTip(0, toolTip); } /** diff --git a/src/org/executequery/icons/base/icon_warning_animated.gif b/src/org/executequery/icons/base/icon_warning_animated.gif new file mode 100644 index 0000000000000000000000000000000000000000..c783d32ead8f6b43f73ecae0b86d8ebfed7bf653 GIT binary patch literal 9381 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 literal 0 HcmV?d00001 diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index 1c2e34d4e..720011071 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1965,8 +1965,9 @@ QueryEditor.title=Query Editor QueryEditor.FileSavedTo= File saved to {0} QueryEditorResultsPanel.DatabaseOutput=Database output QueryEditorResultsPanel.NO_ROWS=No rows selected -QueryEditorResultsPanel.ROWS_RETURNED=rows returned -QueryEditorResultsPanel.ROW_RETURNED=row returned +QueryEditorResultsPanel.ROWS_RETURNED= {0} rows returned +QueryEditorResultsPanel.ROW_RETURNED= {0} row returned +QueryEditorResultsPanel.LIMIT_ON=Rows count limit enabled for {0} records QueryEditorResultsPanel.ResultSetTitle=Result Set QueryEditorResultsPanel.ResultSetTitleFiltered=- Filtered QueryEditorResultsPanel.SUCCESS=Statement executed successfully diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 9c1e6681d..ae5c5f3e2 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1965,8 +1965,9 @@ QueryEditor.title=Редактор запросов QueryEditor.FileSavedTo= Файл сохранен в {0} QueryEditorResultsPanel.DatabaseOutput=Вывод БД QueryEditorResultsPanel.NO_ROWS=Не выбрано ни одной строки -QueryEditorResultsPanel.ROWS_RETURNED=строк возвращено -QueryEditorResultsPanel.ROW_RETURNED=строка возвращена +QueryEditorResultsPanel.ROWS_RETURNED= {0} строк возвращено +QueryEditorResultsPanel.ROW_RETURNED= {0} строка возвращена +QueryEditorResultsPanel.LIMIT_ON=Включено ограничение количества строк на {0} записей QueryEditorResultsPanel.ResultSetTitle=Набор Результатов QueryEditorResultsPanel.ResultSetTitleFiltered=- Отфильтровано QueryEditorResultsPanel.SUCCESS=Запрос выполнен успешно diff --git a/src/org/underworldlabs/swing/AbstractStatusBarPanel.java b/src/org/underworldlabs/swing/AbstractStatusBarPanel.java index 6ccc460c7..417bf268e 100644 --- a/src/org/underworldlabs/swing/AbstractStatusBarPanel.java +++ b/src/org/underworldlabs/swing/AbstractStatusBarPanel.java @@ -117,6 +117,28 @@ protected void setLabelText(int index, final String text) { } + protected void setLabelToolTip(int index, final String toolTip) { + + Object object = components.get(index); + if (object instanceof JLabel) { + + final JLabel label = (JLabel) object; + label.setToolTipText(toolTip); + } + } + + protected void setLabelIcon(int index, final Icon icon) { + + Object object = components.get(index); + if (object instanceof JLabel) { + + final JLabel label = (JLabel) object; + label.setIcon(icon); + + scheduleLabelRepaint(label); + } + } + private void scheduleLabelRepaint(final JLabel label) { Runnable update = new Runnable() { From 07e43149157ce4aa8b56a380d5bcf2c573f21a1b Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 29 Jul 2024 16:40:13 +0300 Subject: [PATCH 014/141] Add locale for SaveOnExitDialog --- src/org/executequery/Application.java | 12 +- .../executequery/gui/SaveOnExitDialog.java | 165 ++++++------------ .../localization/resources.properties | 3 + .../localization/resources_ru.properties | 3 + 4 files changed, 65 insertions(+), 118 deletions(-) diff --git a/src/org/executequery/Application.java b/src/org/executequery/Application.java index 9652c426a..623363236 100644 --- a/src/org/executequery/Application.java +++ b/src/org/executequery/Application.java @@ -51,17 +51,9 @@ public static synchronized Application getInstance() { public void exitProgram() { if (promptToSave() && GUIUtilities.getOpenSaveFunctionCount() > 0) { - - SaveOnExitDialog exitDialog = new SaveOnExitDialog(); - - int result = exitDialog.getResult(); - if (result != SaveFunction.SAVE_COMPLETE || - result != SaveOnExitDialog.DISCARD_OPTION) { - - exitDialog = null; + int result = new SaveOnExitDialog().getResult(); + if (result != SaveFunction.SAVE_COMPLETE && result != SaveFunction.SAVE_CANCELLED) return; - } - } releaseConnections(); diff --git a/src/org/executequery/gui/SaveOnExitDialog.java b/src/org/executequery/gui/SaveOnExitDialog.java index 99a36ad59..22a40130e 100644 --- a/src/org/executequery/gui/SaveOnExitDialog.java +++ b/src/org/executequery/gui/SaveOnExitDialog.java @@ -23,11 +23,10 @@ import org.executequery.GUIUtilities; import org.executequery.localization.Bundles; import org.underworldlabs.swing.AbstractBaseDialog; +import org.underworldlabs.swing.layouts.GridBagHelper; import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.List; @@ -35,135 +34,92 @@ /** * @author Takis Diakoumis */ -public class SaveOnExitDialog extends AbstractBaseDialog - implements ActionListener { +public class SaveOnExitDialog extends AbstractBaseDialog { + public static final String TITLE = bundleString("title"); - public static final int DISCARD_OPTION = 0; - - /** - * The frames list - */ - private JList list; - - /** - * The button choice result - */ private int result; + private JList list; - public SaveOnExitDialog() { - - super(GUIUtilities.getParentFrame(), "Save Changes", true); - - result = SaveFunction.SAVE_CANCELLED; + private JButton saveButton; + private JButton discardButton; - try { + public SaveOnExitDialog() { + super(GUIUtilities.getParentFrame(), TITLE, true); - init(); + init(); + arrange(); + } - } catch (Exception e) { + private void init() { + List panels = GUIUtilities.getOpenSaveFunctionPanels(); - e.printStackTrace(); - } + saveButton = WidgetFactory.createButton("saveButton", Bundles.get("common.save.button"), e -> save()); + discardButton = WidgetFactory.createButton("discardButton", bundleString("discardButton"), e -> discardSaving()); - pack(); - setLocation(GUIUtilities.getLocationForDialog(getSize())); - setVisible(true); + list = new DefaultList(panels.toArray()); + list.setSelectionInterval(0, panels.size() - 1); } - private void init() throws Exception { + private void arrange() { + GridBagHelper gbh; - JButton saveButton = new JButton("Save Selected"); - JButton cancelButton = new JButton(Bundles.get("common.cancel.button")); - JButton discardButton = new JButton("Discard All"); + // --- button panel --- - Insets buttonInsets = new Insets(0, 0, 0, 0); - saveButton.setMargin(buttonInsets); - cancelButton.setMargin(buttonInsets); - discardButton.setMargin(buttonInsets); + JPanel buttonPanel = new JPanel(new GridBagLayout()); - Dimension buttonSize = new Dimension(130, 25); - saveButton.setPreferredSize(buttonSize); - cancelButton.setPreferredSize(buttonSize); - discardButton.setPreferredSize(buttonSize); + gbh = new GridBagHelper().fillHorizontally(); + buttonPanel.add(new JPanel(), gbh.setMaxWeightX().get()); + buttonPanel.add(saveButton, gbh.nextCol().setMinWeightX().fillNone().get()); + buttonPanel.add(discardButton, gbh.nextCol().leftGap(5).get()); - saveButton.addActionListener(this); - cancelButton.addActionListener(this); - discardButton.addActionListener(this); + // --- main panel --- - List panels = GUIUtilities.getOpenSaveFunctionPanels(); + JPanel mainPanel = new JPanel(new GridBagLayout()); - list = new DefaultList(panels.toArray()); - list.setSelectionInterval(0, panels.size() - 1); + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + mainPanel.add(new JLabel(bundleString("label")), gbh.spanX().get()); + mainPanel.add(new JScrollPane(list), gbh.nextRow().topGap(5).setMaxWeightY().fillBoth().get()); + mainPanel.add(buttonPanel, gbh.nextRow().setMinWeightY().get()); - JPanel base = new JPanel(new GridBagLayout()); - GridBagConstraints gbc = new GridBagConstraints(); - gbc.insets = new Insets(5, 5, 5, 5); - gbc.anchor = GridBagConstraints.NORTHWEST; - gbc.gridwidth = 3; - base.add(new JLabel("The following open frames have unsaved changes"), gbc); - gbc.gridy = 1; - gbc.fill = GridBagConstraints.BOTH; - gbc.weightx = 1.0; - gbc.weighty = 1.0; - gbc.insets.top = 0; - base.add(new JScrollPane(list), gbc); - gbc.fill = GridBagConstraints.HORIZONTAL; - gbc.weighty = 0; - gbc.gridwidth = 1; - gbc.gridy = 2; - base.add(saveButton, gbc); - gbc.insets.left = 0; - gbc.gridx = 1; - base.add(discardButton, gbc); - gbc.gridx = 2; - base.add(cancelButton, gbc); - - Container c = this.getContentPane(); - c.setLayout(new BorderLayout()); - c.add(base, BorderLayout.CENTER); + // --- base --- + + setLayout(new GridBagLayout()); + gbh = new GridBagHelper().setInsets(5, 5, 5, 5).fillBoth().spanX().spanY(); + add(mainPanel, gbh.get()); setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { + @Override public void windowClosing(WindowEvent e) { - result = SaveFunction.SAVE_CANCELLED; - dispose(); + discardSaving(); } }); + pack(); + setLocation(GUIUtilities.getLocationForDialog(getSize())); + setResizable(false); + setVisible(true); } - public int saveChanges() { - - int result = -1; - - Object[] selectedFrames = list.getSelectedValues(); - - for (int i = 0; i < selectedFrames.length; i++) { + private void save() { + result = SaveFunction.SAVE_CANCELLED; - SaveFunction saveFunction = (SaveFunction) selectedFrames[i]; - result = saveFunction.save(false); + for (Object selectedFrame : list.getSelectedValuesList()) { + if (selectedFrame instanceof SaveFunction) { - if (result != SaveFunction.SAVE_COMPLETE) { + SaveFunction saveFunction = (SaveFunction) selectedFrame; + result = saveFunction.save(false); - break; + if (result != SaveFunction.SAVE_COMPLETE) + break; } - } - return result; + dispose(); } - public void actionPerformed(ActionEvent e) { - String command = e.getActionCommand(); - - if (command.equals("Cancel")) { - result = SaveFunction.SAVE_CANCELLED; - } else if (command.equals("Discard All")) { - result = DISCARD_OPTION; - } else if (command.equals("Save Selected")) { - result = saveChanges(); - } - + private void discardSaving() { + result = SaveFunction.SAVE_CANCELLED; dispose(); } @@ -171,15 +127,8 @@ public int getResult() { return result; } -} - - - - - - - - - - + private static String bundleString(String key, Object... args) { + return Bundles.get(SaveOnExitDialog.class, key, args); + } +} diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index 720011071..5a247d5c8 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -2035,6 +2035,9 @@ ResultSetTablePopupMenu.TransposeRow=Transpose Row ResultSetTablePopupMenu.View=View RootDatabaseObjectNode.error.add=Node must be of type DatabaseHostNode ConnectionTree.error.exportAsDrag=Node selection pending before drag +SaveOnExitDialog.title=Saving Changes +SaveOnExitDialog.label=The following open frames have unsaved changes +SaveOnExitDialog.discardButton=Don't save ScrollingTabPane.menuItem.close=Close ScrollingTabPane.menuItem.closeAll=Close All ScrollingTabPane.menuItem.closeOther=Close Others diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index ae5c5f3e2..21f1f828f 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -2035,6 +2035,9 @@ ResultSetTablePopupMenu.TransposeRow=Транспонировать строку ResultSetTablePopupMenu.View=Просмотреть содержимое RootDatabaseObjectNode.error.add=Узел должен быть типа DatabaseHostNode ConnectionTree.error.exportAsDrag=Выбор узла до перетаскивания +SaveOnExitDialog.title=Сохранение изменений +SaveOnExitDialog.label=У Вас есть следующие несохраненные изменения +SaveOnExitDialog.discardButton=Не сохранять ScrollingTabPane.menuItem.close=Закрыть ScrollingTabPane.menuItem.closeAll=Закрыть все ScrollingTabPane.menuItem.closeOther=Закрыть другие From f94b4eb03b5cdaf5201aac7bdf9f6ddeb6c28916 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 29 Jul 2024 17:05:36 +0300 Subject: [PATCH 015/141] Fix path to application jar generating when updating (RS-186276) --- src/org/executequery/CheckForUpdateNotifier.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/executequery/CheckForUpdateNotifier.java b/src/org/executequery/CheckForUpdateNotifier.java index 5843b3951..d2794abbd 100644 --- a/src/org/executequery/CheckForUpdateNotifier.java +++ b/src/org/executequery/CheckForUpdateNotifier.java @@ -350,9 +350,9 @@ private void startUpdate() { argsList.add("-root=" + updateLoader.getRoot()); argsList.add("-launch=" + restartNow); - File file = new File("RedExpert.jar"); + File file = new File(CheckForUpdateNotifier.class.getProtectionDomain().getCodeSource().getLocation().toURI()); if (!file.exists()) - file = new File("../RedExpert.jar"); + throw new Exception("Couldn't locale application JAR file (RedExpert.jar)"); String javaPath = "java"; if (!System.getProperty("os.name").toLowerCase().contains("win")) From 1af678858f768ae4e834c60626f7f88723792fb3 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 29 Jul 2024 17:26:10 +0300 Subject: [PATCH 016/141] Add check for valid exported file path (RS-187240) --- .../gui/exportData/AbstractExportHelper.java | 6 +++--- .../gui/exportData/ExportDataPanel.java | 16 ++++++++++++++-- .../localization/resources.properties | 3 ++- .../localization/resources_ru.properties | 3 ++- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/org/executequery/gui/exportData/AbstractExportHelper.java b/src/org/executequery/gui/exportData/AbstractExportHelper.java index 1c42eda45..4640c596f 100644 --- a/src/org/executequery/gui/exportData/AbstractExportHelper.java +++ b/src/org/executequery/gui/exportData/AbstractExportHelper.java @@ -208,11 +208,11 @@ private String saveBlobToFile(byte[] lobData, String lobType, String fileName, b // --- protected final void displayErrorMessage(Throwable e) { - GUIUtilities.displayExceptionErrorDialog(bundleString("ErrorWritingToFile") + e.getMessage(), e, this.getClass()); + GUIUtilities.displayExceptionErrorDialog(bundleString("ErrorWritingToFile", e.getMessage()), e, this.getClass()); } - protected final String bundleString(String key) { - return Bundles.get(ExportDataPanel.class, key); + protected final String bundleString(String key, Object... args) { + return Bundles.get(ExportDataPanel.class, key, args); } } diff --git a/src/org/executequery/gui/exportData/ExportDataPanel.java b/src/org/executequery/gui/exportData/ExportDataPanel.java index 0bbac8de2..5780109b9 100644 --- a/src/org/executequery/gui/exportData/ExportDataPanel.java +++ b/src/org/executequery/gui/exportData/ExportDataPanel.java @@ -489,12 +489,24 @@ private boolean exportAllow() { return false; } + // export file writable + if (!Files.isWritable(new File(exportFilePath).toPath())) { + GUIUtilities.displayErrorMessage(bundleString("FileNotWritable", exportFilePath)); + return false; + } + // blob file defined if (isContainsBlob() && MiscUtils.isNull(exportBlobPath)) { GUIUtilities.displayErrorMessage(bundleString("YouMustSpecifyAFileToExportTo")); return false; } + // blob file writable + if (!Files.isWritable(new File(exportBlobPath).toPath())) { + GUIUtilities.displayErrorMessage(bundleString("FileNotWritable", exportBlobPath)); + return false; + } + // fields for export defined if (columnTable.getRowCount() > 0) { @@ -907,8 +919,8 @@ public void dispose() { super.dispose(); } - private static String bundleString(String key) { - return Bundles.get(ExportDataPanel.class, key); + private static String bundleString(String key, Object... args) { + return Bundles.get(ExportDataPanel.class, key, args); } } diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index 5a247d5c8..7da64259e 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1463,7 +1463,8 @@ ExportDataPanel.CanNotWrite=Not enough permissions to write to the directory: ExportDataPanel.ColumnNameHeader=Column Name ExportDataPanel.ColumnTypeHeader=Column Type ExportDataPanel.ColumnsTab=Columns -ExportDataPanel.ErrorWritingToFile=Error writing to file:\n\n +ExportDataPanel.ErrorWritingToFile=Error writing to file.\n{0} +ExportDataPanel.FileNotWritable=File not writable ({0}) ExportDataPanel.FileFormat=File Format: ExportDataPanel.FilePath=File Path: ExportDataPanel.FolderPath=BLOBs Folder: diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 21f1f828f..b34b444ce 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1463,7 +1463,8 @@ ExportDataPanel.CanNotWrite=Недостаточно прав для запис ExportDataPanel.ColumnNameHeader=Имя поля ExportDataPanel.ColumnTypeHeader=Тип поля ExportDataPanel.ColumnsTab=Поля -ExportDataPanel.ErrorWritingToFile=Ошибка записи в файл:\n\n +ExportDataPanel.ErrorWritingToFile=Ошибка записи в файл:\n{0} +ExportDataPanel.FileNotWritable=Файл недоступен для записи ({0}) ExportDataPanel.FileFormat=Формат файла: ExportDataPanel.FilePath=Путь к файлу: ExportDataPanel.FolderPath=Путь к BLOB файлам: From 1e674861bc278bd0ce8b5da406110d3ee5ed7966 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 29 Jul 2024 17:51:14 +0300 Subject: [PATCH 017/141] Fix generating DDL for procedures and functions (RS-187240) --- .../CreateProcedureFunctionPanel.java | 50 ++++++++++++------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java index 278398c4c..c24a944fc 100644 --- a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java +++ b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java @@ -46,6 +46,8 @@ import java.util.Objects; import java.util.TreeSet; import java.util.Vector; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * @author vasiliy @@ -110,34 +112,24 @@ public void keyPressed(KeyEvent e) { initExternal(); - engineField.addKeyListener(changeKeyListener); - externalField.addKeyListener(changeKeyListener); - authidCombo.addActionListener(changeActionListener); - securityCombo.addActionListener(changeActionListener); - useExternalCheck.addActionListener(changeActionListener); - // --- cursorsPanel = new CursorsPanel(); - cursorsPanel.addChangesListener(changeActionListener); inputParamsPanel = new ProcedureDefinitionPanel(ColumnData.INPUT_PARAMETER); inputParamsPanel.setDataTypes(connection.getDataTypesArray(), connection.getIntDataTypesArray()); inputParamsPanel.setDomains(getDomains()); inputParamsPanel.setDatabaseConnection(connection); - inputParamsPanel.addChangesListener(changeActionListener); outputParamsPanel = new ProcedureDefinitionPanel(ColumnData.OUTPUT_PARAMETER); outputParamsPanel.setDataTypes(connection.getDataTypesArray(), connection.getIntDataTypesArray()); outputParamsPanel.setDomains(getDomains()); outputParamsPanel.setDatabaseConnection(connection); - outputParamsPanel.addChangesListener(changeActionListener); variablesPanel = new ProcedureDefinitionPanel(ColumnData.VARIABLE); variablesPanel.setDataTypes(connection.getDataTypesArray(), connection.getIntDataTypesArray()); variablesPanel.setDomains(getDomains()); variablesPanel.setDatabaseConnection(connection); - variablesPanel.addChangesListener(changeActionListener); ddlTextPanel = new SimpleSqlTextPanel(false, true, "DDL"); ddlTextPanel.getTextPane().setDatabaseConnection(connection); @@ -149,9 +141,6 @@ public void keyPressed(KeyEvent e) { tabbedPane.add(bundleString("Cursors"), cursorsPanel); addCommentTab(null); - nameField.addKeyListener(changeKeyListener); - simpleCommentPanel.getCommentField().getTextAreaComponent().addKeyListener(changeKeyListener); - arrange(); checkExternal(); fillSqlBody(); @@ -160,6 +149,9 @@ public void keyPressed(KeyEvent e) { generateDdlScript(); } catch (Exception ignored) { } + + if (!editing) + addListeners(); } protected void initEditing() { @@ -191,6 +183,7 @@ protected void initEditing() { addDependenciesTab((DatabaseObject) namedObject); reset(); + addListeners(); generateDdlScript(); } @@ -235,6 +228,20 @@ private void arrange() { setPreferredSize(new Dimension(1200, 600)); } + private void addListeners() { + nameField.addKeyListener(changeKeyListener); + engineField.addKeyListener(changeKeyListener); + externalField.addKeyListener(changeKeyListener); + authidCombo.addActionListener(changeActionListener); + cursorsPanel.addChangesListener(changeActionListener); + securityCombo.addActionListener(changeActionListener); + variablesPanel.addChangesListener(changeActionListener); + useExternalCheck.addActionListener(changeActionListener); + inputParamsPanel.addChangesListener(changeActionListener); + outputParamsPanel.addChangesListener(changeActionListener); + simpleCommentPanel.getCommentField().getTextAreaComponent().addKeyListener(changeKeyListener); + } + @SuppressWarnings("DataFlowIssue") protected void generateDdlScript() { @@ -257,12 +264,21 @@ private String extractProcedureBody(String sqlText) { if (MiscUtils.isNull(sqlText)) return procedureBody; - sqlText = sqlText.trim(); - int beginIndex = sqlText.toUpperCase().indexOf("BEGIN"); - int endIndex = sqlText.toUpperCase().lastIndexOf("END") + 3; + int beginIndex = -1; + int endIndex = -1; + sqlText = sqlText.toUpperCase().trim(); - procedureBody = sqlText.substring(beginIndex, endIndex); + Pattern pattern = Pattern.compile("\\bBEGIN\\b"); + Matcher matcher = pattern.matcher(sqlText); + if (matcher.find()) + beginIndex = matcher.start(); + + pattern = Pattern.compile("\\bEND\\b"); + matcher = pattern.matcher(sqlText); + while (matcher.find()) + endIndex = matcher.end(); + procedureBody = sqlText.substring(beginIndex, endIndex); return procedureBody; } From 68811fbf0c95b0a92ebbfbeee42e1c5a50b1670c Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Tue, 30 Jul 2024 11:54:10 +0300 Subject: [PATCH 018/141] fix erd generate --- src/org/executequery/gui/erd/ErdGenerateProgressDialog.java | 4 ++-- src/org/executequery/gui/erd/ErdViewerPanel.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/org/executequery/gui/erd/ErdGenerateProgressDialog.java b/src/org/executequery/gui/erd/ErdGenerateProgressDialog.java index aa6d7b48c..87ccee938 100644 --- a/src/org/executequery/gui/erd/ErdGenerateProgressDialog.java +++ b/src/org/executequery/gui/erd/ErdGenerateProgressDialog.java @@ -38,7 +38,7 @@ import java.util.List; import java.util.*; -import static org.executequery.databaseobjects.NamedObject.PRIMARY_KEY; +import static org.executequery.databaseobjects.NamedObject.FOREIGN_KEY; /** * @author Takis Diakoumis @@ -277,7 +277,7 @@ public Map> buildTableRelationships(Vector Date: Tue, 30 Jul 2024 11:39:14 +0300 Subject: [PATCH 019/141] Fix check for valid exported file path (RS-187240) --- src/org/executequery/gui/exportData/ExportDataPanel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/executequery/gui/exportData/ExportDataPanel.java b/src/org/executequery/gui/exportData/ExportDataPanel.java index 5780109b9..ce447b1b0 100644 --- a/src/org/executequery/gui/exportData/ExportDataPanel.java +++ b/src/org/executequery/gui/exportData/ExportDataPanel.java @@ -490,7 +490,7 @@ private boolean exportAllow() { } // export file writable - if (!Files.isWritable(new File(exportFilePath).toPath())) { + if (!new File(exportFilePath).getAbsoluteFile().getParentFile().exists()) { GUIUtilities.displayErrorMessage(bundleString("FileNotWritable", exportFilePath)); return false; } @@ -502,7 +502,7 @@ private boolean exportAllow() { } // blob file writable - if (!Files.isWritable(new File(exportBlobPath).toPath())) { + if (!new File(exportBlobPath).getAbsoluteFile().getParentFile().exists()) { GUIUtilities.displayErrorMessage(bundleString("FileNotWritable", exportBlobPath)); return false; } From 81b3ae4402178d9c00ab46d4b39c0894d8c72277 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 30 Jul 2024 11:45:15 +0300 Subject: [PATCH 020/141] Improve saving panels state properties (RS-188450) --- .../gui/exportData/ExportDataPanel.java | 113 +++++++----------- .../gui/importData/ImportDataPanel.java | 25 ++-- .../util/PanelsStateProperties.java | 87 ++++++++++++++ 3 files changed, 136 insertions(+), 89 deletions(-) create mode 100644 src/org/underworldlabs/util/PanelsStateProperties.java diff --git a/src/org/executequery/gui/exportData/ExportDataPanel.java b/src/org/executequery/gui/exportData/ExportDataPanel.java index ce447b1b0..f21c6422f 100644 --- a/src/org/executequery/gui/exportData/ExportDataPanel.java +++ b/src/org/executequery/gui/exportData/ExportDataPanel.java @@ -20,7 +20,7 @@ package org.executequery.gui.exportData; -import org.executequery.ApplicationContext; +import org.executequery.Constants; import org.executequery.GUIUtilities; import org.executequery.components.FileChooserDialog; import org.executequery.databaseobjects.DatabaseColumn; @@ -32,6 +32,7 @@ import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.util.FileUtils; import org.underworldlabs.util.MiscUtils; +import org.underworldlabs.util.PanelsStateProperties; import org.underworldlabs.util.SystemProperties; import javax.swing.*; @@ -43,7 +44,6 @@ import java.awt.event.MouseEvent; import java.io.*; import java.nio.charset.StandardCharsets; -import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Paths; import java.sql.ResultSet; @@ -101,6 +101,7 @@ public class ExportDataPanel extends AbstractBaseDialog { private final Object exportData; private final String tableNameForExport; + private final ParametersSaver parametersSaver; private final List databaseColumns; private Map components; @@ -116,6 +117,7 @@ public ExportDataPanel(Object exportData, String tableNameForExport, List getDatabaseColumns() { return databaseColumns; } @@ -697,89 +691,66 @@ protected boolean isOpenQueryEditor() { // --- inner classes --- private static class ParametersSaver { + private final PanelsStateProperties stateProperties; - private final String FILE_NAME = - ApplicationContext.getInstance().getUserSettingsHome() + FileSystems.getDefault().getSeparator() + "resultsExporter.save"; - private final String DELIMITER = "==="; + public ParametersSaver() { + stateProperties = new PanelsStateProperties(ExportDataPanel.class.getName()); + } void save(Map components) { - // clear old values - try (PrintWriter writer = new PrintWriter(new FileWriter(FILE_NAME, false))) { - writer.print(""); + for (String key : components.keySet()) { + Object value = null; - } catch (IOException e) { - Log.error("Error saving ExportDataPanel values", e); - } + Component component = components.get(key); + if (component instanceof JCheckBox) { + value = ((JCheckBox) component).isSelected(); - // save new values - try (PrintWriter writer = new PrintWriter(new FileWriter(FILE_NAME, true))) { + } else if (component instanceof JTextField) { + value = ((JTextField) component).getText().trim(); - for (String key : components.keySet()) { + } else if (component instanceof JComboBox) { - writer.print(key + DELIMITER); - - Component component = components.get(key); - if (component instanceof JCheckBox) { - writer.println(((JCheckBox) component).isSelected()); - - } else if (component instanceof JTextField) { - writer.println(((JTextField) component).getText().trim()); - - } else if (component instanceof JComboBox) { - - if (component.getName().equals(columnDelimiterComboName)) - writer.println(((JComboBox) component).getSelectedItem()); - else - writer.println(((JComboBox) component).getSelectedIndex()); - } + if (component.getName().equals(columnDelimiterComboName)) + value = ((JComboBox) component).getSelectedItem(); + else + value = ((JComboBox) component).getSelectedIndex(); } - } catch (IOException e) { - Log.error("Error saving ExportDataPanel values", e); + if (value == null) + value = Constants.EMPTY; + + stateProperties.put(key, value.toString()); } + + stateProperties.save(); } void restore(Map components) { - try (BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME))) { - - String line; - while ((line = reader.readLine()) != null) { - String[] data = line.split(DELIMITER); + for (String key : components.keySet()) { + Component component = components.get(key); - Component component = components.get(data[0]); - String value = data.length > 1 ? data[1] : ""; + String value = stateProperties.get(key); + if (value == null) + continue; - if (component instanceof JCheckBox) { - ((JCheckBox) component).setSelected(value.equalsIgnoreCase("true")); + if (component instanceof JCheckBox) { + ((JCheckBox) component).setSelected(value.equalsIgnoreCase("true")); - } else if (component instanceof JTextField) { - ((JTextField) component).setText(value); + } else if (component instanceof JTextField) { + ((JTextField) component).setText(value); - } else if (component instanceof JComboBox) { + } else if (component instanceof JComboBox) { - if (component.getName().equals(columnDelimiterComboName)) - ((JComboBox) component).setSelectedItem(value); - else - ((JComboBox) component).setSelectedIndex(Integer.parseInt(value)); - - } + if (component.getName().equals(columnDelimiterComboName)) + ((JComboBox) component).setSelectedItem(value); + else + ((JComboBox) component).setSelectedIndex(Integer.parseInt(value)); } - - } catch (IOException e) { - Log.error("Error restoring ExportDataPanel values", e); } } - String getFileName() { - return FILE_NAME; - } - - String getDelimiter() { - return DELIMITER; - } - } // class ParameterSaver private static class ColumnTableModel implements TableModel { @@ -915,7 +886,7 @@ public String getType() { @Override public void dispose() { - new ParametersSaver().save(components); + parametersSaver.save(components); super.dispose(); } diff --git a/src/org/executequery/gui/importData/ImportDataPanel.java b/src/org/executequery/gui/importData/ImportDataPanel.java index 5e3f44a4c..0cb114e74 100644 --- a/src/org/executequery/gui/importData/ImportDataPanel.java +++ b/src/org/executequery/gui/importData/ImportDataPanel.java @@ -25,6 +25,7 @@ import org.underworldlabs.swing.table.TableSorter; import org.underworldlabs.swing.util.SwingWorker; import org.underworldlabs.util.MiscUtils; +import org.underworldlabs.util.PanelsStateProperties; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; @@ -131,7 +132,9 @@ private void init() { delimiterCombo = WidgetFactory.createComboBox("delimiterCombo", delimiters); delimiterCombo.setEditable(true); - setDelimiterComboSelectedValue("columnDelimiterCombo", delimiterCombo); + String selectedValue = getDelimiterComboSelectedValue(); + if (selectedValue != null) + delimiterCombo.setSelectedItem(selectedValue); delimiterCombo.addActionListener(e -> previewSourceFile(false)); targetTableCombo = WidgetFactory.createComboBox("targetTableCombo"); @@ -859,23 +862,9 @@ private void updateSourcePropertiesFields() { previewSourceFile(false); } - private void setDelimiterComboSelectedValue(@SuppressWarnings("SameParameterValue") String key, JComboBox combo) { - - try (BufferedReader reader = new BufferedReader(new FileReader(ExportDataPanel.getParametersSaverFilePath()))) { - - String line; - while ((line = reader.readLine()) != null) { - - String[] data = line.split(ExportDataPanel.getParametersSaverDelimiter()); - if (data[0].equals(key)) { - if (data.length > 1) - combo.setSelectedItem(data[1]); - break; - } - } - - } catch (IOException ignored) { - } + private String getDelimiterComboSelectedValue() { + PanelsStateProperties stateProperties = new PanelsStateProperties(ExportDataPanel.class.getName()); + return stateProperties.get("columnDelimiterCombo"); } private boolean targetNotSelected(boolean displayWarnings) { diff --git a/src/org/underworldlabs/util/PanelsStateProperties.java b/src/org/underworldlabs/util/PanelsStateProperties.java new file mode 100644 index 000000000..66fcfbc94 --- /dev/null +++ b/src/org/underworldlabs/util/PanelsStateProperties.java @@ -0,0 +1,87 @@ +package org.underworldlabs.util; + +import org.executequery.log.Log; +import org.executequery.util.UserSettingsProperties; + +import java.io.*; +import java.util.HashMap; +import java.util.Map; + +public final class PanelsStateProperties { + private static final String DELIMITER = "="; + private static final String FILE_NAME = "re.user.panels.state"; + + private final String className; + private static String filePath; + private static final Map stateMap; + + static { + stateMap = new HashMap<>(); + readFile(); + } + + public PanelsStateProperties(String className) { + this.className = className; + } + + public void put(String key, String value) { + stateMap.put(buildKey(key), value); + } + + public String get(String key) { + return stateMap.get(buildKey(key)); + } + + public void save() { + + StringBuilder sb = new StringBuilder(); + for (String key : stateMap.keySet()) + sb.append(key).append(DELIMITER).append(stateMap.get(key)).append("\n"); + + writeFile(sb); + } + + public boolean isLoaded() { + return !stateMap.isEmpty(); + } + + private static void readFile() { + try (BufferedReader reader = new BufferedReader(new FileReader(getFilePath()))) { + + String line; + while ((line = reader.readLine()) != null) { + int delimiterIndex = line.indexOf(DELIMITER); + + String key = line.substring(0, delimiterIndex); + String value = line.substring(delimiterIndex + DELIMITER.length()); + stateMap.put(key, value); + } + + } catch (FileNotFoundException e) { + Log.warning(String.format("File %s not found", FILE_NAME)); + + } catch (IOException e) { + Log.error(String.format("Error reading %s file", FILE_NAME), e); + } + } + + private void writeFile(StringBuilder sb) { + try (PrintWriter writer = new PrintWriter(new FileWriter(getFilePath(), false))) { + writer.print(sb); + + } catch (IOException e) { + Log.error(String.format("Error writing %s file", FILE_NAME), e); + } + } + + private static String getFilePath() { + if (filePath == null) + filePath = new UserSettingsProperties().getUserSettingsDirectory() + FILE_NAME; + return filePath; + } + + private String buildKey(String key) { + return className + "." + key; + } + +} From d60ea323b57b65854cb3abcd868c1ee25d76a236 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 30 Jul 2024 12:08:40 +0300 Subject: [PATCH 021/141] Add saving visible columns in Trace Manager (RS-188450) --- .../gui/browser/TraceManagerPanel.java | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/org/executequery/gui/browser/TraceManagerPanel.java b/src/org/executequery/gui/browser/TraceManagerPanel.java index 6145a8f06..3cb846f42 100644 --- a/src/org/executequery/gui/browser/TraceManagerPanel.java +++ b/src/org/executequery/gui/browser/TraceManagerPanel.java @@ -25,6 +25,7 @@ import org.underworldlabs.util.DynamicLibraryLoader; import org.underworldlabs.util.FileUtils; import org.underworldlabs.util.MiscUtils; +import org.underworldlabs.util.PanelsStateProperties; import javax.swing.*; import java.awt.*; @@ -40,16 +41,15 @@ import java.sql.SQLException; import java.sql.Timestamp; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Arrays; +import java.util.*; import java.util.List; -import java.util.Vector; public class TraceManagerPanel extends AbstractServiceManagerPanel implements TabView { public static final String TITLE = Bundles.get(TraceManagerPanel.class, "title"); public static final String FRAME_ICON = "icon_manager_trace"; + private PanelsStateProperties stateProperties; private IFBTraceManager traceManager; private TablePanel loggerPanel; @@ -174,14 +174,23 @@ public boolean tabViewDeselected() { } protected void initOtherComponents() { + stateProperties = new PanelsStateProperties(TraceManagerPanel.class.getName()); + message = Message.LOG_MESSAGE; sessions = new ArrayList<>(); initTraceManager(null); sessionField = new JTextField(); sessionField.setText("Session"); sessionManagerPanel = new SessionManagerPanel(traceManager, sessionField); + columnsCheckPanel = new ListSelectionPanel(new Vector<>(Arrays.asList(LogConstants.COLUMNS))); - columnsCheckPanel.selectAllAction(); + if (stateProperties.isLoaded()) { + for (Object available : LogConstants.COLUMNS) + if (Objects.equals(stateProperties.get(available.toString()), String.valueOf(true))) + columnsCheckPanel.selectOneStringAction(available.toString()); + } else + columnsCheckPanel.selectAllAction(); + loggerPanel = new TablePanel(columnsCheckPanel); analisePanel = new AnalisePanel(loggerPanel.getTableRows()); fileConfButton = new JButton("..."); @@ -211,14 +220,7 @@ public void itemStateChanged(ItemEvent e) { toolBar.add(encodeCombobox, gbhToolBar.nextCol().setLabelDefault().fillHorizontally().setWeightX(0.1).get()); //toolBar.add(new JSeparator(),gbhToolBar.nextCol().setLabelDefault().get()); visibleColumnsButton = WidgetFactory.createRolloverButton("visibleColumnsButton", bundleString("VisibleColumns"), "icon_find_next"); - visibleColumnsButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - BaseDialog dialog = new BaseDialog(bundleString("VisibleColumns"), true); - dialog.addDisplayComponentWithEmptyBorder(columnsCheckPanel); - dialog.display(); - } - }); + visibleColumnsButton.addActionListener(e -> showVisibleColumnsDialog()); toolBar.add(visibleColumnsButton, gbhToolBar.nextCol().setLabelDefault().get()); toolBar.add(new JPanel(), gbhToolBar.nextCol().fillHorizontally().spanX().get()); fileConfField = new JTextField(); @@ -382,6 +384,17 @@ public void actionPerformed(ActionEvent e) { } + private void showVisibleColumnsDialog() { + BaseDialog dialog = new BaseDialog(bundleString("VisibleColumns"), true); + dialog.addDisplayComponentWithEmptyBorder(columnsCheckPanel); + dialog.display(); + + for (Object available : columnsCheckPanel.getAvailableValues()) + stateProperties.put(available.toString(), String.valueOf(false)); + for (Object available : columnsCheckPanel.getSelectedValues()) + stateProperties.put(available.toString(), String.valueOf(true)); + stateProperties.save(); + } protected void loadFromFile(int selectedRow, int selectedCol) { From 66339f2ee11cb80f48f4360f08e385c1c03b4299 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 30 Jul 2024 12:23:34 +0300 Subject: [PATCH 022/141] Fix remove empty row when there are no any variables or cursors in the corresponding tables (RS-187856) --- .../gui/procedure/CreateProcedureFunctionPanel.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java index c24a944fc..f909abba3 100644 --- a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java +++ b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java @@ -284,10 +284,6 @@ private String extractProcedureBody(String sqlText) { private void loadVariables() { - // remove first empty row - variablesPanel.clearRows(); - cursorsPanel.clearRows(); - String fullProcedureBody = getFullSourceBody(); if (fullProcedureBody != null && !fullProcedureBody.isEmpty()) { From 8f017d00085fe67214c7932f9189237d31354499 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 30 Jul 2024 12:31:09 +0300 Subject: [PATCH 023/141] Set ddl text panel adjusting to its minimum size (RS-187856) --- .../gui/procedure/CreateProcedureFunctionPanel.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java index f909abba3..c521880e1 100644 --- a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java +++ b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java @@ -132,6 +132,7 @@ public void keyPressed(KeyEvent e) { variablesPanel.setDatabaseConnection(connection); ddlTextPanel = new SimpleSqlTextPanel(false, true, "DDL"); + ddlTextPanel.setMinimumSize(new Dimension(500, ddlTextPanel.getPreferredSize().height)); ddlTextPanel.getTextPane().setDatabaseConnection(connection); tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); @@ -196,7 +197,7 @@ private void arrange() { splitPane.setLeftComponent(tabbedPane); splitPane.setRightComponent(ddlTextPanel); splitPane.setOneTouchExpandable(true); - splitPane.setDividerLocation(0.5); + splitPane.setResizeWeight(1.0); // --- button panel --- From c237889bb5f24fad8a14dc7d83621a57493a4e4c Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 30 Jul 2024 12:53:25 +0300 Subject: [PATCH 024/141] Add ability to hide helper tools in the CreateProcedureFunctionPanel (RS-187856) --- .../CreateProcedureFunctionPanel.java | 31 +++++++++++++++++-- .../localization/resources.properties | 1 + .../localization/resources_ru.properties | 1 + 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java index c521880e1..472a58c3e 100644 --- a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java +++ b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java @@ -33,6 +33,7 @@ import org.underworldlabs.swing.GUIUtils; import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.util.MiscUtils; +import org.underworldlabs.util.PanelsStateProperties; import org.underworldlabs.util.SystemProperties; import javax.swing.*; @@ -63,9 +64,13 @@ public abstract class CreateProcedureFunctionPanel extends AbstractCreateExterna protected KeyListener changeKeyListener; protected ActionListener changeActionListener; + private PanelsStateProperties stateProperties; // --- GUI components --- + private JSplitPane splitPane; + private JCheckBox showHelpersCheck; + protected ProcedureDefinitionPanel outputParamsPanel; protected ProcedureDefinitionPanel inputParamsPanel; protected ProcedureDefinitionPanel variablesPanel; @@ -91,6 +96,7 @@ public CreateProcedureFunctionPanel(DatabaseConnection dc, ActionContainer dialo @Override protected void init() { + stateProperties = new PanelsStateProperties(CreateProcedureFunctionPanel.class.getName()); changeActionListener = e -> generateDdlScript(); changeKeyListener = new KeyListener() { @@ -142,10 +148,17 @@ public void keyPressed(KeyEvent e) { tabbedPane.add(bundleString("Cursors"), cursorsPanel); addCommentTab(null); + showHelpersCheck = WidgetFactory.createCheckBox("showHelpersCheck", bundleString("showHelpersCheck")); + arrange(); checkExternal(); fillSqlBody(); + String value = stateProperties.get(showHelpersCheck.getName()); + showHelpersCheck.setSelected(value == null || Boolean.parseBoolean(value)); + if (!showHelpersCheck.isSelected()) + showHelpersCheckTriggered(); + try { generateDdlScript(); } catch (Exception ignored) { @@ -193,7 +206,7 @@ private void arrange() { // --- split pane --- - JSplitPane splitPane = new JSplitPane(); + splitPane = new JSplitPane(); splitPane.setLeftComponent(tabbedPane); splitPane.setRightComponent(ddlTextPanel); splitPane.setOneTouchExpandable(true); @@ -204,7 +217,8 @@ private void arrange() { JPanel buttonPanel = new JPanel(new GridBagLayout()); gbh = new GridBagHelper().leftGap(5).topGap(5).fillHorizontally().anchorNorthEast(); - buttonPanel.add(new JPanel(), gbh.setMaxWeightX().get()); + buttonPanel.add(showHelpersCheck, gbh.get()); + buttonPanel.add(new JPanel(), gbh.nextCol().setMaxWeightX().get()); buttonPanel.add(actionButton, gbh.nextCol().setMinWeightX().fillNone().get()); buttonPanel.add(submitButton, gbh.nextCol().get()); buttonPanel.add(cancelButton, gbh.nextCol().get()); @@ -216,7 +230,7 @@ private void arrange() { gbh = new GridBagHelper().setInsets(5, 5, 5, 0).anchorNorthWest().fillBoth(); mainPanel.add(topPanel, gbh.setMinWeightY().spanX().get()); mainPanel.add(splitPane, gbh.nextRow().setMaxWeightY().setMaxWeightY().get()); - mainPanel.add(buttonPanel, gbh.nextRow().fillNone().anchorNorthEast().setMinWeightY().bottomGap(5).get()); + mainPanel.add(buttonPanel, gbh.nextRow().fillHorizontally().anchorNorthEast().setMinWeightY().bottomGap(5).get()); // --- base --- @@ -240,9 +254,20 @@ private void addListeners() { useExternalCheck.addActionListener(changeActionListener); inputParamsPanel.addChangesListener(changeActionListener); outputParamsPanel.addChangesListener(changeActionListener); + showHelpersCheck.addActionListener(e -> showHelpersCheckTriggered()); simpleCommentPanel.getCommentField().getTextAreaComponent().addKeyListener(changeKeyListener); } + private void showHelpersCheckTriggered() { + boolean selected = showHelpersCheck.isSelected(); + tabbedPane.setVisible(selected); + splitPane.setDividerLocation(splitPane.getMaximumDividerLocation()); + splitPane.updateUI(); + + stateProperties.put(showHelpersCheck.getName(), String.valueOf(selected)); + stateProperties.save(); + } + @SuppressWarnings("DataFlowIssue") protected void generateDdlScript() { diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index 7da64259e..649c07a0b 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1121,6 +1121,7 @@ CreateProcedureFunctionPanel.DDL=DDL CreateProcedureFunctionPanel.Description=Comment CreateProcedureFunctionPanel.ErrorRetrievingDataTypes=Error retrieving the data types for the selected connection.\nThe system returned:\n CreateProcedureFunctionPanel.FUNCTION=Function +CreateProcedureFunctionPanel.showHelpersCheck=Show helper tools CreateProcedureFunctionPanel.InputParameters=Input Parameters CreateProcedureFunctionPanel.OutputParameters=Output Parameters CreateProcedureFunctionPanel.PROCEDURE=Procedure diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index b34b444ce..5f3c8674d 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1121,6 +1121,7 @@ CreateProcedureFunctionPanel.DDL=DDL CreateProcedureFunctionPanel.Description=Комментарий CreateProcedureFunctionPanel.ErrorRetrievingDataTypes=Ошибка при получении типов данных для выбранного соединения.\nСистема вернула:\n CreateProcedureFunctionPanel.FUNCTION=функции +CreateProcedureFunctionPanel.showHelpersCheck=Показать вспомогательные инструменты CreateProcedureFunctionPanel.InputParameters=Входные параметры CreateProcedureFunctionPanel.OutputParameters=Выходные параметры CreateProcedureFunctionPanel.PROCEDURE=процедуры From 39e980a99d823f9405d3a652b6a886f71b72e3a0 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Tue, 30 Jul 2024 13:15:24 +0300 Subject: [PATCH 025/141] fix loading erd from file --- src/org/executequery/gui/erd/ErdViewerPanel.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/org/executequery/gui/erd/ErdViewerPanel.java b/src/org/executequery/gui/erd/ErdViewerPanel.java index a7ed482e3..04ab79ec9 100644 --- a/src/org/executequery/gui/erd/ErdViewerPanel.java +++ b/src/org/executequery/gui/erd/ErdViewerPanel.java @@ -549,6 +549,8 @@ public Vector buildTableRelationships() { continue; referencedTable = columnConstraint.getRefTable(); + if (referencedTable == null) + continue; for (int j = 0; j < m; j++) { From 4a6282031b406e396536e9980ccf4f3839ea52a6 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Tue, 30 Jul 2024 14:34:31 +0300 Subject: [PATCH 026/141] fix enable toolbar for constraints --- src/org/executequery/gui/table/CreateTablePanel.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/org/executequery/gui/table/CreateTablePanel.java b/src/org/executequery/gui/table/CreateTablePanel.java index 68b0e9659..d629b6b03 100644 --- a/src/org/executequery/gui/table/CreateTablePanel.java +++ b/src/org/executequery/gui/table/CreateTablePanel.java @@ -55,7 +55,10 @@ import javax.swing.event.DocumentListener; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.*; -import java.awt.event.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; import java.io.File; import java.util.List; import java.util.Objects; @@ -179,7 +182,7 @@ public void changedUpdate(DocumentEvent e) { populateTablespaces(connection); externalTablePropsChanged(); - constraintsToolBar.enableButtons(false); + constraintsToolBar.enableButtons(true); columnsToolBar.enableButtons(true); centralPanel.setVisible(false); } From 080735723f0e4caf343cc52d874d92278e00c472 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 30 Jul 2024 14:09:04 +0300 Subject: [PATCH 027/141] Fix result set table cell rendering (RS-187243) --- .../executequery/gui/resultset/ResultSetTableCellRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/executequery/gui/resultset/ResultSetTableCellRenderer.java b/src/org/executequery/gui/resultset/ResultSetTableCellRenderer.java index ed4363630..a22bc2f5c 100644 --- a/src/org/executequery/gui/resultset/ResultSetTableCellRenderer.java +++ b/src/org/executequery/gui/resultset/ResultSetTableCellRenderer.java @@ -22,7 +22,6 @@ import org.executequery.Constants; import org.executequery.databaseobjects.Types; -import org.executequery.localization.Bundles; import org.underworldlabs.util.MiscUtils; import org.underworldlabs.util.SystemProperties; @@ -448,6 +447,7 @@ public Component getTableCellRendererComponent( setBackground(selectionBackground); } else if (row == table.getSelectedRow()) { + setForeground(tableForeground); setBackground(focusRowBackground); } else { From 8802b9a0550cb516bc4c290dd690dcc5fa774879 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Wed, 31 Jul 2024 10:32:50 +0300 Subject: [PATCH 028/141] fix editing constraints for erd --- .../executequery/gui/erd/ErdNewTableDialog.java | 17 +---------------- src/org/executequery/gui/erd/ErdTable.java | 16 ++++++++++++++++ .../gui/table/CreateTablePanel.java | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/org/executequery/gui/erd/ErdNewTableDialog.java b/src/org/executequery/gui/erd/ErdNewTableDialog.java index ed8a6c2ec..453b8ccd3 100644 --- a/src/org/executequery/gui/erd/ErdNewTableDialog.java +++ b/src/org/executequery/gui/erd/ErdNewTableDialog.java @@ -68,7 +68,7 @@ public ErdNewTableDialog(ErdViewerPanel parent, ErdTable erdTable) { createPanel.setTableName(erdTable.getTableName()); createPanel.getSimpleCommentPanel().setComment(erdTable.getDescriptionTable()); createPanel.setColumnDataArray(tableColumns); - createPanel.setColumnConstraintVector(getColumnConstraints(tableColumns)); + createPanel.setColumnConstraintVector(erdTable.getColumnConstraints()); createPanel.resetSQLText(); createPanel.setSQLTextCaretPosition(0); } @@ -148,21 +148,6 @@ public void createTable() { dispose(); } - private static Vector getColumnConstraints(ColumnData[] columnDataArray) { - - if (columnDataArray == null) - return new Vector<>(); - - Vector columnConstraintVector = new Vector<>(); - for (ColumnData columnData : columnDataArray) { - Vector tempConstraintsVector = columnData.getColumnConstraintsVector(); - if (tempConstraintsVector != null) - columnConstraintVector.addAll(tempConstraintsVector); - } - - return columnConstraintVector; - } - // --- ActionContainer impl --- @Override diff --git a/src/org/executequery/gui/erd/ErdTable.java b/src/org/executequery/gui/erd/ErdTable.java index 26dd62a42..22aa1acc4 100644 --- a/src/org/executequery/gui/erd/ErdTable.java +++ b/src/org/executequery/gui/erd/ErdTable.java @@ -22,6 +22,7 @@ import org.apache.batik.ext.awt.g2d.DefaultGraphics2D; import org.apache.commons.lang.ArrayUtils; +import org.executequery.gui.browser.ColumnConstraint; import org.executequery.gui.browser.ColumnData; import org.underworldlabs.swing.plaf.UIUtils; import org.underworldlabs.util.MiscUtils; @@ -965,6 +966,21 @@ public void setShowCommentOnFields(boolean showCommentOnFields) { this.showCommentOnFields = showCommentOnFields; } + public Vector getColumnConstraints() { + + if (columns == null) + return new Vector<>(); + + Vector columnConstraintVector = new Vector<>(); + for (ColumnData columnData : columns) { + Vector tempConstraintsVector = columnData.getColumnConstraintsVector(); + if (tempConstraintsVector != null) + columnConstraintVector.addAll(tempConstraintsVector); + } + + return columnConstraintVector; + } + static class ErdTableConnectionPoint { private final int axisType; diff --git a/src/org/executequery/gui/table/CreateTablePanel.java b/src/org/executequery/gui/table/CreateTablePanel.java index d629b6b03..3ff8744dc 100644 --- a/src/org/executequery/gui/table/CreateTablePanel.java +++ b/src/org/executequery/gui/table/CreateTablePanel.java @@ -512,7 +512,7 @@ public ColumnData[] getTableColumnDataAndConstraints() { for (ColumnConstraint constraint : constraintsArray) { String constraintColumn = constraint.getColumn(); - if (constraintColumn == null || constraintColumn.equalsIgnoreCase(columnName)) + if (constraintColumn == null || !constraintColumn.equalsIgnoreCase(columnName)) continue; columnData.setPrimaryKey(constraint.isPrimaryKey()); From 427f1400eb4e25b9bfc8d6efcae5b4482aede458 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Wed, 31 Jul 2024 11:22:37 +0300 Subject: [PATCH 029/141] See RS-187312 fix delete data from MON$ table --- .../databaseobjects/DatabaseTable.java | 6 + .../TableDataChangeWorker.java | 119 ++++++++++++++++++ .../impl/DefaultDatabaseTable.java | 43 +++++++ .../gui/browser/BrowserController.java | 5 +- 4 files changed, 171 insertions(+), 2 deletions(-) diff --git a/src/org/executequery/databaseobjects/DatabaseTable.java b/src/org/executequery/databaseobjects/DatabaseTable.java index 84040fc0d..14c7cb1e5 100644 --- a/src/org/executequery/databaseobjects/DatabaseTable.java +++ b/src/org/executequery/databaseobjects/DatabaseTable.java @@ -192,8 +192,14 @@ public interface DatabaseTable extends DatabaseTableObject { String prepareStatementWithPK(List columns); + String prepareStatementInMonTable(List columns); + String prepareStatementDeletingWithPK(); + String[] getMonField(); + + String prepareStatementDeletingFromMonTable(); + List getPrimaryKeyColumnNames(); boolean hasForeignKey(); diff --git a/src/org/executequery/databaseobjects/TableDataChangeWorker.java b/src/org/executequery/databaseobjects/TableDataChangeWorker.java index c09a59633..610d5089d 100644 --- a/src/org/executequery/databaseobjects/TableDataChangeWorker.java +++ b/src/org/executequery/databaseobjects/TableDataChangeWorker.java @@ -67,6 +67,8 @@ public boolean apply(List rows) { if (row.get(0).isDeleted()) { if (table != null && table.hasPrimaryKey()) result += executeDeletingWithPK(connection, table, row); + else if (table != null && table.getMonField() != null) + result += executeDeletingFromMonTable(connection, table, row); else result += executedDeleting(connection, tableObject, row); @@ -76,6 +78,9 @@ public boolean apply(List rows) { } else if (table != null && table.hasPrimaryKey()) { result += executeWithPK(connection, table, row); + } else if (table != null && table.getMonField() != null) { + result += executeInMonTable(connection, table, row); + } else result += executeChange(connection, tableObject, row); } @@ -172,6 +177,70 @@ private int executeWithPK(Connection connection, DatabaseTable table, List values) { + + List columns = new ArrayList(); + List changes = new ArrayList(); + for (RecordDataItem item : values) { + + if (item.isChanged()) { + + changes.add(item); + columns.add(item.getName()); + } + + } + + if (changes.isEmpty()) { + + return 0; + } + + try { + + int n = changes.size(); + String sql = table.prepareStatementInMonTable(columns); + + Log.info("Executing data change using statement - [ " + sql + " ]"); + + statement = connection.prepareStatement(sql); + for (int i = 0; i < n; i++) { + + RecordDataItem recordDataItem = changes.get(i); + if (!recordDataItem.isNewValueNull()) { + + statement.setObject((i + 1), recordDataItem.getNewValue(), recordDataItem.getDataType()); + + } else { + + statement.setNull((i + 1), Types.NULL); + } + + } + n++; + statement.setObject(n, valueForKey(table.getMonField()[1], values)); + return statement.executeUpdate(); + + } catch (Exception e) { + + rollback(); + throw handleException(e); + + } finally { + + if (statement != null) { + + try { + statement.close(); + } catch (SQLException e) { + } + statement = null; + } + + } + + } + private int executeDeletingWithPK(Connection connection, DatabaseTable table, List values) { List columns = new ArrayList(); @@ -229,6 +298,56 @@ private int executeDeletingWithPK(Connection connection, DatabaseTable table, Li } + private int executeDeletingFromMonTable(Connection connection, DatabaseTable table, List values) { + + List columns = new ArrayList(); + List changes = new ArrayList(); + for (RecordDataItem item : values) { + + if (item.isDeleted()) { + + changes.add(item); + columns.add(item.getName()); + } + + } + + if (changes.isEmpty()) { + + return 0; + } + + try { + String sql = table.prepareStatementDeletingFromMonTable(); + + Log.info("Executing data change using statement - [ " + sql + " ]"); + + statement = connection.prepareStatement(sql); + statement.setObject(1, valueForKey(table.getMonField()[1], values)); + + + return statement.executeUpdate(); + + } catch (Exception e) { + + rollback(); + throw handleException(e); + + } finally { + + if (statement != null) { + + try { + statement.close(); + } catch (SQLException e) { + } + statement = null; + } + + } + + } + private int executeAdding(Connection connection, DatabaseTableObject table, List values) { List columns = new ArrayList(); List changes = new ArrayList(); diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java index 53a5cc407..09b6de5c4 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java @@ -803,6 +803,28 @@ public boolean hasPrimaryKey() { return keys != null && !keys.isEmpty(); } + String[][] monTables = new String[][] + { + {"MON$ATTACHMENTS", "MON$ATTACHMENT_ID"}, + {"MON$TRANSACTIONS", "MON$TRANSACTION_ID"}, + {"MON$STATEMENTS", "MON$STATEMENT_ID"}, + {"MON$CALL_STACK", "MON$CALL_ID"}, + {"MON$COMPILED_STATEMENTS", "MON$COMPILED_STATEMENT_ID"}, + {"MON$TEMP_SPACES", "MON$TEMP_SPACE_ID"} + }; + + public String[] getMonField() { + for (int i = 0; i < monTables.length; i++) + if (monTables[i][0].contentEquals(getName())) + return monTables[i]; + return null; + } + + public boolean isMonTable() { + return getMonField() != null; + } + + @Override public List getPrimaryKeys() { @@ -1104,6 +1126,19 @@ public String prepareStatementWithPK(List columns) { return sb.toString(); } + @Override + public String prepareStatementInMonTable(List columns) { + + StringBuilder sb = new StringBuilder(); + sb.append("UPDATE ").append(getNameWithPrefixForQuery()).append(" SET "); + for (String column : columns) + sb.append(MiscUtils.getFormattedObject(column, getHost().getDatabaseConnection())).append(" = ?,"); + sb.deleteCharAt(sb.length() - 1); + sb.append(" WHERE "); + sb.append(getMonField()[1]).append(" = ?"); + return sb.toString(); + } + @Override public String prepareStatementDeletingWithPK() { @@ -1124,6 +1159,14 @@ public String prepareStatementDeletingWithPK() { return sb.toString(); } + @Override + public String prepareStatementDeletingFromMonTable() { + String sb = "DELETE FROM " + getNameWithPrefixForQuery() + + " WHERE " + + getMonField()[1] + " = ?"; + return sb; + } + @Override public List getPrimaryKeyColumnNames() { return namesFromColumns(getPrimaryKeysColumns()); diff --git a/src/org/executequery/gui/browser/BrowserController.java b/src/org/executequery/gui/browser/BrowserController.java index a5a2b6a1f..991a9c051 100644 --- a/src/org/executequery/gui/browser/BrowserController.java +++ b/src/org/executequery/gui/browser/BrowserController.java @@ -26,8 +26,8 @@ import org.executequery.databaseobjects.DatabaseHost; import org.executequery.databaseobjects.DatabaseTable; import org.executequery.databaseobjects.NamedObject; -import org.executequery.databaseobjects.impl.*; import org.executequery.databaseobjects.impl.ColumnConstraint; +import org.executequery.databaseobjects.impl.*; import org.executequery.gui.BaseDialog; import org.executequery.gui.browser.nodes.DatabaseObjectNode; import org.executequery.gui.databaseobjects.AbstractCreateObjectPanel; @@ -378,7 +378,8 @@ private FormObjectView buildPanelView(DatabaseObjectNode node, boolean updatePro } case NamedObject.TABLE: - case NamedObject.GLOBAL_TEMPORARY: { + case NamedObject.GLOBAL_TEMPORARY: + case NamedObject.SYSTEM_TABLE: { BrowserTableEditingPanel editingPanel = viewPanel.getEditingPanel(); editingPanel.setValues((DatabaseTable) databaseObject); return editingPanel; From 51495a1ae90d8164364cdfdb4daa5a8f54d8052d Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 31 Jul 2024 15:20:51 +0300 Subject: [PATCH 030/141] Rework GeneratorTestDataPanel class (RS-181680) --- .../gui/browser/GeneratorTestDataPanel.java | 814 ++++++++++-------- .../generatortestdata/FieldsPanel.java | 11 +- .../MethodGeneratorPanel.java | 3 +- .../methodspanels/AbstractMethodPanel.java | 3 +- .../OpenConnectionsComboboxPanel.java | 50 -- .../localization/resources.properties | 20 +- .../localization/resources_ru.properties | 14 +- 7 files changed, 466 insertions(+), 449 deletions(-) delete mode 100644 src/org/executequery/gui/components/OpenConnectionsComboboxPanel.java diff --git a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java index 2b713a1de..c0bf0701c 100644 --- a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java +++ b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java @@ -3,6 +3,7 @@ import biz.redsoft.IFBBatch; import biz.redsoft.IFBBatchCompletionState; import biz.redsoft.IFBDatabaseConnection; +import org.executequery.Constants; import org.executequery.GUIUtilities; import org.executequery.base.TabView; import org.executequery.databasemediators.DatabaseConnection; @@ -14,12 +15,12 @@ import org.executequery.datasource.ConnectionManager; import org.executequery.datasource.DefaultDriverLoader; import org.executequery.gui.LoggingOutputPanel; +import org.executequery.gui.WidgetFactory; import org.executequery.gui.browser.generatortestdata.FieldGenerator; import org.executequery.gui.browser.generatortestdata.FieldsPanel; -import org.executequery.gui.components.OpenConnectionsComboboxPanel; import org.executequery.localization.Bundles; +import org.executequery.log.Log; import org.executequery.sql.SqlStatementResult; -import org.underworldlabs.jdbc.DataSourceException; import org.underworldlabs.swing.DynamicComboBoxModel; import org.underworldlabs.swing.NumberTextField; import org.underworldlabs.swing.layouts.GridBagHelper; @@ -28,473 +29,532 @@ import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.sql.*; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Vector; -public class GeneratorTestDataPanel extends JPanel implements TabView { +public class GeneratorTestDataPanel extends JPanel + implements TabView { - public final static String TITLE = bundles("TITLE"); public static final String FRAME_ICON = "icon_generator"; + public static final String TITLE = bundleString("TITLE"); - private OpenConnectionsComboboxPanel comboboxPanel; + // --- GUI components --- - private JComboBox tableBox; + private JComboBox tablesCombo; + private JComboBox connectionsCombo; - private DynamicComboBoxModel tableBoxModel; + private JButton stopButton; + private JButton startButton; - private DefaultStatementExecutor executor; + private NumberTextField batchSizeField; + private NumberTextField commitAfterField; + private NumberTextField recordsCountField; + + private JCheckBox useBatchesCheck; + private JCheckBox stopOnErrorCheck; + private JCheckBox loggingEnabledCheck; + private JTabbedPane tabbedPane; private FieldsPanel fieldsPanel; + private JProgressBar progressBar; + private LoggingOutputPanel logPanel; - private JButton startButton; + // --- - private JButton stopButton; + private boolean stop; + private DynamicComboBoxModel tablesModel; + private DefaultStatementExecutor executor; - private boolean stop = false; + public GeneratorTestDataPanel() { + init(); + arrange(); + loadTableColumns(); + } - private NumberTextField countRecordsField; + private void init() { - private NumberTextField batchCountField; + fieldsPanel = new FieldsPanel(); + progressBar = new JProgressBar(); + logPanel = new LoggingOutputPanel(); - private LoggingOutputPanel logPanel; + tabbedPane = new JTabbedPane(); + tabbedPane.add(bundleString("Generator"), fieldsPanel); + tabbedPane.add(bundleString("Output"), logPanel); - private JProgressBar progressBar; + connectionsCombo = WidgetFactory.createComboBox("connectionsCombo", ConnectionManager.getActiveConnections()); + connectionsCombo.setMinimumSize(new Dimension(400, WidgetFactory.defaultHeight())); + connectionsCombo.addItemListener(this::connectionsComboTriggered); - private JCheckBox logBox; + executor = new DefaultStatementExecutor(); + executor.setDatabaseConnection(getSelectedConnection()); + executor.setCommitMode(false); + executor.setKeepAlive(true); - private JLabel batchLabel; + stopButton = WidgetFactory.createButton("stopButton", bundleString("Stop")); + stopButton.addActionListener(e -> stop = true); + stopButton.setEnabled(false); - private JLabel batchNotAvailable; + startButton = WidgetFactory.createButton("startButton", bundleString("Start")); + startButton.addActionListener(e -> start()); - private JCheckBox useBatchesBox; + recordsCountField = WidgetFactory.createNumberTextField("recordsCountField"); + recordsCountField.setEnableNegativeNumbers(false); + recordsCountField.setText("100"); - private JCheckBox printBatchStateBox; + batchSizeField = WidgetFactory.createNumberTextField("batchSizeField"); + batchSizeField.setEnableNegativeNumbers(false); + batchSizeField.setText("100"); - private JCheckBox stopOnErrorBox; + commitAfterField = WidgetFactory.createNumberTextField("commitAfterField"); + commitAfterField.setEnableNegativeNumbers(false); + commitAfterField.setText("500"); + stopOnErrorCheck = WidgetFactory.createCheckBox("stopOnErrorCheck", bundleString("StopOnError")); + useBatchesCheck = WidgetFactory.createCheckBox("useBatchesCheck", bundleString("useBatchesBox")); - public GeneratorTestDataPanel() { - init(); - } + loggingEnabledCheck = WidgetFactory.createCheckBox("loggingEnabledCheck", bundleString("OutputLog")); + loggingEnabledCheck.setSelected(true); - public static String bundles(String key) { - return Bundles.get(GeneratorTestDataPanel.class, key); + tablesModel = new DynamicComboBoxModel(); + tablesModel.setElements(getDatabaseTables()); + tablesCombo = WidgetFactory.createComboBox("tablesCombo", tablesModel); + tablesCombo.addItemListener(this::tablesComboTriggered); } - @Override - public boolean tabViewClosing() { - return true; - } + private void arrange() { + GridBagHelper gbh; + JLabel batchLabel = new JLabel(bundleString("BatchCount")); - @Override - public boolean tabViewSelected() { - return true; - } + // --- check panel --- - @Override - public boolean tabViewDeselected() { - return true; - } + JPanel checkBoxesPanel = new JPanel(new GridBagLayout()); + + gbh = new GridBagHelper(); + checkBoxesPanel.add(loggingEnabledCheck, gbh.get()); + checkBoxesPanel.add(stopOnErrorCheck, gbh.nextCol().leftGap(5).get()); + checkBoxesPanel.add(useBatchesCheck, gbh.nextCol().get()); + checkBoxesPanel.add(new JPanel(), gbh.nextCol().spanX().get()); + + // --- buttons panel --- + + JPanel buttonsPanel = new JPanel(new GridBagLayout()); + + gbh = new GridBagHelper().fillHorizontally(); + buttonsPanel.add(checkBoxesPanel, gbh.leftGap(1).setMaxWeightX().get()); + buttonsPanel.add(startButton, gbh.nextCol().setMinWeightX().fillNone().get()); + buttonsPanel.add(stopButton, gbh.nextCol().leftGap(5).get()); + + // --- preferences panel --- + + JPanel preferencesPanel = new JPanel(new GridBagLayout()); - public DatabaseConnection getSelectedConnection() { - return comboboxPanel.getSelectedConnection(); + gbh = new GridBagHelper().anchorNorthWest().leftGap(5).fillHorizontally(); + preferencesPanel.add(new JLabel(Bundles.get("common.connection")), gbh.setMinWeightX().topGap(3).get()); + preferencesPanel.add(connectionsCombo, gbh.nextCol().setMaxWeightX().topGap(0).spanX().get()); + preferencesPanel.add(new JLabel(bundleString("Table")), gbh.setMinWeightX().setWidth(1).nextRowFirstCol().topGap(8).get()); + preferencesPanel.add(tablesCombo, gbh.nextCol().setMaxWeightX().topGap(5).spanX().get()); + preferencesPanel.add(new JLabel(bundleString("CountRecords")), gbh.setMinWeightX().setWidth(1).nextRowFirstCol().topGap(8).get()); + preferencesPanel.add(recordsCountField, gbh.nextCol().setMaxWeightX().topGap(5).spanX().get()); + preferencesPanel.add(new JLabel(bundleString("AfterCommit")), gbh.setMinWeightX().setWidth(1).nextRowFirstCol().topGap(8).get()); + preferencesPanel.add(commitAfterField, gbh.nextCol().setMaxWeightX().topGap(5).spanX().get()); + preferencesPanel.add(batchLabel, gbh.setMinWeightX().setWidth(1).nextRowFirstCol().topGap(8).get()); + preferencesPanel.add(batchSizeField, gbh.nextCol().setMaxWeightX().topGap(5).spanX().get()); + + // --- main panel --- + + JPanel mainPanel = new JPanel(new GridBagLayout()); + + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + mainPanel.add(preferencesPanel, gbh.spanX().get()); + mainPanel.add(buttonsPanel, gbh.nextRow().topGap(5).get()); + mainPanel.add(tabbedPane, gbh.nextRow().setMaxWeightY().fillBoth().get()); + mainPanel.add(progressBar, gbh.nextRow().setMinWeightY().fillHorizontally().get()); + + // --- base --- + + setLayout(new GridBagLayout()); + gbh = new GridBagHelper().fillBoth().setInsets(5, 5, 5, 5).spanY().spanX(); + add(mainPanel, gbh.get()); + + // --- + + if (new DefaultDriverLoader().load(getSelectedConnection().getJDBCDriver()).getMajorVersion() < 4 + || getSelectedConnection().getMajorServerVersion() < 4 + || !getSelectedConnection().useNewAPI()) { + + batchLabel.setEnabled(false); + batchSizeField.setEnabled(false); + useBatchesCheck.setEnabled(false); + } } - private NumberTextField commitAfterField; + private void start() { + new SwingWorker("TestDataGenerator") { - private Vector fillTables() { - Vector tables = new Vector<>(); - SqlStatementResult result = null; - try { - String query = "select rdb$relation_name\n" + - "from rdb$relations\n" + - "where rdb$view_blr is null \n" + - "and (rdb$system_flag is null or rdb$system_flag = 0) and rdb$relation_type=0 or rdb$relation_type=2\n" + - "order by rdb$relation_name"; - result = executor.getResultSet(query); - ResultSet rs = result.getResultSet(); - while (rs.next()) { - tables.add(rs.getString(1).trim()); + @Override + public Object construct() { + runGeneration(); + return Constants.WORKER_SUCCESS; } - if (tables.size() == 0) { - tables.add(""); - GUIUtilities.displayErrorMessage("there is no table in the database"); + + @Override + public void finished() { + stopButton.setEnabled(false); + startButton.setEnabled(true); + progressBar.setValue(0); } - } catch (SQLException e) { - e.printStackTrace(); - } catch (NullPointerException e) { - e.printStackTrace(); - } finally { - executor.releaseResources(); - } - return tables; + + }.start(); } - private void fillCols() { - if (tableBox.getSelectedItem() != "") { - NamedObject object = ((ConnectionsTreePanel) GUIUtilities.getDockedTabComponent(ConnectionsTreePanel.PROPERTY_KEY)).getHostNode(getSelectedConnection()).getDatabaseObject(); - DatabaseHost host = (DatabaseHost) object; - List cols = host.getColumns( (String) tableBox.getSelectedItem()); - List fieldGenerators = new ArrayList<>(); - for (int i = 0; i < cols.size(); i++) { - fieldGenerators.add(new FieldGenerator(cols.get(i), executor)); + private void runGeneration() { + + int recordsCount = recordsCountField.getValue(); + if (recordsCount <= 0) { + GUIUtilities.displayErrorMessage(bundleString("nothingToGenerate")); + return; + } + + List selectedFields = new ArrayList<>(); + for (FieldGenerator fieldGenerator : fieldsPanel.getFieldGenerators()) { + if (fieldGenerator.isSelectedField()) { + selectedFields.add(fieldGenerator); + fieldGenerator.setFirst(); } - if (fieldsPanel == null) { - fieldsPanel = new FieldsPanel(fieldGenerators); - } else fieldsPanel.setFieldGenerators(fieldGenerators); + } + + if (selectedFields.isEmpty()) { + GUIUtilities.displayErrorMessage(bundleString("noColumnsSelected")); + return; + } + + stopButton.setEnabled(true); + startButton.setEnabled(false); + + stop = false; + progressBar.setMinimum(0); + progressBar.setMaximum(recordsCount); + + long startTime = System.currentTimeMillis(); + try { + if (useBatchesCheck.isSelected()) + generateUsingBatches(recordsCount, selectedFields); + else + generate(recordsCount, selectedFields); + + } catch (Exception e) { + Log.error(e.getMessage(), e); + GUIUtilities.displayExceptionErrorDialog(e.getMessage(), e, this.getClass()); + + } finally { + logPanel.append("Execution time: " + (System.currentTimeMillis() - startTime) + " ms"); } } - private void init() { - executor = new DefaultStatementExecutor(); - progressBar = new JProgressBar(); - logPanel = new LoggingOutputPanel(); - comboboxPanel = new OpenConnectionsComboboxPanel(); - comboboxPanel.connectionsCombo.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - executor.setDatabaseConnection(getSelectedConnection()); - tableBoxModel.setElements(fillTables()); + private void generate(int recordsCount, List selectedFields) throws SQLException { + + int commitAfter = commitAfterField.getValue(); + boolean isStopOnError = stopOnErrorCheck.isSelected(); + boolean loggingEnabled = loggingEnabledCheck.isSelected(); + + int countError = 0; + int countSuccess = 0; + int lastErrorIndex = -1; + String lastErrorMessage = null; + boolean isGenerationError = false; + + PreparedStatement statement = executor.getPreparedStatement(getInsertQuery(selectedFields)); + for (int recordIndex = 0; recordIndex < recordsCount && !stop; recordIndex++) { + progressBar.setValue(recordIndex); + + if (recordIndex % commitAfter == 0 && recordIndex != 0) + executor.getConnection().commit(); + + // > try to set generate and set values + + try { + for (int fieldIndex = 0; fieldIndex < selectedFields.size(); fieldIndex++) { + Object parameter = selectedFields.get(fieldIndex).getMethodGeneratorPanel().getTestDataObject(); + statement.setObject(fieldIndex + 1, parameter); } - } - }); - executor.setDatabaseConnection(getSelectedConnection()); - tableBoxModel = new DynamicComboBoxModel(); - tableBox = new JComboBox(tableBoxModel); - tableBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - fillCols(); + + if (loggingEnabled && isGenerationError && lastErrorIndex > -1) { + if (recordIndex - lastErrorIndex + 1 > 1) + logPanel.appendError("Failed on [" + lastErrorIndex + ", " + (recordIndex - 1) + "] records"); + else + logPanel.appendError("Failed on " + lastErrorIndex + " record"); + + lastErrorIndex = -1; } - } - }); - stopButton = new JButton(bundles("Stop")); - stopButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - stop = true; - } - }); - stopButton.setEnabled(false); - startButton = new JButton(bundles("Start")); - startButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - SwingWorker worker = new SwingWorker("TestDataGenerator") { - @Override - public Object construct() { - stop = false; - int count = countRecordsField.getValue(); - if (count <= 0) - GUIUtilities.displayErrorMessage("the number of records to be added must be greater than zero"); - else { - boolean outlog = logBox.isSelected(); - startButton.setEnabled(false); - stopButton.setEnabled(true); - long startTime = System.currentTimeMillis(); - progressBar.setMinimum(0); - progressBar.setMaximum(count); - int commitAfter = commitAfterField.getValue(); - int countSuccess = 0; - int countError = 0; - List fieldGenerators = fieldsPanel.getFieldGenerators(); - List selectedFields = new ArrayList<>(); - String sql = "INSERT INTO \"" + tableBox.getSelectedItem() + "\" ("; - String values = ""; - boolean first = true; - for (int g = 0; g < fieldGenerators.size(); g++) { - if (fieldGenerators.get(g).isSelectedField()) { - selectedFields.add(fieldGenerators.get(g)); - if (!first) { - sql += ","; - values += ","; - } else first = false; - sql += " \"" + fieldGenerators.get(g).getColumn().getName() + "\"\n"; - values += "? "; - fieldGenerators.get(g).setFirst(); - - } - } - sql += ") VALUES (" + values + ");"; - logPanel.append("execute:\n"); - logPanel.append(sql); - try { - if (selectedFields.size() < 1) - throw new DataSourceException("no columns selected for generation"); - executor.setCommitMode(false); - executor.setKeepAlive(true); - if (useBatchesBox.isSelected()) { - - int batchCount = batchCountField.getValue(); - - Connection realConnection = ConnectionManager.getTemporaryConnection(getSelectedConnection()); - if (realConnection.unwrap(Connection.class).getClass().getName().contains("FBConnection")) { // Red Database or FB - Connection fbConn = realConnection.unwrap(Connection.class); - IFBDatabaseConnection db = null; - try { - db = (IFBDatabaseConnection) DynamicLibraryLoader.loadingObjectFromClassLoader(getSelectedConnection().getDriverMajorVersion(), fbConn, "FBDatabaseConnectionImpl4"); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - db.setConnection(fbConn); - IFBBatch batch = db.createBatch(sql); - - boolean lastError = false; - String lastMessage = ""; - int i = 0; - while (i < count) { - - if (i + batchCount > count) - batchCount = i + batchCount - count; - - for (int bc = 0; bc < batchCount; bc++) { - for (int g = 0; g < selectedFields.size(); g++) { - Object param = selectedFields.get(g).getMethodGeneratorPanel().getTestDataObject(); - String typeName = selectedFields.get(g).getColumn().getTypeName(); - if (typeName.contains("BLOB")) { - if (((byte[]) param).length == 0) - param = new byte[1]; - batch.addBlob(g + 1, (byte[]) param); - } else { - batch.setObject(g + 1, param); - } - } - batch.addBatch(); - } - - IFBBatchCompletionState execute = batch.execute(); - if (printBatchStateBox.isSelected()) - logPanel.append(execute.printAllStates()); - - if (stop) - break; - if (i % commitAfter == 0 && i != 0) { - batch.commit(); - batch.startTransaction(); - } - i += batchCount; - progressBar.setValue(i); - } - - batch.commit(); - logPanel.append("Execution time: " + (System.currentTimeMillis() - startTime) + " ms"); - GUIUtilities.displayInformationMessage("Batch execution completed. See log panel to details."); - } - } else { - PreparedStatement statement = executor.getPreparedStatement(sql); - boolean lastError = false; - String lastMessage = ""; - int i = 0; - for (; i < count; i++) { - if (stop) - break; - if (i % commitAfter == 0 && i != 0) { - executor.getConnection().commit(); - } - progressBar.setValue(i); - try { - for (int g = 0; g < selectedFields.size(); g++) { - Object param = selectedFields.get(g).getMethodGeneratorPanel().getTestDataObject(); - statement.setObject(g + 1, param); - } - } catch (SQLException e) { - String message = sql; - if (outlog) { - String errorMessage = e.getMessage(); - if (!lastError) { - if (!errorMessage.contentEquals(lastMessage)) { - message += errorMessage; - lastMessage = message; - logPanel.appendError(message); - } - logPanel.appendError("failed from " + i); - lastError = true; - } - } - } - SqlStatementResult result = executor.execute(QueryTypes.INSERT, statement); - String message = sql;// + params; - if (result.isException()) { - if (outlog) { - String errorMessage = result.getSqlException().getMessage(); - if (!lastError) { - if (!errorMessage.contentEquals(lastMessage)) { - message += errorMessage; - lastMessage = message; - logPanel.appendError(message); - } - logPanel.appendError("failed from " + i); - lastError = true; - } - } - countError++; - if (stopOnErrorBox.isSelected()) { - GUIUtilities.displayExceptionErrorDialog(result.getSqlException().getMessage(), result.getSqlException(), this.getClass()); - break; - } - } else { - countSuccess++; - if (outlog && lastError) { - logPanel.appendError("to " + (i - 1)); - lastError = false; - } - } - } - if (outlog && lastError) { - logPanel.appendError("to " + (i - 1)); - } - executor.getConnection().commit(); - logPanel.append("Execution time: " + (System.currentTimeMillis() - startTime) + " ms"); - } - - if (!useBatchesBox.isSelected()) { - GUIUtilities.displayInformationMessage(countSuccess + " records added successfully\n" + countError + " queries failed"); - logPanel.append(countSuccess + " records added successfully\n" + countError + " queries failed"); - } - } catch (Exception ex) { - ex.printStackTrace(); - GUIUtilities.displayExceptionErrorDialog("generation error: " + ex.getMessage(), ex, this.getClass()); - } finally { - executor.releaseResources(); - } - progressBar.setValue(0); - } - return null; - } + isGenerationError = false; + + } catch (SQLException e) { - @Override - public void finished() { - startButton.setEnabled(true); - stopButton.setEnabled(false); + if (loggingEnabled && lastErrorIndex == -1) { + String errorMessage = e.getMessage(); + if (!Objects.equals(errorMessage, lastErrorMessage)) { + lastErrorIndex = recordIndex; + lastErrorMessage = errorMessage; + logPanel.appendError(errorMessage); } - }; - worker.start(); + } + isGenerationError = true; + continue; // if there is an exception with generating data then go to the next iteration } - }); - countRecordsField = new NumberTextField(false); - countRecordsField.setText("100"); - batchCountField = new NumberTextField(false); - batchCountField.setText("100"); + // > try to insert generated values - commitAfterField = new NumberTextField(false); - commitAfterField.setText("500"); + SqlStatementResult result = executor.execute(QueryTypes.INSERT, statement); + if (result.isException()) { + countError++; + if (loggingEnabled && lastErrorIndex == -1) { + String errorMessage = result.getSqlException().getMessage(); + if (!Objects.equals(errorMessage, lastErrorMessage)) { + lastErrorIndex = recordIndex; + lastErrorMessage = errorMessage; + logPanel.appendError(errorMessage); + } + } - logBox = new JCheckBox(bundles("OutputLog")); - useBatchesBox = new JCheckBox(bundles("useBatchesBox")); - printBatchStateBox = new JCheckBox(bundles("printBatchStateBox")); - stopOnErrorBox = new JCheckBox(bundles("StopOnError")); + if (isStopOnError) { + GUIUtilities.displayExceptionErrorDialog( + result.getSqlException().getMessage(), + result.getSqlException(), + this.getClass() + ); + break; + } - tableBoxModel.setElements(fillTables()); - JPanel topPanel = new JPanel(); - JPanel bottomPanel = new JPanel(); - JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, topPanel, bottomPanel); + } else { + countSuccess++; + if (loggingEnabled && lastErrorIndex > -1) { + if (recordIndex - lastErrorIndex + 1 > 1) + logPanel.appendError("Failed on [" + lastErrorIndex + ", " + (recordIndex - 1) + "] records"); + else + logPanel.appendError("Failed on " + lastErrorIndex + " record"); + lastErrorIndex = -1; + } + } + } - GridBagHelper gbh = new GridBagHelper(); + if (loggingEnabled && lastErrorIndex > -1) { + if (recordsCount - lastErrorIndex + 1 > 1) + logPanel.appendError("Failed on [" + lastErrorIndex + ", " + recordsCount + "] records"); + else + logPanel.appendError("Failed on " + lastErrorIndex + " record"); + } - //ConnectionCombobox - GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0); - gbh.setDefaults(gbc); + executor.getConnection().commit(); + executor.releaseResources(); - topPanel.setLayout(new GridBagLayout()); + logPanel.appendAction("Added: " + countSuccess + "\nFailed: " + countError); + GUIUtilities.displayInformationMessage(bundleString("generationEndMessage", countSuccess, recordsCount, countError)); + } - topPanel.add(comboboxPanel, gbh.defaults().spanX().fillHorizontally().setInsets(0, 0, 0, 0).get()); + private void generateUsingBatches(int recordsCount, List selectedFields) throws SQLException { - JLabel label = new JLabel(bundles("Table")); - topPanel.add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); + int batchCount = batchSizeField.getValue(); + int commitAfter = commitAfterField.getValue(); + boolean loggingEnabled = loggingEnabledCheck.isSelected(); - topPanel.add(tableBox, gbh.defaults().nextCol().spanX().get()); + Connection realConnection = ConnectionManager.getTemporaryConnection(getSelectedConnection()); + Connection fbConnection = realConnection.unwrap(Connection.class); + if (!fbConnection.getClass().getName().contains("FBConnection")) { + GUIUtilities.displayWarningMessage(bundleString("batchesNotSupported")); + return; + } - label = new JLabel(bundles("CountRecords")); - topPanel.add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); + IFBBatch batch; + try { + IFBDatabaseConnection db = (IFBDatabaseConnection) DynamicLibraryLoader.loadingObjectFromClassLoader( + getSelectedConnection().getDriverMajorVersion(), + fbConnection, + "FBDatabaseConnectionImpl4" + ); + db.setConnection(fbConnection); + batch = db.createBatch(getInsertQuery(selectedFields)); + + } catch (ClassNotFoundException e) { + Log.error(e.getMessage(), e); + GUIUtilities.displayExceptionErrorDialog(e.getMessage(), e, getClass()); + return; + } - topPanel.add(countRecordsField, gbh.defaults().nextCol().spanX().get()); + int recordIndex = 0; + while (recordIndex < recordsCount && !stop) { - label = new JLabel(bundles("AfterCommit")); - topPanel.add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); + if (recordIndex + batchCount > recordsCount) + batchCount = recordIndex + batchCount - recordsCount; - topPanel.add(commitAfterField, gbh.defaults().nextCol().spanX().get()); + for (int batchRecordIndex = 0; batchRecordIndex < batchCount; batchRecordIndex++) { + for (int columnIndex = 0; columnIndex < selectedFields.size(); columnIndex++) { - topPanel.add(logBox, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); + String parameterType = selectedFields.get(columnIndex).getColumn().getTypeName(); + Object parameterValue = selectedFields.get(columnIndex).getMethodGeneratorPanel().getTestDataObject(); - topPanel.add(stopOnErrorBox, gbh.defaults().nextCol().setLabelDefault().get()); + if (parameterType.contains("BLOB")) { + if (((byte[]) parameterValue).length == 0) + parameterValue = new byte[1]; + batch.addBlob(columnIndex + 1, (byte[]) parameterValue); - topPanel.add(useBatchesBox, gbh.defaults().nextCol().setLabelDefault().get()); + } else + batch.setObject(columnIndex + 1, parameterValue); + } - batchLabel = new JLabel(bundles("BatchCount")); + batch.addBatch(); + } - batchNotAvailable = new JLabel(); - batchNotAvailable.setVisible(false); + IFBBatchCompletionState execute = batch.execute(); + if (loggingEnabled) + logPanel.append(execute.printAllStates()); - topPanel.add(batchLabel, gbh.defaults().nextCol().setLabelDefault().anchorEast().anchorCenter().get()); + if (recordIndex % commitAfter == 0 && recordIndex != 0) { + batch.commit(); + batch.startTransaction(); + } - topPanel.add(batchCountField, gbh.defaults().nextCol().setIpad(40, 0).get()); + recordIndex += batchCount; + progressBar.setValue(recordIndex); + } - topPanel.add(printBatchStateBox, gbh.defaults().nextCol().spanX().get()); + batch.commit(); + GUIUtilities.displayInformationMessage(bundleString("batchGenerationEndMessage")); + } - // topPanel.add(batchNotAvailable, gbh.defaults().nextRowFirstCol().spanX().get()); + private String getInsertQuery(List selectedFields) { + StringBuilder fields = new StringBuilder(); + StringBuilder values = new StringBuilder(); - topPanel.add(progressBar, gbh.defaults().nextRowFirstCol().spanX().get()); + boolean first = true; + for (FieldGenerator fieldGenerator : selectedFields) { + if (!first) { + fields.append(","); + values.append(", "); + } - topPanel.add(fieldsPanel, gbh.defaults().nextRowFirstCol().spanX().setMaxWeightY().fillBoth().get()); + fields.append("\n \"").append(fieldGenerator.getColumn().getName()).append("\""); + values.append("?"); - topPanel.add(startButton, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); + first = false; + } - topPanel.add(stopButton, gbh.defaults().nextCol().setLabelDefault().get()); + String query = String.format( + "INSERT INTO \"%s\" (%s\n) VALUES (%s);", + tablesCombo.getSelectedItem(), + fields, + values + ); - topPanel.add(new JPanel(), gbh.defaults().nextCol().spanX().get()); + logPanel.appendPlain("Prepared query:"); + logPanel.appendAction(query); - bottomPanel.setLayout(new GridBagLayout()); + return query; + } - gbh.setXY(0, 0); + private Vector getDatabaseTables() { + Vector tables = new Vector<>(); - bottomPanel.add(new JScrollPane(logPanel), gbh.defaults().spanX().spanY().fillBoth().get()); + String query = "SELECT RDB$RELATION_NAME\n" + + "FROM RDB$RELATIONS\n" + + "WHERE RDB$VIEW_BLR IS NULL \n" + + "AND (RDB$SYSTEM_FLAG IS NULL OR RDB$SYSTEM_FLAG = 0)\n" + + "AND RDB$RELATION_TYPE = 0 OR RDB$RELATION_TYPE = 2\n" + + "ORDER BY RDB$RELATION_NAME"; - setLayout(new GridBagLayout()); + try { + ResultSet rs = executor.getResultSet(query).getResultSet(); + while (rs.next()) + tables.add(rs.getString(1).trim()); - gbh.setXY(0, 0); + if (tables.isEmpty()) { + tables.add(null); + GUIUtilities.displayErrorMessage(bundleString("noTables")); + } - add(splitPane, gbh.defaults().spanX().spanY().fillBoth().get()); + } catch (SQLException | NullPointerException e) { + Log.error(e.getMessage(), e); - splitPane.setResizeWeight(0.7); + } finally { + executor.releaseResources(); + } - Driver driver = new DefaultDriverLoader().load(executor.getDatabaseConnection().getJDBCDriver()); - if (driver.getMajorVersion() < 4 || !executor.getDatabaseConnection().useNewAPI() || - executor.getDatabaseConnection().getMajorServerVersion() < 4) { - useBatchesBox.setEnabled(false); - batchLabel.setEnabled(false); - batchCountField.setEnabled(false); - printBatchStateBox.setEnabled(false); - StringBuilder sb = new StringBuilder(); - if (driver.getMajorVersion() < 4) - sb.append(bundles("UnsupportedDriver")); - if (!executor.getDatabaseConnection().useNewAPI()) { - if (sb.length() > 0) - sb.append(". "); - sb.append(bundles("OOAPINotUsed")); - } - if (executor.getDatabaseConnection().getMajorServerVersion() < 4) { - if (sb.length() > 0) - sb.append(". "); - sb.append(bundles("UnsupportedServer")); - } - batchNotAvailable.setVisible(true); - batchNotAvailable.setForeground(Color.RED); - batchNotAvailable.setText(sb.toString()); + return tables; + } + + private void loadTableColumns() { + + String selectedTable = getSelectedTable(); + if (selectedTable == null) + return; + + DatabaseHost host = null; + JPanel tabComponent = GUIUtilities.getDockedTabComponent(ConnectionsTreePanel.PROPERTY_KEY); + if (tabComponent instanceof ConnectionsTreePanel) { + ConnectionsTreePanel connectionsTreePanel = (ConnectionsTreePanel) tabComponent; + NamedObject namedObject = connectionsTreePanel.getHostNode(getSelectedConnection()).getDatabaseObject(); + host = (DatabaseHost) namedObject; } + + if (host == null) + return; + + List fieldGenerators = new ArrayList<>(); + for (DatabaseColumn column : host.getColumns(selectedTable)) + fieldGenerators.add(new FieldGenerator(column, executor)); + + fieldsPanel.setFieldGenerators(fieldGenerators); + } + + private void tablesComboTriggered(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) + loadTableColumns(); + } + + private void connectionsComboTriggered(ItemEvent e) { + if (e.getStateChange() != ItemEvent.SELECTED) + return; + + executor.setDatabaseConnection(getSelectedConnection()); + tablesModel.setElements(getDatabaseTables()); + } + + private String getSelectedTable() { + return (String) tablesCombo.getSelectedItem(); + } + + private DatabaseConnection getSelectedConnection() { + return (DatabaseConnection) connectionsCombo.getSelectedItem(); + } + +// --- TabView impl --- + + @Override + public boolean tabViewSelected() { + return true; + } + + @Override + public boolean tabViewDeselected() { + return true; + } + + @Override + public boolean tabViewClosing() { + return true; + } + +// --- + + private static String bundleString(String key, Object... args) { + return Bundles.get(GeneratorTestDataPanel.class, key, args); } } diff --git a/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java b/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java index d7f791028..32995e87f 100644 --- a/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java @@ -8,6 +8,7 @@ import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import java.awt.*; +import java.util.ArrayList; import java.util.List; public class FieldsPanel extends JPanel { @@ -22,14 +23,14 @@ public class FieldsPanel extends JPanel { private FieldGeneratorModel model; private JPanel rightPanel; - public FieldsPanel(List fieldGenerators) { - this.fieldGenerators = fieldGenerators; + public FieldsPanel() { + fieldGenerators = new ArrayList<>(); init(); } private void init() { rightPanel = new JPanel(); - rightPanel.setBorder(BorderFactory.createTitledBorder(bundledString("GeneratorMethod"))); + rightPanel.setBorder(BorderFactory.createTitledBorder(Bundles.get("GeneratorTestDataPanel.GeneratorMethod"))); rightPanel.setLayout(new GridBagLayout()); model = new FieldGeneratorModel(); tableFields = new JTable(model); @@ -64,10 +65,6 @@ public void setFieldGenerators(List fieldGenerators) { model.fireTableDataChanged(); } - private String bundledString(String key) { - return GeneratorTestDataPanel.bundles(key); - } - public class FieldGeneratorModel extends AbstractTableModel { diff --git a/src/org/executequery/gui/browser/generatortestdata/MethodGeneratorPanel.java b/src/org/executequery/gui/browser/generatortestdata/MethodGeneratorPanel.java index 378891566..c3a7663c6 100644 --- a/src/org/executequery/gui/browser/generatortestdata/MethodGeneratorPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/MethodGeneratorPanel.java @@ -4,6 +4,7 @@ import org.executequery.databaseobjects.DatabaseColumn; import org.executequery.gui.browser.GeneratorTestDataPanel; import org.executequery.gui.browser.generatortestdata.methodspanels.*; +import org.executequery.localization.Bundles; import org.executequery.log.Log; import org.underworldlabs.swing.layouts.GridBagHelper; @@ -114,6 +115,6 @@ public Object getTestDataObject() { } private String bundledString(String key) { - return GeneratorTestDataPanel.bundles(key); + return Bundles.get(GeneratorTestDataPanel.class, key); } } diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java index 604a80413..51f8eb7ce 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java @@ -2,6 +2,7 @@ import org.executequery.databaseobjects.DatabaseColumn; import org.executequery.gui.browser.GeneratorTestDataPanel; +import org.executequery.localization.Bundles; import javax.swing.*; @@ -20,6 +21,6 @@ public void setFirst(boolean first) { } protected String bundles(String key) { - return GeneratorTestDataPanel.bundles(key); + return Bundles.get(GeneratorTestDataPanel.class, key); } } diff --git a/src/org/executequery/gui/components/OpenConnectionsComboboxPanel.java b/src/org/executequery/gui/components/OpenConnectionsComboboxPanel.java deleted file mode 100644 index b87e2c788..000000000 --- a/src/org/executequery/gui/components/OpenConnectionsComboboxPanel.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.executequery.gui.components; - -import org.executequery.databasemediators.DatabaseConnection; -import org.executequery.datasource.ConnectionManager; -import org.executequery.gui.WidgetFactory; -import org.executequery.localization.Bundles; -import org.underworldlabs.swing.DynamicComboBoxModel; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionListener; -import java.util.Vector; - -public class OpenConnectionsComboboxPanel extends JPanel { - public JComboBox connectionsCombo; - public DynamicComboBoxModel connectionsModel; - - public OpenConnectionsComboboxPanel() { - init(); - } - - void init() { - Vector connections = ConnectionManager.getActiveConnections(); - connectionsModel = new DynamicComboBoxModel(connections); - connectionsCombo = WidgetFactory.createComboBox("connectionsCombo", connectionsModel); - - setLayout(new GridBagLayout()); - JLabel connLabel = new JLabel(Bundles.getCommon("connection")); - add(connLabel, new GridBagConstraints(0, 0, - 1, 1, 0, 0, - GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), - 0, 0)); - add(connectionsCombo, new GridBagConstraints(1, 0, - 1, 1, 1, 0, - GridBagConstraints.NORTHEAST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), - 0, 0)); - } - - public void addActionListener(ActionListener listener) { - connectionsCombo.addActionListener(listener); - } - - public DatabaseConnection getSelectedConnection() { - return (DatabaseConnection) connectionsCombo.getSelectedItem(); - } - - public void setSelectedConnection(DatabaseConnection connection) { - connectionsCombo.setSelectedItem(connection); - } -} diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index 649c07a0b..84b9ee399 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1540,8 +1540,7 @@ GeneratorTestDataPanel.Min=Min GeneratorTestDataPanel.MinByte=Min Byte GeneratorTestDataPanel.MinLength=Max Length GeneratorTestDataPanel.Name=Name -GeneratorTestDataPanel.OOAPINotUsed=The connection does not use the OO API. Use it when connecting -GeneratorTestDataPanel.OutputLog=Output to the errors log +GeneratorTestDataPanel.OutputLog=Enable execution logging GeneratorTestDataPanel.Random=Random GeneratorTestDataPanel.Required=Required GeneratorTestDataPanel.Selected=Selected/Deselected @@ -1554,14 +1553,19 @@ GeneratorTestDataPanel.TITLE=Test Data Generator GeneratorTestDataPanel.Table=Table GeneratorTestDataPanel.TableView=Table/View GeneratorTestDataPanel.Type=Type -GeneratorTestDataPanel.UnsupportedDriver=This driver does not support batch operations. Use Jaybird 4 or newer -GeneratorTestDataPanel.UnsupportedServer=This server does not support batch operations. Batch operations are available in FB 4/RDB 4 or newer GeneratorTestDataPanel.UseNull=Use NULL GeneratorTestDataPanel.UseOnlyThisSymbols=Use Only This Symbols GeneratorTestDataPanel.getFromList=Get from list GeneratorTestDataPanel.getFromOtherTable=Get from other table -GeneratorTestDataPanel.printBatchStateBox=Print states for batch execution GeneratorTestDataPanel.useBatchesBox=Use batches to insert data +GeneratorTestDataPanel.noTables=There are no tables for the selected connection +GeneratorTestDataPanel.noColumnsSelected=You must select at least one column for generate data +GeneratorTestDataPanel.nothingToGenerate=Records count couldn't be less than 1 +GeneratorTestDataPanel.batchesNotSupported=Selected connection doesn't support batch operations +GeneratorTestDataPanel.generationEndMessage=Test data generation ends\nRecords added: {0} from total {1}\nRecords failed: {2} +GeneratorTestDataPanel.batchGenerationEndMessage=Test data generation ends +GeneratorTestDataPanel.Generator=Generator +GeneratorTestDataPanel.Output=Output GotoCommand.goTo=Go To GotoCommand.lineNumber=Line Number: GrantManagerPanel.AllObjects=All Objects @@ -1964,11 +1968,11 @@ QueryEditor.autocommitDisable=Auto-commit is disabled QueryEditor.requestTransactionMessage=There is active transaction.You must commit or rollback it before closing form.\nFor commit click "yes", for rollback - "no". QueryEditor.script=script QueryEditor.title=Query Editor -QueryEditor.FileSavedTo= File saved to {0} +QueryEditor.FileSavedTo=File saved to {0} QueryEditorResultsPanel.DatabaseOutput=Database output QueryEditorResultsPanel.NO_ROWS=No rows selected -QueryEditorResultsPanel.ROWS_RETURNED= {0} rows returned -QueryEditorResultsPanel.ROW_RETURNED= {0} row returned +QueryEditorResultsPanel.ROWS_RETURNED={0} rows returned +QueryEditorResultsPanel.ROW_RETURNED={0} row returned QueryEditorResultsPanel.LIMIT_ON=Rows count limit enabled for {0} records QueryEditorResultsPanel.ResultSetTitle=Result Set QueryEditorResultsPanel.ResultSetTitleFiltered=- Filtered diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 5f3c8674d..bf6f8e96b 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1540,8 +1540,7 @@ GeneratorTestDataPanel.Min=Минимум GeneratorTestDataPanel.MinByte=Минимальный байт GeneratorTestDataPanel.MinLength=Минимальная длина GeneratorTestDataPanel.Name=Имя -GeneratorTestDataPanel.OOAPINotUsed=Соединение не использует OO API. Используйте его при подключении к БД -GeneratorTestDataPanel.OutputLog=Вывод ошибок в лог +GeneratorTestDataPanel.OutputLog=Логирование операций GeneratorTestDataPanel.Random=Случайно GeneratorTestDataPanel.Required=Обязательное GeneratorTestDataPanel.Selected=Выбрать @@ -1554,14 +1553,19 @@ GeneratorTestDataPanel.TITLE=Генератор тестовых данных GeneratorTestDataPanel.Table=Таблица GeneratorTestDataPanel.TableView=Таблица/Представление GeneratorTestDataPanel.Type=Тип -GeneratorTestDataPanel.UnsupportedDriver=Используемый драйвер не поддерживает пакетные операции. Используйте Jaybird 4 или более новый -GeneratorTestDataPanel.UnsupportedServer=Используемый сервер не поддерживает пакетные операции. Пакетные операции доступны в FB 4/RDB 4 или новее GeneratorTestDataPanel.UseNull=Использовать NULL GeneratorTestDataPanel.UseOnlyThisSymbols=Использовать только эти символы GeneratorTestDataPanel.getFromList=Получить из списка GeneratorTestDataPanel.getFromOtherTable=Получить из другой таблицы -GeneratorTestDataPanel.printBatchStateBox=Выводить результат выполнения пакетной операции GeneratorTestDataPanel.useBatchesBox=Использовать пакетную загрузку данных +GeneratorTestDataPanel.noTables=В выбранной базе данных нет таблиц +GeneratorTestDataPanel.noColumnsSelected=Вы должны выбрать хотя бы один столбец для генерации данных +GeneratorTestDataPanel.nothingToGenerate=Количество записей не может быть меньше 1 +GeneratorTestDataPanel.batchesNotSupported=Выбранное соединение не поддерживает пакетные операции +GeneratorTestDataPanel.generationEndMessage=Генерация тестовых данных завершена\nЗаписей добавлено: {0} из {1}\nЗаписей проигнорировано: {2} +GeneratorTestDataPanel.batchGenerationEndMessage=Генерация тестовых данных завершена +GeneratorTestDataPanel.Generator=Генератор +GeneratorTestDataPanel.Output=Вывод GotoCommand.goTo=Перейти к GotoCommand.lineNumber=Номер строки: GrantManagerPanel.AllObjects=Все объекты From f8daee912cd1c9c74ea9d20be8cbaca84c7d5cac Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 1 Aug 2024 14:35:50 +0300 Subject: [PATCH 031/141] Add errors logging when prepare comparing --- src/org/executequery/gui/browser/ComparerDBPanel.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/org/executequery/gui/browser/ComparerDBPanel.java b/src/org/executequery/gui/browser/ComparerDBPanel.java index 008ada572..6d41c128a 100644 --- a/src/org/executequery/gui/browser/ComparerDBPanel.java +++ b/src/org/executequery/gui/browser/ComparerDBPanel.java @@ -458,6 +458,7 @@ private boolean prepareComparer() { ConnectionMediator.getInstance().connect(targetConnection, true); } catch (DataSourceException e) { + Log.error(e.getMessage(), e); GUIUtilities.displayWarningMessage(bundleString("UnableCompareNoConnections")); return false; } @@ -527,6 +528,7 @@ private boolean prepareComparer() { } } catch (SQLException | NullPointerException e) { + Log.error(e.getMessage(), e); GUIUtilities.displayWarningMessage(bundleString("UnableCompareNoConnections")); return false; } From ce670b8cca8ae00e87d3df2249ce5e9f28c4611b Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 1 Aug 2024 15:30:14 +0300 Subject: [PATCH 032/141] Rework FieldsPanel class (RS-181680) --- .../generatortestdata/FieldGenerator.java | 10 +- .../generatortestdata/FieldsPanel.java | 102 ++++++++------- .../MethodGeneratorPanel.java | 116 +++++++++--------- 3 files changed, 120 insertions(+), 108 deletions(-) diff --git a/src/org/executequery/gui/browser/generatortestdata/FieldGenerator.java b/src/org/executequery/gui/browser/generatortestdata/FieldGenerator.java index ec95ce102..1aa46804f 100644 --- a/src/org/executequery/gui/browser/generatortestdata/FieldGenerator.java +++ b/src/org/executequery/gui/browser/generatortestdata/FieldGenerator.java @@ -4,7 +4,8 @@ import org.executequery.databaseobjects.DatabaseColumn; public class FieldGenerator { - MethodGeneratorPanel methodGeneratorPanel; + private final MethodGeneratorPanel methodGeneratorPanel; + private boolean selectedField; private DatabaseColumn column; @@ -37,11 +38,4 @@ public void setFirst() { methodGeneratorPanel.setFirst(); } - public void setMethodGeneratorPanel(MethodGeneratorPanel methodGeneratorPanel) { - this.methodGeneratorPanel = methodGeneratorPanel; - } - - public Object getNextDataTestObject() { - return getMethodGeneratorPanel().getTestDataObject(); - } } diff --git a/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java b/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java index 32995e87f..dc9756eae 100644 --- a/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java @@ -2,26 +2,25 @@ import org.executequery.gui.browser.GeneratorTestDataPanel; import org.executequery.localization.Bundles; +import org.underworldlabs.swing.layouts.GridBagHelper; import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import java.awt.*; import java.util.ArrayList; import java.util.List; public class FieldsPanel extends JPanel { + public final static int SELECTED_FIELD = 0; - public final static int NAME_FIELD = 1; - public final static int TYPE_FIELD = 2; - public final static int REQUIRED_FIELD = 3; + public final static int NAME_FIELD = SELECTED_FIELD + 1; + public final static int TYPE_FIELD = NAME_FIELD + 1; + public final static int REQUIRED_FIELD = TYPE_FIELD + 1; + + private JPanel rightPanel; private JTable tableFields; - private List fieldGenerators; - private final String[] colNames = Bundles.get(GeneratorTestDataPanel.class, - new String[]{"Selected", "Name", "Type", "Required"}); private FieldGeneratorModel model; - private JPanel rightPanel; + private List fieldGenerators; public FieldsPanel() { fieldGenerators = new ArrayList<>(); @@ -29,31 +28,44 @@ public FieldsPanel() { } private void init() { + rightPanel = new JPanel(); - rightPanel.setBorder(BorderFactory.createTitledBorder(Bundles.get("GeneratorTestDataPanel.GeneratorMethod"))); rightPanel.setLayout(new GridBagLayout()); + rightPanel.setBorder(BorderFactory.createTitledBorder(Bundles.get("GeneratorTestDataPanel.GeneratorMethod"))); + model = new FieldGeneratorModel(); tableFields = new JTable(model); - tableFields.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - @Override - public void valueChanged(ListSelectionEvent e) { - rightPanel.removeAll(); - if (tableFields.getSelectedRow() >= 0) - rightPanel.add(fieldGenerators.get(tableFields.getSelectedRow()).getMethodGeneratorPanel(), new GridBagConstraints(0, 0, GridBagConstraints.REMAINDER, GridBagConstraints.REMAINDER, 1, 1, - GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); - rightPanel.updateUI(); - } - }); - JScrollPane scroll = new JScrollPane(tableFields); + tableFields.getSelectionModel().addListSelectionListener(e -> reloadRightPanel()); + // --- - setLayout(new GridBagLayout()); + JScrollPane rightScrollPane = new JScrollPane(rightPanel); + rightScrollPane.setPreferredSize(new Dimension(400, 400)); + rightScrollPane.setMinimumSize(rightScrollPane.getPreferredSize()); + JScrollPane leftScrollPane = new JScrollPane(tableFields); + leftScrollPane.setPreferredSize(new Dimension(400, 400)); + leftScrollPane.setMinimumSize(leftScrollPane.getPreferredSize()); - JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scroll, new JScrollPane(rightPanel)); - add(splitPane, new GridBagConstraints(0, 0, GridBagConstraints.REMAINDER, GridBagConstraints.REMAINDER, 1, 1, - GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); + JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + splitPane.setTopComponent(leftScrollPane); + splitPane.setBottomComponent(rightScrollPane); splitPane.setResizeWeight(0.6); + + setLayout(new GridBagLayout()); + add(splitPane, new GridBagHelper().fillBoth().spanX().spanY().get()); + } + + private void reloadRightPanel() { + rightPanel.removeAll(); + if (tableFields.getSelectedRow() >= 0) { + rightPanel.add( + fieldGenerators.get(tableFields.getSelectedRow()).getMethodGeneratorPanel(), + new GridBagHelper().fillBoth().spanX().spanY().get() + ); + } + + rightPanel.updateUI(); } public List getFieldGenerators() { @@ -62,21 +74,15 @@ public List getFieldGenerators() { public void setFieldGenerators(List fieldGenerators) { this.fieldGenerators = fieldGenerators; - model.fireTableDataChanged(); + this.model.fireTableDataChanged(); } - public class FieldGeneratorModel extends AbstractTableModel { + private class FieldGeneratorModel extends AbstractTableModel { - - @Override - public int getRowCount() { - return fieldGenerators.size(); - } - - @Override - public int getColumnCount() { - return colNames.length; - } + private final String[] COLUMN_NAMES = Bundles.get( + GeneratorTestDataPanel.class, + new String[]{"Selected", "Name", "Type", "Required"} + ); @Override public Object getValueAt(int rowIndex, int columnIndex) { @@ -94,16 +100,16 @@ public Object getValueAt(int rowIndex, int columnIndex) { } } + @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - if (columnIndex == SELECTED_FIELD) { + if (columnIndex == SELECTED_FIELD) fieldGenerators.get(rowIndex).setSelectedField((boolean) aValue); - } } + @Override public Class getColumnClass(int columnIndex) { switch (columnIndex) { case SELECTED_FIELD: - return Boolean.class; case REQUIRED_FIELD: return Boolean.class; default: @@ -111,14 +117,26 @@ public Class getColumnClass(int columnIndex) { } } + @Override public String getColumnName(int column) { - return colNames[column]; + return COLUMN_NAMES[column]; } + @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return columnIndex == SELECTED_FIELD; } + @Override + public int getRowCount() { + return fieldGenerators.size(); + } + + @Override + public int getColumnCount() { + return COLUMN_NAMES.length; + } + + } // FieldGeneratorModel class - } } diff --git a/src/org/executequery/gui/browser/generatortestdata/MethodGeneratorPanel.java b/src/org/executequery/gui/browser/generatortestdata/MethodGeneratorPanel.java index c3a7663c6..7d4c8fad1 100644 --- a/src/org/executequery/gui/browser/generatortestdata/MethodGeneratorPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/MethodGeneratorPanel.java @@ -5,28 +5,25 @@ import org.executequery.gui.browser.GeneratorTestDataPanel; import org.executequery.gui.browser.generatortestdata.methodspanels.*; import org.executequery.localization.Bundles; -import org.executequery.log.Log; import org.underworldlabs.swing.layouts.GridBagHelper; import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -public class MethodGeneratorPanel extends JPanel implements ActionListener { - - DatabaseColumn column; - AbstractMethodPanel methodPanel; - private ButtonGroup buttonGroup; - public final static int COUNT_METHODS = 4; - private JPanel bottomPanel; - private DefaultStatementExecutor executor; +public class MethodGeneratorPanel extends JPanel { public final static int RANDOM = 0; public final static int FROM_TABLE = 1; public final static int FROM_LIST = 2; public final static int AUTOINCREMENT = 3; - AbstractMethodPanel[] methodPanels; + public final static int COUNT_METHODS = 4; + + private final DatabaseColumn column; + private final DefaultStatementExecutor executor; + + private JPanel mainPanel; private JRadioButton[] radioButtons; + private AbstractMethodPanel methodPanel; + private AbstractMethodPanel[] methodPanels; public MethodGeneratorPanel(DatabaseColumn column, DefaultStatementExecutor executor) { this.column = column; @@ -35,79 +32,81 @@ public MethodGeneratorPanel(DatabaseColumn column, DefaultStatementExecutor exec } private void init() { - methodPanels = new AbstractMethodPanel[COUNT_METHODS]; + radioButtons = new JRadioButton[COUNT_METHODS]; radioButtons[RANDOM] = new JRadioButton(bundledString("Random")); radioButtons[FROM_TABLE] = new JRadioButton(bundledString("getFromOtherTable")); radioButtons[FROM_LIST] = new JRadioButton(bundledString("getFromList")); radioButtons[AUTOINCREMENT] = new JRadioButton(bundledString("Autoincrement")); - buttonGroup = new ButtonGroup(); + + ButtonGroup buttonGroup = new ButtonGroup(); + methodPanels = new AbstractMethodPanel[COUNT_METHODS]; for (int i = 0; i < methodPanels.length; i++) { methodPanels[i] = null; - radioButtons[i].addActionListener(this); + radioButtons[i].addActionListener(e -> refresh()); buttonGroup.add(radioButtons[i]); } - bottomPanel = new JPanel(); - bottomPanel.setLayout(new GridBagLayout()); + + mainPanel = new JPanel(); + mainPanel.setLayout(new GridBagLayout()); setLayout(new GridBagLayout()); - GridBagHelper gbh = new GridBagHelper(); - GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0); - gbh.setDefaults(gbc); - gbh.setXY(0, -1); + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().setInsets(5, 5, 5, 5).fillHorizontally().setXY(0, -1); for (int i = 0; i < radioButtons.length; i++) { - if (i != AUTOINCREMENT || (!column.getFormattedDataType().contains("CHAR") && !column.getFormattedDataType().contains("BLOB") && !column.getFormattedDataType().contains("BOOLEAN"))) - add(radioButtons[i], gbh.defaults().nextRowFirstCol().spanX().get()); + if (i != AUTOINCREMENT + || (!column.getFormattedDataType().contains("CHAR") + && !column.getFormattedDataType().contains("BLOB") + && !column.getFormattedDataType().contains("BOOLEAN")) + ) { + add(radioButtons[i], gbh.nextRowFirstCol().spanX().get()); + } } - add(bottomPanel, gbh.defaults().fillBoth().nextRowFirstCol().spanX().spanY().get()); - radioButtons[RANDOM].setSelected(true); - refresh(); - } - @Override - public void actionPerformed(ActionEvent e) { + add(mainPanel, gbh.nextRowFirstCol().setWidth(1).fillBoth().spanX().spanY().get()); + radioButtons[RANDOM].setSelected(true); refresh(); } private void refresh() { - bottomPanel.removeAll(); - GridBagConstraints gbc = new GridBagConstraints(0, 0, GridBagConstraints.REMAINDER, GridBagConstraints.REMAINDER, 1, 1, - GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0); + for (int i = 0; i < radioButtons.length; i++) { - if (radioButtons[i].isSelected()) { - if (methodPanels[i] != null) - methodPanel = methodPanels[i]; - else { - switch (i) { - case RANDOM: - methodPanel = new RandomMethodPanel(column); - break; - case FROM_TABLE: - methodPanel = new GetFromOtherTablePanel(column, executor); - break; - case FROM_LIST: - methodPanel = new GetFromListPanel(column); - break; - case AUTOINCREMENT: - methodPanel = new AutoincrementPanel(column); - break; - } - methodPanels[i] = methodPanel; - } + + if (!radioButtons[i].isSelected()) + continue; + + if (methodPanels[i] != null) { + methodPanel = methodPanels[i]; break; } + + switch (i) { + case RANDOM: + methodPanel = new RandomMethodPanel(column); + break; + case FROM_TABLE: + methodPanel = new GetFromOtherTablePanel(column, executor); + break; + case FROM_LIST: + methodPanel = new GetFromListPanel(column); + break; + case AUTOINCREMENT: + methodPanel = new AutoincrementPanel(column); + break; + } + + methodPanels[i] = methodPanel; + break; } - bottomPanel.add(methodPanel, gbc); + + mainPanel.removeAll(); + mainPanel.add(methodPanel, new GridBagHelper().fillBoth().spanX().spanY().get()); updateUI(); } public void setFirst() { - try { + if (methodPanel != null) methodPanel.setFirst(true); - } catch (NullPointerException e) { - Log.debug("methodPanel not exist"); - } } public Object getTestDataObject() { @@ -117,4 +116,5 @@ public Object getTestDataObject() { private String bundledString(String key) { return Bundles.get(GeneratorTestDataPanel.class, key); } + } From 6cca731fa9af7ca14d15540e8da82bf65e2c2261 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 2 Aug 2024 09:50:23 +0300 Subject: [PATCH 033/141] Rework RandomMethodPanel class (RS-181680) --- .../generatortestdata/FieldsPanel.java | 2 +- .../methodspanels/AbstractMethodPanel.java | 68 +- .../methodspanels/AutoincrementPanel.java | 24 +- .../methodspanels/GetFromListPanel.java | 11 +- .../methodspanels/GetFromOtherTablePanel.java | 6 +- .../methodspanels/RandomMethodPanel.java | 817 +++++++++--------- .../localization/resources.properties | 2 +- .../localization/resources_ru.properties | 2 +- 8 files changed, 515 insertions(+), 417 deletions(-) diff --git a/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java b/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java index dc9756eae..656e879dc 100644 --- a/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java @@ -40,7 +40,7 @@ private void init() { // --- JScrollPane rightScrollPane = new JScrollPane(rightPanel); - rightScrollPane.setPreferredSize(new Dimension(400, 400)); + rightScrollPane.setPreferredSize(new Dimension(600, 400)); rightScrollPane.setMinimumSize(rightScrollPane.getPreferredSize()); JScrollPane leftScrollPane = new JScrollPane(tableFields); diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java index 51f8eb7ce..c57a7c701 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java @@ -1,6 +1,7 @@ package org.executequery.gui.browser.generatortestdata.methodspanels; import org.executequery.databaseobjects.DatabaseColumn; +import org.executequery.databaseobjects.T; import org.executequery.gui.browser.GeneratorTestDataPanel; import org.executequery.localization.Bundles; @@ -16,11 +17,76 @@ public AbstractMethodPanel(DatabaseColumn col) { public abstract Object getTestDataObject(); + protected static boolean isNumeric(String dataType) { + return dataType.contentEquals(T.BIGINT) + || dataType.contentEquals(T.INT128) + || dataType.contentEquals(T.INTEGER) + || dataType.contentEquals(T.SMALLINT) + || dataType.contentEquals(T.DOUBLE_PRECISION) + || dataType.contentEquals(T.FLOAT) + || dataType.startsWith(T.DECIMAL) + || dataType.startsWith(T.NUMERIC) + || dataType.startsWith(T.DECFLOAT); + } + + protected static boolean isDecimal(String dataType) { + return dataType.contentEquals(T.DOUBLE_PRECISION) + || dataType.contentEquals(T.FLOAT) + || dataType.startsWith(T.DECIMAL) + || dataType.startsWith(T.NUMERIC) + || dataType.startsWith(T.DECFLOAT); + } + + protected static boolean isSmallint(String dataType) { + return dataType.contentEquals(T.SMALLINT); + } + + protected static boolean isInteger(String dataType) { + return dataType.contentEquals(T.INTEGER); + } + + protected static boolean isBigint(String dataType) { + return dataType.contentEquals(T.BIGINT) || dataType.contentEquals(T.INT128); + } + + protected static boolean isChar(String dataType) { + return dataType.contains(T.CHAR); + } + + protected static boolean isDate(String dataType) { + return dataType.contentEquals(T.DATE); + } + + protected static boolean isTime(String dataType) { + return dataType.contentEquals(T.TIME); + } + + protected static boolean isTimestamp(String dataType) { + return dataType.contentEquals(T.TIMESTAMP); + } + + protected static boolean isZonedTime(String dataType) { + return dataType.contentEquals(T.TIME_WITH_TIMEZONE); + } + + protected static boolean isZonedTimestamp(String dataType) { + return dataType.contentEquals(T.TIMESTAMP_WITH_TIMEZONE); + } + + protected static boolean isBlob(String dataType) { + return dataType.contains(T.BLOB); + } + + protected static boolean isBoolean(String dataType) { + return dataType.contains(T.BOOLEAN); + } + public void setFirst(boolean first) { this.first = first; } - protected String bundles(String key) { + protected String bundleString(String key) { return Bundles.get(GeneratorTestDataPanel.class, key); } + } diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/AutoincrementPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/AutoincrementPanel.java index 5622a3275..f9d663155 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/AutoincrementPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/AutoincrementPanel.java @@ -95,10 +95,10 @@ private void init() { } gbh.setXY(0, 0); - JLabel label = new JLabel(bundles("StartValue")); + JLabel label = new JLabel(bundleString("StartValue")); settingsPanel.add(label, gbh.defaults().setLabelDefault().get()); settingsPanel.add(startValueField, gbh.defaults().nextCol().setMaxWeightX().get()); - label = new JLabel(bundles("Iteration")); + label = new JLabel(bundleString("Iteration")); settingsPanel.add(label, gbh.defaults().nextCol().setLabelDefault().get()); settingsPanel.add(iterationField, gbh.defaults().nextCol().setMaxWeightX().get()); @@ -115,9 +115,9 @@ private void init() { iterationTime.setTime(LocalTime.of(1, 1, 1)); gbh.setXY(0, 0); - settingsPanel.add(new JLabel(bundles("StartValue")), gbh.defaults().setLabelDefault().get()); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.defaults().setLabelDefault().get()); settingsPanel.add(startValueTime, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundles("Iteration")), gbh.defaults().nextCol().setLabelDefault().get()); + settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.defaults().nextCol().setLabelDefault().get()); settingsPanel.add(iterationTime, gbh.defaults().nextCol().setMaxWeightX().get()); } @@ -132,9 +132,9 @@ private void init() { iterationTime.setTime(LocalTime.of(1, 1, 1)); gbh.setXY(0, 0); - settingsPanel.add(new JLabel(bundles("StartValue")), gbh.defaults().setLabelDefault().get()); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.defaults().setLabelDefault().get()); settingsPanel.add(startValueTimezone, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundles("Iteration")), gbh.defaults().nextCol().setLabelDefault().get()); + settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.defaults().nextCol().setLabelDefault().get()); settingsPanel.add(iterationTime, gbh.defaults().nextCol().setMaxWeightX().get()); } @@ -145,9 +145,9 @@ private void init() { iterationDate = new DateDifferenceSetter(); - settingsPanel.add(new JLabel(bundles("StartValue")), gbh.defaults().setLabelDefault().get()); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.defaults().setLabelDefault().get()); settingsPanel.add(startValueDate, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundles("Iteration")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); + settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); settingsPanel.add(iterationDate, gbh.defaults().nextCol().setMaxWeightX().get()); } @@ -164,9 +164,9 @@ private void init() { iterationTime.setTime(LocalTime.of(0, 0, 0)); gbh.setXY(0, 0); - settingsPanel.add(new JLabel(bundles("StartValue")), gbh.defaults().setLabelDefault().get()); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.defaults().setLabelDefault().get()); settingsPanel.add(startValueDateTime, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundles("Iteration")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); + settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); settingsPanel.add(iterationDate, gbh.defaults().nextCol().setMaxWeightX().get()); settingsPanel.add(iterationTime, gbh.defaults().nextRow().setMaxWeightX().get()); } @@ -184,9 +184,9 @@ private void init() { iterationTime.setTime(LocalTime.of(0, 0, 0)); gbh.setXY(0, 0); - settingsPanel.add(new JLabel(bundles("StartValue")), gbh.defaults().setLabelDefault().get()); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.defaults().setLabelDefault().get()); settingsPanel.add(startValueDateTimezone, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundles("Iteration")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); + settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); settingsPanel.add(iterationDate, gbh.defaults().nextCol().setMaxWeightX().get()); settingsPanel.add(iterationTime, gbh.defaults().nextRow().setMaxWeightX().get()); } diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromListPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromListPanel.java index 63ec1e3d1..0a1e65c72 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromListPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromListPanel.java @@ -5,7 +5,6 @@ import org.executequery.gui.browser.GeneratorTestDataPanel; import org.executequery.gui.text.SimpleTextArea; import org.executequery.localization.Bundles; -import org.executequery.localization.LocaleManager; import org.underworldlabs.jdbc.DataSourceException; import org.underworldlabs.swing.layouts.GridBagHelper; @@ -98,12 +97,12 @@ public void actionPerformed(ActionEvent e) { GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0); gbh.setDefaults(gbc); - String labelStr = bundles("ChooseDirectory"); + String labelStr = bundleString("ChooseDirectory"); if (!col.getFormattedDataType().contains("BLOB")) { - JLabel label = new JLabel(bundles("Source")); + JLabel label = new JLabel(bundleString("Source")); add(label, gbh.defaults().setLabelDefault().get()); add(sourceBox, gbh.defaults().nextCol().spanX().get()); - labelStr = bundles("ChooseFile"); + labelStr = bundleString("ChooseFile"); } labelFile = new JLabel(labelStr); if (!col.getFormattedDataType().contains("BLOB")) { @@ -112,11 +111,11 @@ public void actionPerformed(ActionEvent e) { fileSelectButton.setVisible(false); } - JLabel label = new JLabel(bundles("Method")); + JLabel label = new JLabel(bundleString("Method")); add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); add(orderBox, gbh.defaults().nextCol().spanX().get()); if (!col.getFormattedDataType().contains("BLOB")) { - label = new JLabel(bundles("Delimiter")); + label = new JLabel(bundleString("Delimiter")); add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); add(delimiterField, gbh.defaults().nextCol().spanX().get()); } diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java index 966ea5f9c..e70df8899 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java @@ -54,19 +54,19 @@ public void itemStateChanged(ItemEvent e) { GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0); gbh.setDefaults(gbc); - JLabel label = new JLabel(bundles("TableView")); + JLabel label = new JLabel(bundleString("TableView")); add(label, gbh.defaults().setLabelDefault().get()); add(tableBox, gbh.defaults().nextCol().spanX().get()); - label = new JLabel(bundles("Column")); + label = new JLabel(bundleString("Column")); add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); add(colBox, gbh.defaults().nextCol().spanX().get()); - label = new JLabel(bundles("CountRecords")); + label = new JLabel(bundleString("CountRecords")); add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java index fce6a33b9..ce1d599d3 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java @@ -3,6 +3,7 @@ import com.github.lgooddatepicker.components.DatePicker; import org.executequery.databaseobjects.DatabaseColumn; import org.executequery.databaseobjects.T; +import org.executequery.gui.WidgetFactory; import org.executequery.gui.text.SimpleTextArea; import org.underworldlabs.jdbc.DataSourceException; import org.underworldlabs.swing.*; @@ -19,26 +20,34 @@ import java.util.Random; public class RandomMethodPanel extends AbstractMethodPanel { + + private JCheckBox useNullCheck; private JPanel settingsPanel; - private JTextField maxField; - private JTextField minField; + + private NumberTextField maxField; + private NumberTextField minField; + private NumberTextField symbolsAfterComma; + + private DatePicker maxDate; + private DatePicker minDate; + private TimePicker minTime; private TimePicker maxTime; + private ZonedTimePicker minTimezone; private ZonedTimePicker maxTimezone; + private TimestampPicker minDateTime; private TimestampPicker maxDateTime; + private ZonedTimestampPicker minDateTimezone; private ZonedTimestampPicker maxDateTimezone; - private DatePicker maxDate; - private DatePicker minDate; - private NumberTextField countSymbolsAfterComma; - private JCheckBox useOnlyThisSymbolsBox; - private SimpleTextArea useOnlyThisSymbolsField; - //private JScrollPane scrollSymbols; + + private JCheckBox useSelectedCharsetCheck; + private SimpleTextArea useSelectedCharsetField; + private JTextField maxByteField; private JTextField minByteField; - private JCheckBox nullBox; public RandomMethodPanel(DatabaseColumn col) { super(col); @@ -46,444 +55,468 @@ public RandomMethodPanel(DatabaseColumn col) { } private void init() { - countSymbolsAfterComma = new NumberTextField(); - countSymbolsAfterComma.setText("1"); - nullBox = new JCheckBox(bundles("UseNull")); + settingsPanel = new JPanel(); settingsPanel.setLayout(new GridBagLayout()); - GridBagHelper gbh = new GridBagHelper(); - GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0); - gbh.setDefaults(gbc); - - if (col.getFormattedDataType().contentEquals(T.BIGINT) - || col.getFormattedDataType().contentEquals(T.INT128) - || col.getFormattedDataType().contentEquals(T.INTEGER) - || col.getFormattedDataType().contentEquals(T.SMALLINT) - || col.getFormattedDataType().contentEquals(T.DOUBLE_PRECISION) - || col.getFormattedDataType().contentEquals(T.FLOAT) - || col.getFormattedDataType().startsWith(T.DECIMAL) - || col.getFormattedDataType().startsWith(T.NUMERIC) - || col.getFormattedDataType().startsWith(T.DECFLOAT) - ) { - - if (col.getFormattedDataType().contentEquals(T.BIGINT) - || col.getFormattedDataType().contentEquals(T.INT128) - || col.getFormattedDataType().contentEquals(T.DOUBLE_PRECISION) - || col.getFormattedDataType().contentEquals(T.FLOAT) - || col.getFormattedDataType().startsWith(T.DECIMAL) - || col.getFormattedDataType().startsWith(T.NUMERIC) - || col.getFormattedDataType().startsWith(T.DECFLOAT) - ) { - maxField = new JTextField(); - minField = new JTextField(); - if (col.getFormattedDataType().contentEquals("BIGINT")) { - maxField.setText("9223372036854775807"); - minField.setText("-9223372036854775808"); - } else { - maxField.setText("1"); - minField.setText("0"); - } - } else { - maxField = new NumberTextField(); - minField = new NumberTextField(); - if (col.getFormattedDataType().contentEquals(T.INTEGER)) { - maxField.setText("" + Integer.MAX_VALUE); - minField.setText("" + Integer.MIN_VALUE); - } else { - maxField.setText("" + 32767); - minField.setText("" + (-32768)); - } - } + useNullCheck = WidgetFactory.createCheckBox("useNullCheck", bundleString("UseNull")); + // --- init settings panel --- - JLabel label = new JLabel(bundles("Min")); - settingsPanel.add(label, gbh.defaults().setLabelDefault().get()); - settingsPanel.add(minField, gbh.defaults().nextCol().setMaxWeightX().get()); - - label = new JLabel(bundles("Max")); - settingsPanel.add(label, gbh.defaults().nextCol().setLabelDefault().get()); - settingsPanel.add(maxField, gbh.defaults().nextCol().setMaxWeightX().get()); - if (col.getFormattedDataType().contentEquals(T.DOUBLE_PRECISION) - || col.getFormattedDataType().contentEquals(T.FLOAT) - || col.getFormattedDataType().startsWith(T.DECIMAL) - || col.getFormattedDataType().startsWith(T.NUMERIC) - || col.getFormattedDataType().startsWith(T.DECFLOAT) - ) { - label = new JLabel(bundles("CountDigitsAfterComma")); - settingsPanel.add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); - settingsPanel.add(countSymbolsAfterComma, gbh.defaults().nextCol().spanX().get()); - } + String dataType = col.getFormattedDataType(); + if (isNumeric(dataType)) { + initNumericPanel(dataType); - } + } else if (isChar(dataType)) { + initCharPanel(); - if (col.getFormattedDataType().contentEquals(T.TIME)) { + } else if (isDate(dataType)) { + initDatePanel(); - minTime = new TimePicker(); - minTime.setVisibleNullCheck(false); - minTime.setTime(LocalTime.MIN); + } else if (isTime(dataType)) { + initTimePanel(); - maxTime = new TimePicker(); - maxTime.setVisibleNullCheck(false); - maxTime.setTime(LocalTime.MAX); + } else if (isTimestamp(dataType)) { + initTimestampPanel(); - settingsPanel.add(new JLabel(bundles("Min")), gbh.defaults().setLabelDefault().get()); - settingsPanel.add(minTime, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundles("Max")), gbh.defaults().nextCol().setLabelDefault().get()); - settingsPanel.add(maxTime, gbh.defaults().nextCol().setMaxWeightX().get()); - } + } else if (isZonedTime(dataType)) { + initZonedTimePanel(); + + } else if (isZonedTimestamp(dataType)) { + initZonedTimestampPanel(); + + } else if (isBlob(dataType)) + initBlobPanel(); - if (col.getFormattedDataType().contentEquals(T.TIME_WITH_TIMEZONE)) { + // --- base --- - minTimezone = new ZonedTimePicker(); - minTimezone.setVisibleNullCheck(false); - minTimezone.setTime(LocalTime.MIN); + setLayout(new GridBagLayout()); + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + add(useNullCheck, gbh.spanX().get()); + add(settingsPanel, gbh.nextRowFirstCol().topGap(5).fillBoth().spanY().get()); + } + + private void initNumericPanel(String dataType) { + + maxField = WidgetFactory.createNumberTextField("maxField"); + minField = WidgetFactory.createNumberTextField("minField"); + + if (dataType.contentEquals(T.INTEGER)) { + maxField.setText("" + Integer.MAX_VALUE); + minField.setText("" + Integer.MIN_VALUE); - maxTimezone = new ZonedTimePicker(); - maxTimezone.setVisibleNullCheck(false); - maxTimezone.setTime(LocalTime.MAX); + } else if (dataType.contentEquals(T.SMALLINT)) { + maxField.setText("" + 32767); + minField.setText("" + (-32768)); - settingsPanel.add(new JLabel(bundles("Min")), gbh.defaults().setLabelDefault().get()); - settingsPanel.add(minTimezone, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundles("Max")), gbh.defaults().nextCol().setLabelDefault().get()); - settingsPanel.add(maxTimezone, gbh.defaults().nextCol().setMaxWeightX().get()); + } else if (dataType.contentEquals("BIGINT")) { + maxField.setText("9223372036854775807"); + minField.setText("-9223372036854775808"); + + } else { + maxField.setText("1"); + minField.setText("0"); } - if (col.getFormattedDataType().contentEquals(T.DATE)) { - minDate = new DatePicker(); - minDate.setDate(LocalDate.of(0, 1, 1)); - maxDate = new DatePicker(); - maxDate.setDate(LocalDate.of(9999, 1, 1)); - JLabel label = new JLabel(bundles("Min")); - settingsPanel.add(label, gbh.defaults().setLabelDefault().get()); - settingsPanel.add(minDate, gbh.defaults().nextCol().setMaxWeightX().get()); - label = new JLabel(bundles("Max")); - settingsPanel.add(label, gbh.defaults().nextCol().setLabelDefault().get()); - settingsPanel.add(maxDate, gbh.defaults().nextCol().setMaxWeightX().get()); + if (isDecimal(dataType)) { + symbolsAfterComma = WidgetFactory.createNumberTextField("symbolsAfterComma"); + symbolsAfterComma.setText("1"); } - if (col.getFormattedDataType().contentEquals(T.TIMESTAMP)) { + // --- arrange --- - minDateTime = new TimestampPicker(); - minDateTime.setVisibleNullCheck(false); - minDateTime.setDateTime(LocalDateTime.of(LocalDate.of(0, 1, 1), LocalTime.of(0, 0, 0))); + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("Min")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(minField, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Max")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(maxField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + if (isDecimal(dataType)) { + settingsPanel.add(new JLabel(bundleString("CountDigitsAfterComma")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(symbolsAfterComma, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + } + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } - maxDateTime = new TimestampPicker(); - maxDateTime.setVisibleNullCheck(false); - maxDateTime.setDateTime(LocalDateTime.of(LocalDate.of(9999, 12, 31), LocalTime.of(23, 59, 59))); + private void initCharPanel() { - settingsPanel.add(new JLabel(bundles("Min")), gbh.defaults().setLabelDefault().get()); - settingsPanel.add(minDateTime, gbh.defaults().nextCol().spanX().get()); - settingsPanel.add(new JLabel(bundles("Max")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); - settingsPanel.add(maxDateTime, gbh.defaults().nextCol().spanX().get()); - } + maxField = WidgetFactory.createNumberTextField("maxField"); + maxField.setText("" + col.getColumnSize()); + maxField.setEnableNegativeNumbers(false); - if (col.getFormattedDataType().contentEquals(T.TIMESTAMP_WITH_TIMEZONE)) { + minField = WidgetFactory.createNumberTextField("minField"); + minField.setEnableNegativeNumbers(false); + minField.setText("0"); - minDateTimezone = new ZonedTimestampPicker(); - minDateTimezone.setVisibleNullCheck(false); - minDateTimezone.setDateTime(LocalDateTime.of(LocalDate.of(0, 1, 1), LocalTime.of(0, 0, 0))); + useSelectedCharsetField = new SimpleTextArea(); + useSelectedCharsetCheck = WidgetFactory.createCheckBox("useSelectedCharsetCheck", bundleString("UseOnlyThisSymbols")); - maxDateTimezone = new ZonedTimestampPicker(); - maxDateTimezone.setVisibleNullCheck(false); - maxDateTimezone.setDateTime(LocalDateTime.of(LocalDate.of(9999, 12, 31), LocalTime.of(23, 59, 59))); + // --- arrange --- - settingsPanel.add(new JLabel(bundles("Min")), gbh.defaults().setLabelDefault().get()); - settingsPanel.add(minDateTimezone, gbh.defaults().nextCol().spanX().get()); - settingsPanel.add(new JLabel(bundles("Max")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); - settingsPanel.add(maxDateTimezone, gbh.defaults().nextCol().spanX().get()); - } + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("MinLength")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(minField, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("MaxLength")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(maxField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(useSelectedCharsetCheck, gbh.nextRowFirstCol().leftGap(0).spanX().get()); + settingsPanel.add(useSelectedCharsetField, gbh.nextRowFirstCol().setMaxWeightY().fillBoth().spanY().get()); + } - if (col.getFormattedDataType().contains(T.CHAR)) { - maxField = new NumberTextField(false); - minField = new NumberTextField(false); - maxField.setText("" + col.getColumnSize()); - minField.setText("0"); - useOnlyThisSymbolsBox = new JCheckBox(bundles("UseOnlyThisSymbols")); - useOnlyThisSymbolsField = new SimpleTextArea(); + private void initDatePanel() { - //scrollSymbols = new JScrollPane(useOnlyThisSymbolsField); - //scrollSymbols.setVerticalScrollBar(scrollSymbols.createVerticalScrollBar()); + minDate = new DatePicker(); + minDate.setDate(LocalDate.of(0, 1, 1)); - JLabel label = new JLabel(bundles("MinLength")); + maxDate = new DatePicker(); + maxDate.setDate(LocalDate.of(9999, 1, 1)); - settingsPanel.add(label, gbh.defaults().setLabelDefault().get()); - settingsPanel.add(minField, gbh.defaults().nextCol().setMaxWeightX().get()); - label = new JLabel(bundles("MaxLength")); - settingsPanel.add(label, gbh.defaults().nextCol().setLabelDefault().get()); - settingsPanel.add(maxField, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(useOnlyThisSymbolsBox, gbh.defaults().nextRowFirstCol().spanX().get()); - settingsPanel.add(useOnlyThisSymbolsField, gbh.defaults().nextRowFirstCol().fillBoth().spanX().spanY().get()); - } - if (col.getFormattedDataType().contains(T.BLOB)) { - maxField = new NumberTextField(false); - minField = new NumberTextField(false); - maxField.setText("" + col.getColumnSize()); - minField.setText("0"); - maxByteField = new NumberTextField(); - minByteField = new NumberTextField(); - maxByteField.setText("255"); - minByteField.setText("0"); + // --- arrange --- + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("Min")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(minDate, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Max")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(maxDate, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } - JLabel label = new JLabel(bundles("MinLength")); + private void initTimePanel() { - settingsPanel.add(label, gbh.defaults().setLabelDefault().get()); - settingsPanel.add(minField, gbh.defaults().nextCol().setMaxWeightX().get()); - label = new JLabel(bundles("MaxLength")); - settingsPanel.add(label, gbh.defaults().nextCol().setLabelDefault().get()); - settingsPanel.add(maxField, gbh.defaults().nextCol().setMaxWeightX().get()); - label = new JLabel(bundles("MinByte")); + minTime = new TimePicker(); + minTime.setTime(LocalTime.MIN); + minTime.setVisibleNullCheck(false); - settingsPanel.add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); - settingsPanel.add(minByteField, gbh.defaults().nextCol().setMaxWeightX().get()); - label = new JLabel(bundles("MaxByte")); - settingsPanel.add(label, gbh.defaults().nextCol().setLabelDefault().get()); - settingsPanel.add(maxByteField, gbh.defaults().nextCol().setMaxWeightX().get()); + maxTime = new TimePicker(); + maxTime.setTime(LocalTime.MAX); + maxTime.setVisibleNullCheck(false); + // --- arrange --- - } - setLayout(new GridBagLayout()); - gbh.setXY(0, 0); - add(nullBox, gbh.defaults().spanX().get()); - if (col.getFormattedDataType().contains(T.CHAR)) { - add(settingsPanel, gbh.defaults().nextRowFirstCol().fillBoth().spanX().spanY().get()); - } else { - add(settingsPanel, gbh.defaults().nextRowFirstCol().spanX().get()); - add(new JPanel(), gbh.defaults().nextRowFirstCol().spanX().spanY().get()); - } + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("Min")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(minTime, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Max")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(maxTime, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } + + private void initTimestampPanel() { + + LocalDateTime minValue = LocalDateTime.of(LocalDate.of(0, 1, 1), LocalTime.of(0, 0, 0)); + LocalDateTime maxValue = LocalDateTime.of(LocalDate.of(9999, 12, 31), LocalTime.of(23, 59, 59)); + + minDateTime = new TimestampPicker(); + minDateTime.setDateTime(minValue); + minDateTime.setVisibleNullCheck(false); + + maxDateTime = new TimestampPicker(); + maxDateTime.setDateTime(maxValue); + maxDateTime.setVisibleNullCheck(false); + // --- arrange --- + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("Min")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(minDateTime, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Max")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(maxDateTime, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); } - private BigInteger getBigint() { - BigInteger bigint = new BigInteger(62, new Random()); - BigInteger max = new BigInteger(maxField.getText()); - BigInteger min = new BigInteger(minField.getText()); - if (max.compareTo(min) == -1) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - BigInteger zero = new BigInteger("0"); + private void initZonedTimePanel() { + + minTimezone = new ZonedTimePicker(); + minTimezone.setTime(LocalTime.MIN); + minTimezone.setVisibleNullCheck(false); + + maxTimezone = new ZonedTimePicker(); + maxTimezone.setTime(LocalTime.MAX); + maxTimezone.setVisibleNullCheck(false); + + // --- arrange --- + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("Min")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(minTimezone, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Max")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(maxTimezone, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } + + private void initZonedTimestampPanel() { + + LocalDateTime minValue = LocalDateTime.of(LocalDate.of(0, 1, 1), LocalTime.of(0, 0, 0)); + LocalDateTime maxValue = LocalDateTime.of(LocalDate.of(9999, 12, 31), LocalTime.of(23, 59, 59)); + + minDateTimezone = new ZonedTimestampPicker(); + minDateTimezone.setVisibleNullCheck(false); + minDateTimezone.setDateTime(minValue); + + maxDateTimezone = new ZonedTimestampPicker(); + maxDateTimezone.setVisibleNullCheck(false); + maxDateTimezone.setDateTime(maxValue); + + // --- arrange --- + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("Min")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(minDateTimezone, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Max")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(maxDateTimezone, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } + + private void initBlobPanel() { + + maxField = WidgetFactory.createNumberTextField("maxField"); + maxField.setText("" + col.getColumnSize()); + maxField.setEnableNegativeNumbers(false); + + minField = WidgetFactory.createNumberTextField("minField"); + minField.setEnableNegativeNumbers(false); + minField.setText("0"); + + maxByteField = WidgetFactory.createNumberTextField("maxByteField"); + maxByteField.setText("255"); + + minByteField = WidgetFactory.createNumberTextField("minByteField"); + minByteField.setText("0"); + + // --- arrange --- + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("MinLength")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(minField, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("MaxLength")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(maxField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("MinByte")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(minByteField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("MaxByte")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(maxByteField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } + + // --- + + private BigInteger getBigintValue() { BigInteger diapason; + BigInteger zero = new BigInteger("0"); + + BigInteger min = new BigInteger(minField.getText()); + BigInteger max = new BigInteger(maxField.getText()); + checkDiapason(max.compareTo(min) < 0); + + BigInteger value = new BigInteger(62, new Random()); if (min.compareTo(zero) < 0 && max.compareTo(zero) > 0) { - Random random = new Random(); - int x = random.nextInt(); - x = x % 2; + + int x = new Random().nextInt() % 2; if (x == 0) { diapason = min.multiply(new BigInteger("-1")); - bigint = bigint.mod(diapason).multiply(new BigInteger("-1")); + value = value.mod(diapason).multiply(new BigInteger("-1")); } else { diapason = max; - bigint = bigint.mod(diapason); + value = value.mod(diapason); } + } else { diapason = max.subtract(min); - bigint = min.add(bigint.mod(diapason)); + value = min.add(value.mod(diapason)); } - return bigint; + + return value; } + private int getIntegerValue(String dataType) { - public Object getTestDataObject() { - if (nullBox.isSelected()) { - if (new Random().nextInt(10) == 0) - return null; - } - if (col.getFormattedDataType().contentEquals(T.BIGINT) || col.getFormattedDataType().contentEquals(T.INT128)) { - return getBigint(); - } - if (col.getFormattedDataType().contentEquals(T.TIME)) { - long value = new Random().nextLong(); - if (value < 0) - value *= -1; - - long max = maxTime.getLocalTime().atDate(LocalDate.of(1970, 1, 1)) - .toInstant(ZoneId.of(ZoneId.systemDefault().getId()) - .getRules().getOffset(Instant.now())) - .toEpochMilli(); - long min = minTime.getLocalTime().atDate(LocalDate.of(1970, 1, 1)) - .toInstant(ZoneId.of(ZoneId.systemDefault().getId()) - .getRules().getOffset(Instant.now())) - .toEpochMilli(); - - if (min > max) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - long diapason = max - min; - if (diapason == 0) { - value = max; - } else - value = (min + (value % diapason)); - LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(value), ZoneId.systemDefault()); - return dateTime.toLocalTime(); - } + long max = maxField.getValue(); + long min = minField.getValue(); + checkDiapason(min, max); - if (col.getFormattedDataType().contentEquals(T.TIME_WITH_TIMEZONE)) { - long value = new Random().nextLong(); - if (value < 0) - value *= -1; - - long max = maxTimezone.getOffsetTime().atDate(LocalDate.of(1970, 1, 1)).toInstant().toEpochMilli(); - long min = minTimezone.getOffsetTime().atDate(LocalDate.of(1970, 1, 1)).toInstant().toEpochMilli(); - if (min > max) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - long diapason = max - min; - if (diapason == 0) { - value = max; - } else - value = (min + (value % diapason)); - OffsetDateTime dateTime = OffsetDateTime.ofInstant(Instant.ofEpochMilli(value), ZoneId.systemDefault()); - return dateTime.toOffsetTime(); - } + long value = getRandomValue(max, min); + return dataType.contentEquals(T.SMALLINT) ? (short) value : (int) value; + } - if (col.getFormattedDataType().contentEquals(T.DATE)) { - long value = new Random().nextLong(); - if (value < 0) - value *= -1; - long max = maxDate.getDate().toEpochDay(); - long min = minDate.getDate().toEpochDay(); - if (min > max) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - long diapason = max - min; - if (diapason == 0) { - value = max; - } else - value = (min + (value % diapason)); - LocalDate temp = LocalDate.ofEpochDay(value); - return temp; - } - if (col.getFormattedDataType().contentEquals(T.TIMESTAMP)) { - long value = new Random().nextLong(); - if (value < 0) - value *= -1; - ZoneId z_id = ZoneId.systemDefault(); - ZoneOffset offset = z_id.getRules().getOffset(Instant.now()); - long max = maxDateTime.getDateTime().toInstant(offset).toEpochMilli(); - long min = minDateTime.getDateTime().toInstant(offset).toEpochMilli(); - if (min > max) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - long diapason = max - min; - if (diapason == 0) { - value = max; - } else - value = (min + (value % diapason)); - LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(value), ZoneId.systemDefault()); - return dateTime; - } - if (col.getFormattedDataType().contentEquals(T.TIMESTAMP_WITH_TIMEZONE)) { - long value = new Random().nextLong(); - if (value < 0) - value *= -1; - long max = maxDateTimezone.getOffsetDateTime().toInstant().toEpochMilli(); - long min = minDateTimezone.getOffsetDateTime().toInstant().toEpochMilli(); - if (min > max) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - long diapason = max - min; - if (diapason == 0) { - value = max; - } else - value = (min + (value % diapason)); - OffsetDateTime dateTime = OffsetDateTime.ofInstant(Instant.ofEpochMilli(value), ZoneId.systemDefault()); - return dateTime; - } - if (col.getFormattedDataType().contentEquals(T.INTEGER) - || col.getFormattedDataType().contentEquals(T.SMALLINT)) { - long value = new Random().nextLong(); - if (value < 0) - value *= -1; - long max = ((NumberTextField) maxField).getValue(); - long min = ((NumberTextField) minField).getValue(); - if (min > max) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - long diapason = max - min; - if (diapason == 0) { - value = max; - } else - value = (min + (value % diapason)); - if (col.getFormattedDataType().contentEquals(T.SMALLINT)) - return (short) value; - return (int) value; - } - if (col.getFormattedDataType().contentEquals(T.DOUBLE_PRECISION) - || col.getFormattedDataType().contentEquals(T.FLOAT) - || col.getFormattedDataType().startsWith(T.DECIMAL) - || col.getFormattedDataType().startsWith(T.NUMERIC) - || col.getFormattedDataType().startsWith(T.DECFLOAT) - ) { - long value = new Random().nextLong(); - if (value < 0) - value *= -1; - long power = (long) Math.pow(10, countSymbolsAfterComma.getLongValue()); - long max = Long.parseLong(maxField.getText()) * power; - long min = Long.parseLong(minField.getText()) * power; - if (min > max) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - long diapason = max - min; - if (diapason == 0) { - value = max; - } else - value = (min + (value % diapason)); - return ((double) value) / ((double) power); - } - if (col.getFormattedDataType().contains(T.CHAR)) { - long n = new Random().nextLong(); - if (n < 0) - n *= -1; - long max = ((NumberTextField) maxField).getLongValue() + 1; - long min = ((NumberTextField) minField).getLongValue(); - if (min > max) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - long diapason = max - min; - if (diapason == 0) { - n = max; - } else - n = (min + (n % diapason)); - StringBuilder result = new StringBuilder(); - if (useOnlyThisSymbolsBox.isSelected()) { - String charset = useOnlyThisSymbolsField.getTextAreaComponent().getText(); - int length = charset.length(); - for (int i = 0; i < n; i++) { - int x = new Random().nextInt(length); - result.append(charset.charAt(x)); - } - } else { - for (int i = 0; i < n; i++) { - int x = new Random().nextInt(127); - result.append((char) x); - } + private Double getDecimalValue() { + long power = (long) Math.pow(10, symbolsAfterComma.getLongValue()); + + long max = Long.parseLong(maxField.getText()) * power; + long min = Long.parseLong(minField.getText()) * power; + checkDiapason(min, max); + + long value = getRandomValue(max, min); + return ((double) value) / ((double) power); + } + + private String getCharValue() { + + long max = maxField.getLongValue() + 1; + long min = minField.getLongValue(); + checkDiapason(min, max); + + StringBuilder value = new StringBuilder(); + long valueLength = getRandomValue(max, min); + if (useSelectedCharsetCheck.isSelected()) { + + String charset = useSelectedCharsetField.getTextAreaComponent().getText(); + int length = charset.length(); + + for (int i = 0; i < valueLength; i++) { + int x = new Random().nextInt(length); + value.append(charset.charAt(x)); } - return result.toString(); - } - if (col.getFormattedDataType().contains(T.BLOB)) { - int n = new Random().nextInt(); - if (n < 0) - n *= -1; - int max = ((NumberTextField) maxField).getValue() + 1; - int min = ((NumberTextField) minField).getValue(); - if (min > max) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - int diapason = max - min; - if (diapason == 0) { - n = max; - } else - n = (min + (n % diapason)); - max = ((NumberTextField) maxByteField).getValue() + 1; - min = ((NumberTextField) minByteField).getValue(); - if (min > max) - throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); - diapason = max - min; - byte[] bytes = new byte[n]; - for (int i = 0; i < n; i++) { - if (diapason == 0) - bytes[i] = (byte) max; - int x = new Random().nextInt(); - if (x < 0) - x *= -1; - x = min + (x % diapason); - bytes[i] = (byte) x; + + } else { + for (int i = 0; i < valueLength; i++) { + int x = new Random().nextInt(127); + value.append((char) x); } - return bytes; - } - if (col.getFormattedDataType().contains(T.BOOLEAN)) { - return new Random().nextInt(2) == 1; } + + return value.toString(); + } + + private LocalDate getDateValue() { + + long max = maxDate.getDate().toEpochDay(); + long min = minDate.getDate().toEpochDay(); + checkDiapason(min, max); + + long value = getRandomValue(max, min); + return LocalDate.ofEpochDay(value); + } + + private LocalTime getTimeValue() { + + long max = maxTime.getLocalTime().atDate(LocalDate.of(1970, 1, 1)) + .toInstant(ZoneId.of(ZoneId.systemDefault().getId()).getRules().getOffset(Instant.now())) + .toEpochMilli(); + + long min = minTime.getLocalTime().atDate(LocalDate.of(1970, 1, 1)) + .toInstant(ZoneId.of(ZoneId.systemDefault().getId()).getRules().getOffset(Instant.now())) + .toEpochMilli(); + + checkDiapason(min, max); + + long value = getRandomValue(max, min); + LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(value), ZoneId.systemDefault()); + return dateTime.toLocalTime(); + } + + private LocalDateTime getTimestampValue() { + ZoneOffset offset = ZoneId.systemDefault().getRules().getOffset(Instant.now()); + + long max = maxDateTime.getDateTime().toInstant(offset).toEpochMilli(); + long min = minDateTime.getDateTime().toInstant(offset).toEpochMilli(); + checkDiapason(min, max); + + long value = getRandomValue(max, min); + return LocalDateTime.ofInstant(Instant.ofEpochMilli(value), ZoneId.systemDefault()); + } + + private OffsetTime getZonedTimeValue() { + + long max = maxTimezone.getOffsetTime().atDate(LocalDate.of(1970, 1, 1)).toInstant().toEpochMilli(); + long min = minTimezone.getOffsetTime().atDate(LocalDate.of(1970, 1, 1)).toInstant().toEpochMilli(); + checkDiapason(min, max); + + long value = getRandomValue(max, min); + OffsetDateTime dateTime = OffsetDateTime.ofInstant(Instant.ofEpochMilli(value), ZoneId.systemDefault()); + return dateTime.toOffsetTime(); + } + + private OffsetDateTime getZonedTimestamp() { + + long max = maxDateTimezone.getOffsetDateTime().toInstant().toEpochMilli(); + long min = minDateTimezone.getOffsetDateTime().toInstant().toEpochMilli(); + checkDiapason(min, max); + + long value = getRandomValue(max, min); + return OffsetDateTime.ofInstant(Instant.ofEpochMilli(value), ZoneId.systemDefault()); + } + + private byte[] getBlobValue() { + + int maxLength = maxField.getValue() + 1; + int minLength = minField.getValue(); + checkDiapason(minLength, maxLength); + + int max = ((NumberTextField) maxByteField).getValue() + 1; + int min = ((NumberTextField) minByteField).getValue(); + checkDiapason(min, max); + + int valueLength = (int) getRandomValue(maxLength, minLength); + byte[] bytes = new byte[valueLength]; + for (int i = 0; i < valueLength; i++) + bytes[i] = (byte) getRandomValue(max, min); + + return bytes; + } + + private static boolean getBooleanValue() { + return new Random().nextInt(2) == 1; + } + + // --- + + private static long getRandomValue(long max, long min) { + + long diapason = max - min; + if (diapason == 0) + return max; + + return min + Math.abs(new Random().nextLong()) % diapason; + } + + private void checkDiapason(long min, long max) throws DataSourceException { + checkDiapason(min > max); + } + + private void checkDiapason(boolean isInvalid) throws DataSourceException { + if (isInvalid) + throw new DataSourceException("minimum greater than maximum for column \"" + col.getName() + "\""); + } + + // --- AbstractMethodPanel impl --- + + @Override + public Object getTestDataObject() { + + if (useNullCheck.isSelected() && new Random().nextInt(10) == 0) + return null; + + String dataType = col.getFormattedDataType(); + if (isBigint(dataType)) { + return getBigintValue(); + + } else if (isSmallint(dataType) || isInteger(dataType)) { + return getIntegerValue(dataType); + + } else if (isDecimal(dataType)) { + return getDecimalValue(); + + } else if (isChar(dataType)) { + return getCharValue(); + + } else if (isDate(dataType)) { + return getDateValue(); + + } else if (isTime(dataType)) { + return getTimeValue(); + + } else if (isTimestamp(dataType)) { + return getTimestampValue(); + + } else if (isZonedTime(dataType)) { + return getZonedTimeValue(); + + } else if (isZonedTimestamp(dataType)) { + return getZonedTimestamp(); + + } else if (isBlob(dataType)) { + return getBlobValue(); + + } else if (isBoolean(dataType)) + return getBooleanValue(); + return null; } diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index 84b9ee399..b3a9c710c 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1524,7 +1524,7 @@ GeneratorTestDataPanel.BatchCount=Batch Size GeneratorTestDataPanel.ChooseDirectory=Choose Directory GeneratorTestDataPanel.ChooseFile=Choose File GeneratorTestDataPanel.Column=Column -GeneratorTestDataPanel.CountDigitsAfterComma=Count Digits After Comma +GeneratorTestDataPanel.CountDigitsAfterComma=Digits After Comma GeneratorTestDataPanel.CountRecords=Count Records GeneratorTestDataPanel.Delimiter=Delimiter GeneratorTestDataPanel.FromFile=From File diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index bf6f8e96b..194d8012d 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1524,7 +1524,7 @@ GeneratorTestDataPanel.BatchCount=Кол-во записей в пакете GeneratorTestDataPanel.ChooseDirectory=Выбрать папку GeneratorTestDataPanel.ChooseFile=Выбрать файл GeneratorTestDataPanel.Column=Столбец -GeneratorTestDataPanel.CountDigitsAfterComma=Число цифр после запятой +GeneratorTestDataPanel.CountDigitsAfterComma=Цифр после запятой GeneratorTestDataPanel.CountRecords=Количество записей GeneratorTestDataPanel.Delimiter=Разделитель GeneratorTestDataPanel.FromFile=Из файла From e1472db6cd3c10fb7b2a0d92d7cf2eb75f8e9efa Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 2 Aug 2024 10:49:03 +0300 Subject: [PATCH 034/141] Fix rollbackCommentButton name --- src/org/executequery/gui/text/SimpleCommentPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/executequery/gui/text/SimpleCommentPanel.java b/src/org/executequery/gui/text/SimpleCommentPanel.java index c9df3d575..5630f36fb 100644 --- a/src/org/executequery/gui/text/SimpleCommentPanel.java +++ b/src/org/executequery/gui/text/SimpleCommentPanel.java @@ -67,7 +67,7 @@ private void init() { updateCommentButton.setEnabled(currentDatabaseObject != null); rollbackCommentButton = WidgetFactory.createRolloverButton( - "updateCommentButton", + "rollbackCommentButton", Bundles.get("common.rollback.button"), "icon_rollback", e -> resetComment() From d7f4da4b23432667b8be391f31a7743bb657d0fd Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 2 Aug 2024 11:32:27 +0300 Subject: [PATCH 035/141] Rework GetFromOtherTablePanel class (RS-181680) --- .../methodspanels/GetFromOtherTablePanel.java | 202 ++++++++++-------- .../localization/resources.properties | 5 +- .../localization/resources_ru.properties | 5 +- 3 files changed, 123 insertions(+), 89 deletions(-) diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java index e70df8899..1100aeeda 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java @@ -4,8 +4,10 @@ import org.executequery.databasemediators.spi.DefaultStatementExecutor; import org.executequery.databaseobjects.DatabaseColumn; import org.executequery.databaseobjects.DatabaseHost; -import org.executequery.databaseobjects.NamedObject; +import org.executequery.gui.WidgetFactory; import org.executequery.gui.browser.ConnectionsTreePanel; +import org.executequery.gui.browser.nodes.DatabaseObjectNode; +import org.executequery.log.Log; import org.executequery.sql.SqlStatementResult; import org.underworldlabs.swing.DynamicComboBoxModel; import org.underworldlabs.swing.NumberTextField; @@ -14,125 +16,155 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; +import java.util.*; import java.util.List; -import java.util.Random; -import java.util.Vector; public class GetFromOtherTablePanel extends AbstractMethodPanel { - NumberTextField countRowsField; - DefaultStatementExecutor executor; - private JComboBox tableBox; - private JComboBox colBox; - private DynamicComboBoxModel tableBoxModel; - private DynamicComboBoxModel colBoxModel; - Random random; - private List objList; + + private JComboBox tablesCombo; + private JComboBox columnsCombo; + private NumberTextField recordsCountField; + private JCheckBox useFirstNRecordsCheck; + private DynamicComboBoxModel columnsModel; + + private final Random random; + private final List objList; + private final DefaultStatementExecutor executor; + + public GetFromOtherTablePanel(DatabaseColumn col, DefaultStatementExecutor executor) { + super(col); + this.random = new Random(); + this.objList = new ArrayList<>(); + this.executor = new DefaultStatementExecutor(executor.getDatabaseConnection()); + + init(); + } private void init() { - setLayout(new GridBagLayout()); - tableBoxModel = new DynamicComboBoxModel(); - tableBoxModel.setElements(fillTables()); - colBoxModel = new DynamicComboBoxModel(); - tableBox = new JComboBox(tableBoxModel); - tableBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - colBoxModel.setElements(fillCols()); - } - } + + JLabel recordsCountLabel = new JLabel(bundleString("CountRecords")); + recordsCountLabel.setEnabled(false); + + columnsModel = new DynamicComboBoxModel(); + columnsCombo = WidgetFactory.createComboBox("columnsCombo", columnsModel); + tablesCombo = WidgetFactory.createComboBox("tablesCombo", getTablesVector()); + + useFirstNRecordsCheck = WidgetFactory.createCheckBox("useFirstNRecordsCheck", bundleString("useFirstNRecordsCheck")); + useFirstNRecordsCheck.addActionListener(e -> { + boolean enabled = useFirstNRecordsCheck.isSelected(); + recordsCountLabel.setEnabled(enabled); + recordsCountField.setEnabled(enabled); }); - colBox = new JComboBox(colBoxModel); - countRowsField = new NumberTextField(false); - countRowsField.setValue(1); - GridBagHelper gbh = new GridBagHelper(); - GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0); - gbh.setDefaults(gbc); - JLabel label = new JLabel(bundleString("TableView")); + recordsCountField = WidgetFactory.createNumberTextField("recordsCountField", "10"); + recordsCountField.setEnableNegativeNumbers(false); + recordsCountField.setEnabled(false); - add(label, gbh.defaults().setLabelDefault().get()); + // --- arrange --- - add(tableBox, gbh.defaults().nextCol().spanX().get()); + JPanel mainPanel = new JPanel(new GridBagLayout()); - label = new JLabel(bundleString("Column")); + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + mainPanel.add(new JLabel(bundleString("TableView")), gbh.leftGap(3).topGap(3).get()); + mainPanel.add(tablesCombo, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + mainPanel.add(new JLabel(bundleString("Column")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + mainPanel.add(columnsCombo, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + mainPanel.add(useFirstNRecordsCheck, gbh.nextRowFirstCol().leftGap(0).spanX().get()); + mainPanel.add(recordsCountLabel, gbh.nextRowFirstCol().setWidth(1).leftGap(3).topGap(8).setMinWeightX().get()); + mainPanel.add(recordsCountField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + mainPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); - add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); + setLayout(new GridBagLayout()); + gbh = new GridBagHelper().setInsets(0, 5, 0, 0).fillBoth().spanX().spanY(); + add(mainPanel, gbh.get()); - add(colBox, gbh.defaults().nextCol().spanX().get()); + // --- - label = new JLabel(bundleString("CountRecords")); + tablesCombo.addItemListener(this::tablesComboTriggered); + columnsModel.setElements(getColumnsList()); + } - add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); + private Vector getTablesVector() { + String query = "SELECT RDB$RELATION_NAME\n" + + "FROM RDB$RELATIONS\n" + + "WHERE (RDB$SYSTEM_FLAG IS NULL OR RDB$SYSTEM_FLAG = 0)\n" + + "AND RDB$RELATION_TYPE = 0 OR RDB$RELATION_TYPE = 1 OR RDB$RELATION_TYPE = 2\n" + + "ORDER BY RDB$RELATION_NAME"; - add(countRowsField, gbh.defaults().nextCol().spanX().spanY().get()); + Vector tables = new Vector<>(); + try { + SqlStatementResult result = executor.getResultSet(query); + ResultSet rs = result.getResultSet(); + while (rs.next()) + tables.add(rs.getString(1).trim()); + + } catch (SQLException | NullPointerException e) { + Log.error(e.getMessage(), e); - colBoxModel.setElements(fillCols()); + } finally { + executor.releaseResources(); + } + return tables; } - public GetFromOtherTablePanel(DatabaseColumn col, DefaultStatementExecutor executor) { - super(col); - this.executor = new DefaultStatementExecutor(executor.getDatabaseConnection()); - init(); + private List getColumnsList() { + + JPanel tabComponent = GUIUtilities.getDockedTabComponent(ConnectionsTreePanel.PROPERTY_KEY); + if (tabComponent instanceof ConnectionsTreePanel) { + DatabaseObjectNode objectNode = ((ConnectionsTreePanel) tabComponent).getHostNode(executor.getDatabaseConnection()); + if (objectNode != null) { + DatabaseHost host = (DatabaseHost) objectNode.getDatabaseObject(); + return host.getColumns((String) tablesCombo.getSelectedItem()); + } + } + + return new ArrayList<>(); + } + + private String getQuery() { + Object selectedColumn = columnsCombo.getSelectedItem(); + + String tableName = (String) tablesCombo.getSelectedItem(); + String columnName = selectedColumn instanceof DatabaseColumn ? + ((DatabaseColumn) selectedColumn).getName() : + (String) columnsCombo.getModel().getElementAt(columnsCombo.getSelectedIndex()); + + return useFirstNRecordsCheck.isSelected() ? + String.format("SELECT FIRST %d %s FROM %s", recordsCountField.getValue(), columnName, tableName) : + String.format("SELECT %s FROM %s", columnName, tableName); + } + + private void tablesComboTriggered(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) + columnsModel.setElements(getColumnsList()); } + // --- AbstractMethodPanel impl --- + @Override public Object getTestDataObject() { + if (first) { - first = false; - objList = new ArrayList<>(); - String query = "Select first " + countRowsField.getStringValue() + " \n" + ((DatabaseColumn) colBox.getSelectedItem()).getName() + " from " + tableBox.getSelectedItem(); try { - ResultSet rs = executor.getResultSet(query).getResultSet(); - random = new Random(); - int count = countRowsField.getValue(); - for (int i = 0; i < count && rs.next(); i++) { + ResultSet rs = executor.getResultSet(getQuery()).getResultSet(); + while (rs.next()) objList.add(rs.getObject(1)); - } + } catch (SQLException e) { - e.printStackTrace(); + Log.error(e.getMessage(), e); return null; + } finally { executor.releaseResources(); } - } - int rand = random.nextInt(objList.size()); - return objList.get(rand); - } - private Vector fillTables() { - Vector tables = new Vector<>(); - SqlStatementResult result = null; - try { - String query = "select rdb$relation_name\n" + - "from rdb$relations\n" + - "where \n" + - "(rdb$system_flag is null or rdb$system_flag = 0) and rdb$relation_type=0 or rdb$relation_type=1 or rdb$relation_type=2\n" + - "order by rdb$relation_name"; - result = executor.getResultSet(query); - ResultSet rs = result.getResultSet(); - while (rs.next()) { - tables.add(rs.getString(1).trim()); - } - } catch (SQLException e) { - e.printStackTrace(); - } catch (NullPointerException e) { - e.printStackTrace(); - } finally { - executor.releaseResources(); + first = false; } - return tables; - } - private List fillCols() { - NamedObject object = ((ConnectionsTreePanel) GUIUtilities.getDockedTabComponent(ConnectionsTreePanel.PROPERTY_KEY)).getHostNode(executor.getDatabaseConnection()).getDatabaseObject(); - DatabaseHost host = (DatabaseHost) object; - return host.getColumns( (String) tableBox.getSelectedItem()); + return objList.get(random.nextInt(objList.size())); } + } diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index b3a9c710c..dbdd80002 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1525,7 +1525,8 @@ GeneratorTestDataPanel.ChooseDirectory=Choose Directory GeneratorTestDataPanel.ChooseFile=Choose File GeneratorTestDataPanel.Column=Column GeneratorTestDataPanel.CountDigitsAfterComma=Digits After Comma -GeneratorTestDataPanel.CountRecords=Count Records +GeneratorTestDataPanel.useFirstNRecordsCheck=Use first N records +GeneratorTestDataPanel.CountRecords=Records GeneratorTestDataPanel.Delimiter=Delimiter GeneratorTestDataPanel.FromFile=From File GeneratorTestDataPanel.FromTextArea=From Text Area @@ -1551,7 +1552,7 @@ GeneratorTestDataPanel.Stop=Stop GeneratorTestDataPanel.StopOnError=Stop on error GeneratorTestDataPanel.TITLE=Test Data Generator GeneratorTestDataPanel.Table=Table -GeneratorTestDataPanel.TableView=Table/View +GeneratorTestDataPanel.TableView=Table GeneratorTestDataPanel.Type=Type GeneratorTestDataPanel.UseNull=Use NULL GeneratorTestDataPanel.UseOnlyThisSymbols=Use Only This Symbols diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 194d8012d..14787bc10 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1525,7 +1525,8 @@ GeneratorTestDataPanel.ChooseDirectory=Выбрать папку GeneratorTestDataPanel.ChooseFile=Выбрать файл GeneratorTestDataPanel.Column=Столбец GeneratorTestDataPanel.CountDigitsAfterComma=Цифр после запятой -GeneratorTestDataPanel.CountRecords=Количество записей +GeneratorTestDataPanel.useFirstNRecordsCheck=Использовать N первых записей +GeneratorTestDataPanel.CountRecords=Количество GeneratorTestDataPanel.Delimiter=Разделитель GeneratorTestDataPanel.FromFile=Из файла GeneratorTestDataPanel.FromTextArea=Из текстового поля @@ -1551,7 +1552,7 @@ GeneratorTestDataPanel.Stop=Остановить GeneratorTestDataPanel.StopOnError=Остановить при ошибке GeneratorTestDataPanel.TITLE=Генератор тестовых данных GeneratorTestDataPanel.Table=Таблица -GeneratorTestDataPanel.TableView=Таблица/Представление +GeneratorTestDataPanel.TableView=Таблица GeneratorTestDataPanel.Type=Тип GeneratorTestDataPanel.UseNull=Использовать NULL GeneratorTestDataPanel.UseOnlyThisSymbols=Использовать только эти символы From 28bf188ce979376dbb1619f810e02b909a13456f Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 2 Aug 2024 14:09:22 +0300 Subject: [PATCH 036/141] Rework GetFromListPanel class (RS-181680) --- .../generatortestdata/FieldsPanel.java | 2 +- .../methodspanels/AbstractMethodPanel.java | 7 +- .../methodspanels/GetFromListPanel.java | 335 ++++++++++-------- .../methodspanels/RandomMethodPanel.java | 6 +- .../localization/resources.properties | 4 +- .../localization/resources_ru.properties | 4 +- 6 files changed, 196 insertions(+), 162 deletions(-) diff --git a/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java b/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java index 656e879dc..8ad7c9cf6 100644 --- a/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java @@ -50,7 +50,7 @@ private void init() { JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); splitPane.setTopComponent(leftScrollPane); splitPane.setBottomComponent(rightScrollPane); - splitPane.setResizeWeight(0.6); + splitPane.setResizeWeight(1); setLayout(new GridBagLayout()); add(splitPane, new GridBagHelper().fillBoth().spanX().spanY().get()); diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java index c57a7c701..d889382fd 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/AbstractMethodPanel.java @@ -33,8 +33,11 @@ protected static boolean isDecimal(String dataType) { return dataType.contentEquals(T.DOUBLE_PRECISION) || dataType.contentEquals(T.FLOAT) || dataType.startsWith(T.DECIMAL) - || dataType.startsWith(T.NUMERIC) - || dataType.startsWith(T.DECFLOAT); + || dataType.startsWith(T.NUMERIC); + } + + protected static boolean isDecFloat(String dataType) { + return dataType.startsWith(T.DECFLOAT); } protected static boolean isSmallint(String dataType) { diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromListPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromListPanel.java index 0a1e65c72..6c1e2b2d4 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromListPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromListPanel.java @@ -1,10 +1,11 @@ package org.executequery.gui.browser.generatortestdata.methodspanels; import org.executequery.databaseobjects.DatabaseColumn; -import org.executequery.databaseobjects.T; +import org.executequery.gui.WidgetFactory; import org.executequery.gui.browser.GeneratorTestDataPanel; import org.executequery.gui.text.SimpleTextArea; import org.executequery.localization.Bundles; +import org.executequery.log.Log; import org.underworldlabs.jdbc.DataSourceException; import org.underworldlabs.swing.layouts.GridBagHelper; @@ -13,10 +14,7 @@ import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -34,220 +32,253 @@ import java.util.regex.Pattern; public class GetFromListPanel extends AbstractMethodPanel { - private SimpleTextArea textArea; + + private JTextField fileField; private JTextField delimiterField; - private JComboBox orderBox; - Object[] listObject; - JFileChooser openFileDialog; - private JComboBox sourceBox; + private JLabel labelFile; - String[] list; - private JTextField fileField; - int index; - private JButton fileSelectButton; + private SimpleTextArea textArea; + private JButton browseFileButton; + private JFileChooser openFileDialog; + private JComboBox ordersCombo; + private JComboBox sourcesCombo; + + private int index; + private String[] dataArray; + private Object[] listObject; + private final String dataType; public GetFromListPanel(DatabaseColumn col) { super(col); + this.dataType = col.getFormattedDataType(); + init(); + arrange(); } private void init() { - openFileDialog = new JFileChooser(); + textArea = new SimpleTextArea(); - textArea.getTextAreaComponent().setColumns(20); - delimiterField = new JTextField(); - delimiterField.setDocument(new JTextFieldLimit(1)); + openFileDialog = new JFileChooser(); + + delimiterField = WidgetFactory.createTextField("delimiterField"); + delimiterField.setDocument(new LimitedDocument(1)); delimiterField.setText("\\n"); - orderBox = new JComboBox(Bundles.get(GeneratorTestDataPanel.class, new String[]{ - "InOrder", "Random" - })); - sourceBox = new JComboBox(Bundles.get(GeneratorTestDataPanel.class, new String[]{ - "FromTextArea", "FromFile" - })); - sourceBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - boolean visibling = sourceBox.getSelectedIndex() == 0; - labelFile.setVisible(!visibling); - fileField.setVisible(!visibling); - fileSelectButton.setVisible(!visibling); - textArea.setVisible(visibling); - } - } - }); - - fileField = new JTextField(); - fileSelectButton = new JButton("..."); - fileSelectButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (col.getFormattedDataType().contains("BLOB")) - openFileDialog.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); - if (openFileDialog.showOpenDialog(fileSelectButton) == JOptionPane.OK_OPTION) - fileField.setText(openFileDialog.getSelectedFile().getAbsolutePath()); - } - }); + ordersCombo = WidgetFactory.createComboBox("ordersCombo", bundleString(new String[]{"InOrder", "Random"})); + sourcesCombo = WidgetFactory.createComboBox("sourcesCombo", bundleString(new String[]{"FromTextArea", "FromFile"})); + sourcesCombo.addItemListener(this::sourcesComboTriggered); + fileField = WidgetFactory.createTextField("fileField"); + labelFile = new JLabel(bundleString(isBlob(dataType) ? "ChooseDirectory" : "ChooseFile")); + browseFileButton = WidgetFactory.createButton("browseFileButton", "...", e -> browseFile()); - setLayout(new GridBagLayout()); - GridBagHelper gbh = new GridBagHelper(); - GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0); - gbh.setDefaults(gbc); - String labelStr = bundleString("ChooseDirectory"); - if (!col.getFormattedDataType().contains("BLOB")) { - JLabel label = new JLabel(bundleString("Source")); - add(label, gbh.defaults().setLabelDefault().get()); - add(sourceBox, gbh.defaults().nextCol().spanX().get()); - labelStr = bundleString("ChooseFile"); - } - labelFile = new JLabel(labelStr); - if (!col.getFormattedDataType().contains("BLOB")) { + if (!isBlob(dataType)) { labelFile.setVisible(false); fileField.setVisible(false); - fileSelectButton.setVisible(false); - - } - JLabel label = new JLabel(bundleString("Method")); - add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); - add(orderBox, gbh.defaults().nextCol().spanX().get()); - if (!col.getFormattedDataType().contains("BLOB")) { - label = new JLabel(bundleString("Delimiter")); - add(label, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); - add(delimiterField, gbh.defaults().nextCol().spanX().get()); + browseFileButton.setVisible(false); } - add(labelFile, gbh.defaults().nextRowFirstCol().setLabelDefault().get()); - add(fileField, gbh.defaults().nextCol().setMaxWeightX().setMaxWeightY().get()); - add(fileSelectButton, gbh.defaults().nextCol().setLabelDefault().get()); - if (!col.getFormattedDataType().contains("BLOB")) - add(textArea, gbh.defaults().nextRowFirstCol().fillBoth().spanX().spanY().get()); } - @Override + private void arrange() { + GridBagHelper gbh; - public Object getTestDataObject() { - if (first) { - fillList(); - first = false; - index = 0; + // --- main panel --- + + JPanel mainPanel = new JPanel(new GridBagLayout()); + + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + if (!isBlob(dataType)) { + mainPanel.add(new JLabel(bundleString("Source")), gbh.leftGap(3).topGap(3).bottomGap(5).get()); + mainPanel.add(sourcesCombo, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().spanX().get()); + gbh.setWidth(1).setMinWeightX().nextRowFirstCol().bottomGap(0); } - if (index >= list.length) - index = 0; - if (orderBox.getSelectedIndex() == 1) { - index = new Random().nextInt(list.length); + + mainPanel.add(new JLabel(bundleString("Method")), gbh.leftGap(3).topGap(3).get()); + mainPanel.add(ordersCombo, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().spanX().get()); + if (!isBlob(dataType)) { + mainPanel.add(new JLabel(bundleString("Delimiter")), gbh.nextRowFirstCol().setWidth(1).leftGap(3).topGap(8).setMinWeightX().get()); + mainPanel.add(delimiterField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().spanX().get()); } - index++; - return listObject[index - 1]; + + mainPanel.add(labelFile, gbh.nextRowFirstCol().setWidth(1).leftGap(3).topGap(8).setMinWeightX().get()); + mainPanel.add(fileField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + mainPanel.add(browseFileButton, gbh.nextCol().setMinWeightX().get()); + + gbh.nextRowFirstCol().fillBoth().spanX().spanY(); + if (!isBlob(dataType)) + mainPanel.add(textArea, gbh.get()); + mainPanel.add(new JPanel(), gbh.get()); + + // --- base --- + + setLayout(new GridBagLayout()); + gbh = new GridBagHelper().topGap(5).fillBoth().spanX().spanY(); + add(mainPanel, gbh.get()); + } + + private void browseFile() { + openFileDialog.setFileSelectionMode(isBlob(dataType) ? JFileChooser.DIRECTORIES_ONLY : JFileChooser.FILES_ONLY); + if (openFileDialog.showOpenDialog(browseFileButton) == JOptionPane.OK_OPTION) + fileField.setText(openFileDialog.getSelectedFile().getAbsolutePath()); } - private void fillList() { - if (col.getFormattedDataType().contains("BLOB")) { - File directory = new File(fileField.getText()); + private void sourcesComboTriggered(ItemEvent e) { + + if (e.getStateChange() != ItemEvent.SELECTED) + return; + + boolean visible = sourcesCombo.getSelectedIndex() == 0; + browseFileButton.setVisible(!visible); + labelFile.setVisible(!visible); + fileField.setVisible(!visible); + textArea.setVisible(visible); + } + + private void initDataList() { + String fileName = fileField.getText().trim(); + + if (isBlob(dataType)) { + + File directory = new File(fileName); if (!directory.exists()) throw new DataSourceException("The selected directory does not exist."); + File[] files = directory.listFiles(); - list = new String[files.length]; - for (int i = 0; i < list.length; i++) { - list[i] = files[i].getAbsolutePath(); + if (files != null) { + dataArray = new String[files.length]; + for (int i = 0; i < dataArray.length; i++) + dataArray[i] = files[i].getAbsolutePath(); } + } else { + String delimiter = delimiterField.getText(); if (!delimiter.startsWith("\\")) delimiter = Pattern.quote(delimiter); - if (sourceBox.getSelectedIndex() == 0) - list = textArea.getTextAreaComponent().getText().trim().split(delimiter); - else { + + if (sourcesCombo.getSelectedIndex() == 0) { + dataArray = textArea.getTextAreaComponent().getText().trim().split(delimiter); + + } else { + + File file = new File(fileName); + if (!file.exists()) + throw new DataSourceException("The selected file does not exist."); + try { - File file = new File(fileField.getText()); - if (!file.exists()) - throw new DataSourceException("The selected file does not exist."); - String s = new String(Files.readAllBytes(Paths.get(fileField.getText()))); - list = s.trim().split(delimiter); + String fileData = new String(Files.readAllBytes(Paths.get(fileName))); + dataArray = fileData.trim().split(delimiter); + } catch (IOException e) { - e.printStackTrace(); + Log.error(e.getMessage(), e); } } } - listObject = new Object[list.length]; - for (int i = 0; i < list.length; i++) { - listObject[i] = objectFromString(list[i]); - } + + listObject = new Object[dataArray.length]; + for (int i = 0; i < dataArray.length; i++) + listObject[i] = objectFromString(dataArray[i]); } - Object objectFromString(String str) { - if (col.getFormattedDataType().contentEquals("BIGINT") - || col.getFormattedDataType().contentEquals(T.INT128)) { + private Object objectFromString(String str) { + + if (isBigint(dataType)) { return new BigInteger(str); - } - if (col.getFormattedDataType().contentEquals("INTEGER")) { + + } else if (isInteger(dataType)) { return Integer.parseInt(str); - } - if (col.getFormattedDataType().contentEquals("SMALLINT")) { + + } else if (isSmallint(dataType)) { return Short.parseShort(str); - } - if (col.getFormattedDataType().contentEquals("TIME")) { - return Time.valueOf(str); - } - if (col.getFormattedDataType().contentEquals(T.TIME_WITH_TIMEZONE)) { - return OffsetTime.parse(str); - } - if (col.getFormattedDataType().contentEquals("DATE")) { - return Date.valueOf(str); - } - if (col.getFormattedDataType().contentEquals("TIMESTAMP")) { - return Timestamp.valueOf(str); - } - if (col.getFormattedDataType().contentEquals(T.TIMESTAMP_WITH_TIMEZONE)) { - return OffsetDateTime.parse(str); - } - if (col.getFormattedDataType().contentEquals("DOUBLE PRECISION") - || col.getFormattedDataType().contentEquals("FLOAT") - || col.getFormattedDataType().startsWith("DECIMAL") - || col.getFormattedDataType().startsWith("NUMERIC")) { + + } else if (isDecimal(dataType)) { return Double.valueOf(str); - } - if (col.getFormattedDataType().startsWith(T.DECFLOAT)) { + + } else if (isDecFloat(dataType)) { return new BigDecimal(str); - } - if (col.getFormattedDataType().contains("CHAR")) { + + } else if (isChar(dataType)) { return str; - } - if (col.getFormattedDataType().contains("BLOB")) { + + } else if (isDate(dataType)) { + return Date.valueOf(str); + + } else if (isTime(dataType)) { + return Time.valueOf(str); + + } else if (isTimestamp(dataType)) { + return Timestamp.valueOf(str); + + } else if (isZonedTime(dataType)) { + return OffsetTime.parse(str); + + } else if (isZonedTimestamp(dataType)) { + return OffsetDateTime.parse(str); + + } else if (isBlob(dataType)) { try { return new FileInputStream(str); + } catch (FileNotFoundException e) { - e.printStackTrace(); + Log.error(e.getMessage(), e); } - } - if (col.getFormattedDataType().contentEquals("BOOLEAN")) { + + } else if (isBoolean(dataType)) return Boolean.valueOf(str); - } + return null; } - class JTextFieldLimit extends PlainDocument { - private final int limit; + private static String[] bundleString(String[] keys) { + return Bundles.get(GeneratorTestDataPanel.class, keys); + } - JTextFieldLimit(int limit) { - super(); - this.limit = limit; + // --- AbstractMethodPanel impl --- + + @Override + public Object getTestDataObject() { + + if (first) { + initDataList(); + first = false; + index = 0; } - JTextFieldLimit(int limit, boolean upper) { + if (index >= dataArray.length) + index = 0; + + if (ordersCombo.getSelectedIndex() == 1) + index = new Random().nextInt(dataArray.length); + + index++; + return listObject[index - 1]; + } + + // --- + + private static class LimitedDocument extends PlainDocument { + private final int limit; + + public LimitedDocument(int limit) { super(); this.limit = limit; } + @Override public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException { if (str == null) return; - if ((getLength() + str.length()) <= limit || getText(0, 1).startsWith("\\") || getLength() == 0 && str.startsWith("\\")) { + if ((getLength() + str.length()) <= limit + || getText(0, 1).startsWith("\\") + || getLength() == 0 && str.startsWith("\\") + ) { super.insertString(offset, str, attr); } } - } + + } // LimitedDocument class + } diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java index ce1d599d3..6265149fd 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java @@ -118,7 +118,7 @@ private void initNumericPanel(String dataType) { minField.setText("0"); } - if (isDecimal(dataType)) { + if (isDecimal(dataType) || isDecFloat(dataType)) { symbolsAfterComma = WidgetFactory.createNumberTextField("symbolsAfterComma"); symbolsAfterComma.setText("1"); } @@ -130,7 +130,7 @@ private void initNumericPanel(String dataType) { settingsPanel.add(minField, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); settingsPanel.add(new JLabel(bundleString("Max")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); settingsPanel.add(maxField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); - if (isDecimal(dataType)) { + if (isDecimal(dataType) || isDecFloat(dataType)) { settingsPanel.add(new JLabel(bundleString("CountDigitsAfterComma")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); settingsPanel.add(symbolsAfterComma, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); } @@ -490,7 +490,7 @@ public Object getTestDataObject() { } else if (isSmallint(dataType) || isInteger(dataType)) { return getIntegerValue(dataType); - } else if (isDecimal(dataType)) { + } else if (isDecimal(dataType) || isDecFloat(dataType)) { return getDecimalValue(); } else if (isChar(dataType)) { diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index dbdd80002..ca47839ff 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1521,8 +1521,8 @@ GenerateErdPanel.title=Generate ERD GeneratorTestDataPanel.AfterCommit=Commit after GeneratorTestDataPanel.Autoincrement=Autoincrement GeneratorTestDataPanel.BatchCount=Batch Size -GeneratorTestDataPanel.ChooseDirectory=Choose Directory -GeneratorTestDataPanel.ChooseFile=Choose File +GeneratorTestDataPanel.ChooseDirectory=Directory +GeneratorTestDataPanel.ChooseFile=File GeneratorTestDataPanel.Column=Column GeneratorTestDataPanel.CountDigitsAfterComma=Digits After Comma GeneratorTestDataPanel.useFirstNRecordsCheck=Use first N records diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 14787bc10..42afb6d0d 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1521,8 +1521,8 @@ GenerateErdPanel.title=Построить диаграмму БД GeneratorTestDataPanel.AfterCommit=Фиксация после GeneratorTestDataPanel.Autoincrement=Автоинкремент GeneratorTestDataPanel.BatchCount=Кол-во записей в пакете -GeneratorTestDataPanel.ChooseDirectory=Выбрать папку -GeneratorTestDataPanel.ChooseFile=Выбрать файл +GeneratorTestDataPanel.ChooseDirectory=Папка +GeneratorTestDataPanel.ChooseFile=Файл GeneratorTestDataPanel.Column=Столбец GeneratorTestDataPanel.CountDigitsAfterComma=Цифр после запятой GeneratorTestDataPanel.useFirstNRecordsCheck=Использовать N первых записей From 4f349aafd0ae8c03f79a9444d524d05b50d3840e Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 2 Aug 2024 17:02:22 +0300 Subject: [PATCH 037/141] Rework AutoincrementPanel class (RS-181680) --- .../generatortestdata/FieldsPanel.java | 2 +- .../methodspanels/AutoincrementPanel.java | 664 ++++++++++-------- .../methodspanels/RandomMethodPanel.java | 6 +- .../localization/resources.properties | 4 + .../localization/resources_ru.properties | 4 + .../swing/DateDifferenceSetter.java | 57 -- 6 files changed, 390 insertions(+), 347 deletions(-) delete mode 100644 src/org/underworldlabs/swing/DateDifferenceSetter.java diff --git a/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java b/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java index 8ad7c9cf6..9edbf046c 100644 --- a/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/FieldsPanel.java @@ -40,7 +40,7 @@ private void init() { // --- JScrollPane rightScrollPane = new JScrollPane(rightPanel); - rightScrollPane.setPreferredSize(new Dimension(600, 400)); + rightScrollPane.setPreferredSize(new Dimension(675, 400)); rightScrollPane.setMinimumSize(rightScrollPane.getPreferredSize()); JScrollPane leftScrollPane = new JScrollPane(tableFields); diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/AutoincrementPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/AutoincrementPanel.java index f9d663155..41dbaa57a 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/AutoincrementPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/AutoincrementPanel.java @@ -2,8 +2,7 @@ import com.github.lgooddatepicker.components.DatePicker; import org.executequery.databaseobjects.DatabaseColumn; -import org.executequery.databaseobjects.T; -import org.executequery.log.Log; +import org.executequery.gui.WidgetFactory; import org.underworldlabs.swing.*; import org.underworldlabs.swing.celleditor.picker.TimestampPicker; import org.underworldlabs.swing.celleditor.picker.ZonedTimestampPicker; @@ -16,28 +15,31 @@ import java.math.BigInteger; import java.sql.Date; import java.sql.Timestamp; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.OffsetDateTime; +import java.time.*; public class AutoincrementPanel extends AbstractMethodPanel { + private JPanel settingsPanel; private JTextField iterationField; private JTextField startValueField; - private ZonedTimePicker startValueTimezone; - private TimePicker startValueTime; + private JComboBox incrementsCombo; + + private DatePicker startDate; + private TimePicker startTime; + private TimestampPicker startTimestamp; + private ZonedTimePicker startZonedTime; + private ZonedTimestampPicker startZonedTimestamp; + + private NumberTextField iterationYears; + private NumberTextField iterationMouths; + private NumberTextField iterationDays; private TimePicker iterationTime; - private TimestampPicker startValueDateTime; - private ZonedTimestampPicker startValueDateTimezone; - private DateDifferenceSetter iterationDate; - private DatePicker startValueDate; - private JComboBox plusMinusBox; - private long current_value; - private LocalDateTime current_local_date_time; - private OffsetDateTime current_offset_date_time; - private BigInteger cur_bigint; - private double current_double; + + private long currentInteger; + private double currentDouble; + private BigInteger currentBigint; + private LocalDateTime currentLocalDateTime; + private OffsetDateTime currentOffsetDateTime; public AutoincrementPanel(DatabaseColumn col) { super(col); @@ -45,315 +47,405 @@ public AutoincrementPanel(DatabaseColumn col) { } private void init() { - settingsPanel = new JPanel(); - plusMinusBox = new JComboBox(new String[]{ - "+", "-" - }); + settingsPanel = new JPanel(); settingsPanel.setLayout(new GridBagLayout()); - GridBagHelper gbh = new GridBagHelper(); - GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0); - gbh.setDefaults(gbc); - Log.info("\"" + col.getFormattedDataType() + "\""); - if (col.getFormattedDataType().contentEquals(T.BIGINT) - || col.getFormattedDataType().contentEquals(T.INTEGER) - || col.getFormattedDataType().contentEquals(T.SMALLINT) - || col.getFormattedDataType().contentEquals(T.DOUBLE_PRECISION) - || col.getFormattedDataType().contentEquals(T.FLOAT) - || col.getFormattedDataType().startsWith(T.DECIMAL) - || col.getFormattedDataType().startsWith(T.NUMERIC) - || col.getFormattedDataType().startsWith(T.INT128)) { - - if (col.getFormattedDataType().contentEquals(T.BIGINT) - || col.getFormattedDataType().contentEquals(T.DOUBLE_PRECISION) - || col.getFormattedDataType().contentEquals(T.FLOAT) - || col.getFormattedDataType().startsWith(T.DECIMAL) - || col.getFormattedDataType().startsWith(T.NUMERIC) - || col.getFormattedDataType().startsWith(T.DECFLOAT) - || col.getFormattedDataType().startsWith(T.INT128) - ) { - iterationField = new JTextField(); - startValueField = new JTextField(); - if (col.getFormattedDataType().contentEquals(T.BIGINT)) { - iterationField.setText("1"); - startValueField.setText("-9223372036854775808"); - } else { - iterationField.setText("1"); - startValueField.setText("0"); - } - } else { - iterationField = new NumberTextField(); - startValueField = new NumberTextField(); - if (col.getFormattedDataType().contentEquals(T.INTEGER)) { - iterationField.setText("" + 1); - startValueField.setText("" + Integer.MIN_VALUE); - } else { - iterationField.setText("" + 1); - startValueField.setText("" + (-32768)); - } - } - - gbh.setXY(0, 0); - JLabel label = new JLabel(bundleString("StartValue")); - settingsPanel.add(label, gbh.defaults().setLabelDefault().get()); - settingsPanel.add(startValueField, gbh.defaults().nextCol().setMaxWeightX().get()); - label = new JLabel(bundleString("Iteration")); - settingsPanel.add(label, gbh.defaults().nextCol().setLabelDefault().get()); - settingsPanel.add(iterationField, gbh.defaults().nextCol().setMaxWeightX().get()); + incrementsCombo = WidgetFactory.createComboBox("incrementsCombo", new String[]{"+", "-"}); - } + // --- init settings panel --- - if (col.getFormattedDataType().contentEquals(T.TIME)) { + String dataType = col.getFormattedDataType(); + if (isNumeric(dataType)) { + initNumericPanel(dataType); - startValueTime = new TimePicker(); - startValueTime.setVisibleNullCheck(false); - startValueTime.setTime(LocalTime.MIN); + } else if (isDate(dataType)) { + initDatePanel(); - iterationTime = new TimePicker(); - iterationTime.setVisibleNullCheck(false); - iterationTime.setTime(LocalTime.of(1, 1, 1)); + } else if (isTime(dataType)) { + initTimePanel(); - gbh.setXY(0, 0); - settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.defaults().setLabelDefault().get()); - settingsPanel.add(startValueTime, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.defaults().nextCol().setLabelDefault().get()); - settingsPanel.add(iterationTime, gbh.defaults().nextCol().setMaxWeightX().get()); - } + } else if (isTimestamp(dataType)) { + initTimestampPanel(); - if (col.getFormattedDataType().contentEquals(T.TIME_WITH_TIMEZONE)) { + } else if (isZonedTime(dataType)) { + initZonedTimePanel(); - startValueTimezone = new ZonedTimePicker(); - startValueTimezone.setVisibleNullCheck(false); - startValueTimezone.setTime(LocalTime.MIN); + } else if (isZonedTimestamp(dataType)) + initZonedTimestampPanel(); - iterationTime = new TimePicker(); - iterationTime.setVisibleNullCheck(false); - iterationTime.setTime(LocalTime.of(1, 1, 1)); + // --- base --- - gbh.setXY(0, 0); - settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.defaults().setLabelDefault().get()); - settingsPanel.add(startValueTimezone, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.defaults().nextCol().setLabelDefault().get()); - settingsPanel.add(iterationTime, gbh.defaults().nextCol().setMaxWeightX().get()); - } + setLayout(new GridBagLayout()); - if (col.getFormattedDataType().contentEquals(T.DATE)) { + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + add(incrementsCombo, gbh.spanX().get()); + add(settingsPanel, gbh.nextRowFirstCol().topGap(5).fillBoth().spanY().get()); + } - startValueDate = new DatePicker(); - startValueDate.setDate(LocalDate.now()); + private void initNumericPanel(String dataType) { + + iterationField = WidgetFactory.createNumberTextField("iterationField"); + iterationField.setText("1"); + + startValueField = WidgetFactory.createNumberTextField("startValueField"); + if (isInteger(dataType)) { + startValueField.setText("" + Integer.MIN_VALUE); + } else if (isSmallint(dataType)) { + startValueField.setText("" + (-32768)); + } else if (isBigint(dataType)) { + startValueField.setText("-9223372036854775808"); + } else + startValueField.setText("0"); + + // --- arrange --- + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(startValueField, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } - iterationDate = new DateDifferenceSetter(); + private void initDatePanel() { - settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.defaults().setLabelDefault().get()); - settingsPanel.add(startValueDate, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); - settingsPanel.add(iterationDate, gbh.defaults().nextCol().setMaxWeightX().get()); - } + startDate = new DatePicker(); + startDate.setDate(LocalDate.now()); + + iterationYears = WidgetFactory.createNumberTextField("yearsField"); + iterationYears.setValue(0); + + iterationMouths = WidgetFactory.createNumberTextField("mouthsField"); + iterationMouths.setValue(0); + + iterationDays = WidgetFactory.createNumberTextField("daysField"); + iterationDays.setValue(1); + + // --- arrange --- + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(startDate, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Years")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationYears, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Mouths")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationMouths, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Days")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationDays, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } + + private void initTimePanel() { + + startTime = new TimePicker(); + startTime.setVisibleNullCheck(false); + startTime.setTime(LocalTime.MIN); + + iterationTime = new TimePicker(); + iterationTime.setVisibleNullCheck(false); + iterationTime.setTime(LocalTime.of(1, 0, 0)); + + // --- arrange --- + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(startTime, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationTime, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } + + private void initTimestampPanel() { + + startTimestamp = new TimestampPicker(); + startTimestamp.setVisibleNullCheck(false); + startTimestamp.setDateTime(LocalDateTime.now()); + + iterationTime = new TimePicker(); + iterationTime.setVisibleNullCheck(false); + iterationTime.setTime(LocalTime.of(0, 0, 0)); + + iterationYears = WidgetFactory.createNumberTextField("yearsField"); + iterationYears.setValue(0); + + iterationMouths = WidgetFactory.createNumberTextField("mouthsField"); + iterationMouths.setValue(0); + + iterationDays = WidgetFactory.createNumberTextField("daysField"); + iterationDays.setValue(1); + + // --- arrange --- + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(startTimestamp, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Years")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationYears, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Mouths")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationMouths, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Days")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationDays, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Time")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationTime, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } + + private void initZonedTimePanel() { + + startZonedTime = new ZonedTimePicker(); + startZonedTime.setVisibleNullCheck(false); + startZonedTime.setTime(LocalTime.MIN); + + iterationTime = new TimePicker(); + iterationTime.setVisibleNullCheck(false); + iterationTime.setTime(LocalTime.of(1, 0, 0)); + + // --- arrange --- + + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(startZonedTime, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationTime, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } + + private void initZonedTimestampPanel() { + + startZonedTimestamp = new ZonedTimestampPicker(); + startZonedTimestamp.setVisibleNullCheck(false); + startZonedTimestamp.setDateTime(LocalDateTime.now()); + + iterationTime = new TimePicker(); + iterationTime.setVisibleNullCheck(false); + iterationTime.setTime(LocalTime.of(0, 0, 0)); + + iterationYears = WidgetFactory.createNumberTextField("yearsField"); + iterationYears.setValue(0); + + iterationMouths = WidgetFactory.createNumberTextField("mouthsField"); + iterationMouths.setValue(0); - if (col.getFormattedDataType().contentEquals(T.TIMESTAMP)) { + iterationDays = WidgetFactory.createNumberTextField("daysField"); + iterationDays.setValue(1); - startValueDateTime = new TimestampPicker(); - startValueDateTime.setVisibleNullCheck(false); - startValueDateTime.setDateTime(LocalDateTime.now()); + // --- arrange --- - iterationDate = new DateDifferenceSetter(); + GridBagHelper gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.leftGap(3).topGap(3).get()); + settingsPanel.add(startZonedTimestamp, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Years")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationYears, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Mouths")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationMouths, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Days")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationDays, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JLabel(bundleString("Time")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(iterationTime, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(new JPanel(), gbh.nextRowFirstCol().fillBoth().spanX().spanY().get()); + } + + // --- - iterationTime = new TimePicker(); - iterationTime.setVisibleNullCheck(false); - iterationTime.setTime(LocalTime.of(0, 0, 0)); + private BigInteger getBigintValue(boolean increment) { - gbh.setXY(0, 0); - settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.defaults().setLabelDefault().get()); - settingsPanel.add(startValueDateTime, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); - settingsPanel.add(iterationDate, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(iterationTime, gbh.defaults().nextRow().setMaxWeightX().get()); + if (first) { + first = false; + currentBigint = new BigInteger(startValueField.getText()); + return currentBigint; } - if (col.getFormattedDataType().contentEquals(T.TIMESTAMP_WITH_TIMEZONE)) { + BigInteger iterationBig = new BigInteger(iterationField.getText()); + currentBigint = increment ? currentBigint.add(iterationBig) : currentBigint.subtract(iterationBig); + return currentBigint; + } + + private int getIntegerValue(String dataType, boolean increment) { - startValueDateTimezone = new ZonedTimestampPicker(); - startValueDateTimezone.setVisibleNullCheck(false); - startValueDateTimezone.setDateTime(LocalDateTime.now()); + if (first) { + first = false; + currentInteger = Long.parseLong(startValueField.getText()); + return isSmallint(dataType) ? (short) currentInteger : (int) currentInteger; + } - iterationDate = new DateDifferenceSetter(); + currentInteger += Long.parseLong(iterationField.getText()) * (increment ? 1 : -1); + return isSmallint(dataType) ? (short) currentInteger : (int) currentInteger; + } - iterationTime = new TimePicker(); - iterationTime.setVisibleNullCheck(false); - iterationTime.setTime(LocalTime.of(0, 0, 0)); + private double getDecimalValue(boolean increment) { - gbh.setXY(0, 0); - settingsPanel.add(new JLabel(bundleString("StartValue")), gbh.defaults().setLabelDefault().get()); - settingsPanel.add(startValueDateTimezone, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(new JLabel(bundleString("Iteration")), gbh.defaults().nextRowFirstCol().setLabelDefault().get()); - settingsPanel.add(iterationDate, gbh.defaults().nextCol().setMaxWeightX().get()); - settingsPanel.add(iterationTime, gbh.defaults().nextRow().setMaxWeightX().get()); + if (first) { + first = false; + currentDouble = Double.parseDouble(startValueField.getText()); + return currentDouble; } - setLayout(new GridBagLayout()); - gbh.setXY(0, 0); - add(plusMinusBox, gbh.defaults().spanX().get()); - add(settingsPanel, gbh.defaults().nextRowFirstCol().spanX().fillBoth().get()); - add(new JPanel(), gbh.defaults().nextRowFirstCol().spanX().spanY().fillBoth().get()); + currentDouble += Double.parseDouble(iterationField.getText()) * (increment ? 1 : -1); + return currentDouble; } - public Object getTestDataObject() { - if (col.getFormattedDataType().contentEquals(T.BIGINT) || col.getFormattedDataType().contentEquals(T.INT128)) { - if (first) { - cur_bigint = new BigInteger(startValueField.getText()); - first = false; - return cur_bigint; - } - BigInteger iterationBig = new BigInteger(iterationField.getText()); - if (plusMinusBox.getSelectedIndex() == 0) - cur_bigint = cur_bigint.add(iterationBig); - else cur_bigint = cur_bigint.subtract(iterationBig); - return cur_bigint; + private LocalDate getDateValue(boolean increment) { + + if (first) { + first = false; + currentLocalDateTime = LocalDateTime.of(startDate.getDate(), LocalTime.of(0, 0, 0)); + return currentLocalDateTime.toLocalDate(); } - if (col.getFormattedDataType().contentEquals(T.TIME)) { - if (first) { - current_local_date_time = startValueTime.getLocalTime().atDate(LocalDate.of(1970, 1, 1)); - first = false; - return current_local_date_time.toLocalTime(); - } - LocalTime iteration = iterationTime.getLocalTime(); - if (plusMinusBox.getSelectedIndex() == 0) { - current_local_date_time = current_local_date_time.plusHours(iteration.getHour()); - current_local_date_time = current_local_date_time.plusMinutes(iteration.getMinute()); - current_local_date_time = current_local_date_time.plusSeconds(iteration.getSecond()); - current_local_date_time = current_local_date_time.plusNanos(iteration.getNano()); - } else { - current_local_date_time = current_local_date_time.minusHours(iteration.getHour()); - current_local_date_time = current_local_date_time.minusMinutes(iteration.getMinute()); - current_local_date_time = current_local_date_time.minusSeconds(iteration.getSecond()); - current_local_date_time = current_local_date_time.minusNanos(iteration.getNano()); - } - return current_local_date_time.toLocalTime(); + + if (increment) { + currentLocalDateTime = currentLocalDateTime.plusYears(iterationYears.getValue()); + currentLocalDateTime = currentLocalDateTime.plusMonths(iterationMouths.getValue()); + currentLocalDateTime = currentLocalDateTime.plusDays(iterationDays.getValue()); + } else { + currentLocalDateTime = currentLocalDateTime.minusYears(iterationYears.getValue()); + currentLocalDateTime = currentLocalDateTime.minusMonths(iterationMouths.getValue()); + currentLocalDateTime = currentLocalDateTime.minusDays(iterationDays.getValue()); } - if (col.getFormattedDataType().contentEquals(T.TIME_WITH_TIMEZONE)) { - if (first) { - current_offset_date_time = startValueTimezone.getOffsetTime().atDate(LocalDate.of(1970, 1, 1)); - first = false; - return current_offset_date_time.toOffsetTime(); - } - LocalTime iteration = iterationTime.getLocalTime(); - if (plusMinusBox.getSelectedIndex() == 0) { - current_offset_date_time = current_offset_date_time.plusHours(iteration.getHour()); - current_offset_date_time = current_offset_date_time.plusMinutes(iteration.getMinute()); - current_offset_date_time = current_offset_date_time.plusSeconds(iteration.getSecond()); - current_offset_date_time = current_offset_date_time.plusNanos(iteration.getNano()); - } else { - current_offset_date_time = current_offset_date_time.minusHours(iteration.getHour()); - current_offset_date_time = current_offset_date_time.minusMinutes(iteration.getMinute()); - current_offset_date_time = current_offset_date_time.minusSeconds(iteration.getSecond()); - current_offset_date_time = current_offset_date_time.minusNanos(iteration.getNano()); - } - return current_offset_date_time.toOffsetTime(); + + return new Date(Timestamp.valueOf(currentLocalDateTime).getTime()).toLocalDate(); + } + + private LocalTime getTimeValue(boolean increment) { + + if (first) { + first = false; + currentLocalDateTime = startTime.getLocalTime().atDate(LocalDate.of(1970, 1, 1)); + return currentLocalDateTime.toLocalTime(); } - if (col.getFormattedDataType().contentEquals(T.DATE)) { - if (first) { - current_local_date_time = LocalDateTime.of(startValueDate.getDate(), LocalTime.of(0, 0, 0)); - first = false; - return current_local_date_time.toLocalDate(); - } - if (plusMinusBox.getSelectedIndex() == 0) { - current_local_date_time = current_local_date_time.plusYears(iterationDate.getYears()); - current_local_date_time = current_local_date_time.plusDays(iterationDate.getDays()); - current_local_date_time = current_local_date_time.plusMonths(iterationDate.getMouths()); - } else { - current_local_date_time = current_local_date_time.minusYears(iterationDate.getYears()); - current_local_date_time = current_local_date_time.minusDays(iterationDate.getDays()); - current_local_date_time = current_local_date_time.minusMonths(iterationDate.getMouths()); - } - return new Date(Timestamp.valueOf(current_local_date_time).getTime()); + + LocalTime iteration = iterationTime.getLocalTime(); + if (increment) { + currentLocalDateTime = currentLocalDateTime.plusHours(iteration.getHour()); + currentLocalDateTime = currentLocalDateTime.plusMinutes(iteration.getMinute()); + currentLocalDateTime = currentLocalDateTime.plusSeconds(iteration.getSecond()); + currentLocalDateTime = currentLocalDateTime.plusNanos(iteration.getNano()); + } else { + currentLocalDateTime = currentLocalDateTime.minusHours(iteration.getHour()); + currentLocalDateTime = currentLocalDateTime.minusMinutes(iteration.getMinute()); + currentLocalDateTime = currentLocalDateTime.minusSeconds(iteration.getSecond()); + currentLocalDateTime = currentLocalDateTime.minusNanos(iteration.getNano()); } - if (col.getFormattedDataType().contentEquals(T.TIMESTAMP)) { - if (first) { - current_local_date_time = startValueDateTime.getDateTime(); - first = false; - return current_local_date_time; - } - LocalTime iteration = iterationTime.getLocalTime(); - if (plusMinusBox.getSelectedIndex() == 0) { - current_local_date_time = current_local_date_time.plusYears(iterationDate.getYears()); - current_local_date_time = current_local_date_time.plusDays(iterationDate.getDays()); - current_local_date_time = current_local_date_time.plusMonths(iterationDate.getMouths()); - current_local_date_time = current_local_date_time.plusHours(iteration.getHour()); - current_local_date_time = current_local_date_time.plusMinutes(iteration.getMinute()); - current_local_date_time = current_local_date_time.plusSeconds(iteration.getSecond()); - current_local_date_time = current_local_date_time.plusNanos(iteration.getNano()); - } else { - current_local_date_time = current_local_date_time.minusYears(iterationDate.getYears()); - current_local_date_time = current_local_date_time.minusDays(iterationDate.getDays()); - current_local_date_time = current_local_date_time.minusMonths(iterationDate.getMouths()); - current_local_date_time = current_local_date_time.minusHours(iteration.getHour()); - current_local_date_time = current_local_date_time.minusMinutes(iteration.getMinute()); - current_local_date_time = current_local_date_time.minusSeconds(iteration.getSecond()); - current_local_date_time = current_local_date_time.minusNanos(iteration.getNano()); - } - return current_local_date_time; + return currentLocalDateTime.toLocalTime(); + } + + private LocalDateTime getTimestampValue(boolean increment) { + + if (first) { + first = false; + currentLocalDateTime = startTimestamp.getDateTime(); + return currentLocalDateTime; } - if (col.getFormattedDataType().contentEquals(T.TIMESTAMP_WITH_TIMEZONE)) { - if (first) { - current_offset_date_time = startValueDateTimezone.getOffsetDateTime(); - first = false; - return current_offset_date_time; - } - LocalTime iteration = iterationTime.getLocalTime(); - if (plusMinusBox.getSelectedIndex() == 0) { - current_offset_date_time = current_offset_date_time.plusYears(iterationDate.getYears()); - current_offset_date_time = current_offset_date_time.plusDays(iterationDate.getDays()); - current_offset_date_time = current_offset_date_time.plusMonths(iterationDate.getMouths()); - current_offset_date_time = current_offset_date_time.plusHours(iteration.getHour()); - current_offset_date_time = current_offset_date_time.plusMinutes(iteration.getMinute()); - current_offset_date_time = current_offset_date_time.plusSeconds(iteration.getSecond()); - current_offset_date_time = current_offset_date_time.plusNanos(iteration.getNano()); - } else { - current_offset_date_time = current_offset_date_time.minusYears(iterationDate.getYears()); - current_offset_date_time = current_offset_date_time.minusDays(iterationDate.getDays()); - current_offset_date_time = current_offset_date_time.minusMonths(iterationDate.getMouths()); - current_offset_date_time = current_offset_date_time.minusHours(iteration.getHour()); - current_offset_date_time = current_offset_date_time.minusMinutes(iteration.getMinute()); - current_offset_date_time = current_offset_date_time.minusSeconds(iteration.getSecond()); - current_offset_date_time = current_offset_date_time.minusNanos(iteration.getNano()); - } - return current_offset_date_time; + LocalTime iteration = iterationTime.getLocalTime(); + if (increment) { + currentLocalDateTime = currentLocalDateTime.plusYears(iterationYears.getValue()); + currentLocalDateTime = currentLocalDateTime.plusMonths(iterationMouths.getValue()); + currentLocalDateTime = currentLocalDateTime.plusDays(iterationDays.getValue()); + currentLocalDateTime = currentLocalDateTime.plusHours(iteration.getHour()); + currentLocalDateTime = currentLocalDateTime.plusMinutes(iteration.getMinute()); + currentLocalDateTime = currentLocalDateTime.plusSeconds(iteration.getSecond()); + currentLocalDateTime = currentLocalDateTime.plusNanos(iteration.getNano()); + } else { + currentLocalDateTime = currentLocalDateTime.minusYears(iterationYears.getValue()); + currentLocalDateTime = currentLocalDateTime.minusMonths(iterationMouths.getValue()); + currentLocalDateTime = currentLocalDateTime.minusDays(iterationDays.getValue()); + currentLocalDateTime = currentLocalDateTime.minusHours(iteration.getHour()); + currentLocalDateTime = currentLocalDateTime.minusMinutes(iteration.getMinute()); + currentLocalDateTime = currentLocalDateTime.minusSeconds(iteration.getSecond()); + currentLocalDateTime = currentLocalDateTime.minusNanos(iteration.getNano()); } - if (col.getFormattedDataType().contentEquals(T.INTEGER) || col.getFormattedDataType().contentEquals(T.SMALLINT)) { - if (first) { - current_value = Long.parseLong(startValueField.getText()); - first = false; - if (col.getFormattedDataType().contentEquals(T.SMALLINT)) - return (short) current_value; - return (int) current_value; - } - if (plusMinusBox.getSelectedIndex() == 0) - current_value += Long.parseLong(iterationField.getText()); - else current_value -= Long.parseLong(iterationField.getText()); - if (col.getFormattedDataType().contentEquals(T.SMALLINT)) - return (short) current_value; - return (int) current_value; + + return currentLocalDateTime; + } + + private OffsetTime getZonedTimeValue(boolean increment) { + + if (first) { + first = false; + currentOffsetDateTime = startZonedTime.getOffsetTime().atDate(LocalDate.of(1970, 1, 1)); + return currentOffsetDateTime.toOffsetTime(); } - if (col.getFormattedDataType().contentEquals(T.DOUBLE_PRECISION) - || col.getFormattedDataType().contentEquals(T.FLOAT) - || col.getFormattedDataType().startsWith(T.DECIMAL) - || col.getFormattedDataType().startsWith(T.NUMERIC) - || col.getFormattedDataType().startsWith(T.DECFLOAT) - ) { - if (first) { - current_double = Double.parseDouble(startValueField.getText()); - first = false; - return current_double; - } - if (plusMinusBox.getSelectedIndex() == 0) - current_double += Double.parseDouble(iterationField.getText()); - else current_double -= Double.parseDouble(iterationField.getText()); - return current_double; + + LocalTime iteration = iterationTime.getLocalTime(); + if (increment) { + currentOffsetDateTime = currentOffsetDateTime.plusHours(iteration.getHour()); + currentOffsetDateTime = currentOffsetDateTime.plusMinutes(iteration.getMinute()); + currentOffsetDateTime = currentOffsetDateTime.plusSeconds(iteration.getSecond()); + currentOffsetDateTime = currentOffsetDateTime.plusNanos(iteration.getNano()); + } else { + currentOffsetDateTime = currentOffsetDateTime.minusHours(iteration.getHour()); + currentOffsetDateTime = currentOffsetDateTime.minusMinutes(iteration.getMinute()); + currentOffsetDateTime = currentOffsetDateTime.minusSeconds(iteration.getSecond()); + currentOffsetDateTime = currentOffsetDateTime.minusNanos(iteration.getNano()); } + return currentOffsetDateTime.toOffsetTime(); + } + + private OffsetDateTime getZonedTimestampValue(boolean increment) { + + if (first) { + first = false; + currentOffsetDateTime = startZonedTimestamp.getOffsetDateTime(); + return currentOffsetDateTime; + } + + LocalTime iteration = iterationTime.getLocalTime(); + if (increment) { + currentLocalDateTime = currentLocalDateTime.plusYears(iterationYears.getValue()); + currentLocalDateTime = currentLocalDateTime.plusMonths(iterationMouths.getValue()); + currentLocalDateTime = currentLocalDateTime.plusDays(iterationDays.getValue()); + currentLocalDateTime = currentLocalDateTime.plusHours(iteration.getHour()); + currentLocalDateTime = currentLocalDateTime.plusMinutes(iteration.getMinute()); + currentLocalDateTime = currentLocalDateTime.plusSeconds(iteration.getSecond()); + currentLocalDateTime = currentLocalDateTime.plusNanos(iteration.getNano()); + } else { + currentLocalDateTime = currentLocalDateTime.minusYears(iterationYears.getValue()); + currentLocalDateTime = currentLocalDateTime.minusMonths(iterationMouths.getValue()); + currentLocalDateTime = currentLocalDateTime.minusDays(iterationDays.getValue()); + currentLocalDateTime = currentLocalDateTime.minusHours(iteration.getHour()); + currentLocalDateTime = currentLocalDateTime.minusMinutes(iteration.getMinute()); + currentLocalDateTime = currentLocalDateTime.minusSeconds(iteration.getSecond()); + currentLocalDateTime = currentLocalDateTime.minusNanos(iteration.getNano()); + } + + return currentOffsetDateTime; + } + + // --- AbstractMethodPanel impl --- + + @Override + public Object getTestDataObject() { + + String dataType = col.getFormattedDataType(); + boolean increment = incrementsCombo.getSelectedIndex() == 0; + + if (isBigint(dataType)) { + return getBigintValue(increment); + + } else if (isSmallint(dataType) || isInteger(dataType)) { + return getIntegerValue(dataType, increment); + + } else if (isDecimal(dataType) || isDecFloat(dataType)) { + return getDecimalValue(increment); + + } else if (isDate(dataType)) { + return getDateValue(increment); + + } else if (isTime(dataType)) { + return getTimeValue(increment); + + } else if (isTimestamp(dataType)) { + return getTimestampValue(increment); + + } else if (isZonedTime(dataType)) { + return getZonedTimeValue(increment); + + } else if (isZonedTimestamp(dataType)) + return getZonedTimestampValue(increment); + return null; } + } diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java index 6265149fd..d21370cf7 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java @@ -101,15 +101,15 @@ private void initNumericPanel(String dataType) { maxField = WidgetFactory.createNumberTextField("maxField"); minField = WidgetFactory.createNumberTextField("minField"); - if (dataType.contentEquals(T.INTEGER)) { + if (isInteger(dataType)) { maxField.setText("" + Integer.MAX_VALUE); minField.setText("" + Integer.MIN_VALUE); - } else if (dataType.contentEquals(T.SMALLINT)) { + } else if (isSmallint(dataType)) { maxField.setText("" + 32767); minField.setText("" + (-32768)); - } else if (dataType.contentEquals("BIGINT")) { + } else if (isBigint(dataType)) { maxField.setText("9223372036854775807"); minField.setText("-9223372036854775808"); diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index ca47839ff..f1f34e5de 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1548,6 +1548,10 @@ GeneratorTestDataPanel.Selected=Selected/Deselected GeneratorTestDataPanel.Source=Source GeneratorTestDataPanel.Start=Start GeneratorTestDataPanel.StartValue=Start value +GeneratorTestDataPanel.Years=Years increment +GeneratorTestDataPanel.Mouths=Mouths increment +GeneratorTestDataPanel.Days=Days increment +GeneratorTestDataPanel.Time=Time increment GeneratorTestDataPanel.Stop=Stop GeneratorTestDataPanel.StopOnError=Stop on error GeneratorTestDataPanel.TITLE=Test Data Generator diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 42afb6d0d..f40d3ee88 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1548,6 +1548,10 @@ GeneratorTestDataPanel.Selected=Выбрать GeneratorTestDataPanel.Source=Источник GeneratorTestDataPanel.Start=Начать генерацию GeneratorTestDataPanel.StartValue=Начальное значение +GeneratorTestDataPanel.Years=Инкремент по годам +GeneratorTestDataPanel.Mouths=Инкремент по месяцам +GeneratorTestDataPanel.Days=Инкремент по дням +GeneratorTestDataPanel.Time=Инкремент по времени GeneratorTestDataPanel.Stop=Остановить GeneratorTestDataPanel.StopOnError=Остановить при ошибке GeneratorTestDataPanel.TITLE=Генератор тестовых данных diff --git a/src/org/underworldlabs/swing/DateDifferenceSetter.java b/src/org/underworldlabs/swing/DateDifferenceSetter.java deleted file mode 100644 index 68af09d10..000000000 --- a/src/org/underworldlabs/swing/DateDifferenceSetter.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.underworldlabs.swing; - -import javax.swing.*; -import java.awt.*; - -public class DateDifferenceSetter extends JPanel { - NumberTextField yearsField; - NumberTextField mouthsField; - NumberTextField daysField; - - public DateDifferenceSetter() { - init(); - } - - private void init() { - yearsField = new NumberTextField(); - yearsField.setValue(0); - - mouthsField = new NumberTextField(); - mouthsField.setValue(0); - - daysField = new NumberTextField(); - daysField.setValue(0); - - setLayout(new GridBagLayout()); - JLabel label = new JLabel("Years"); - add(label, new GridBagConstraints(0, 0, 1, 1, 0, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); - add(yearsField, new GridBagConstraints(1, 0, 1, 1, 1, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); - - label = new JLabel("Mouths"); - add(label, new GridBagConstraints(0, 1, 1, 1, 0, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); - add(mouthsField, new GridBagConstraints(1, 1, 1, 1, 1, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); - - label = new JLabel("Days"); - add(label, new GridBagConstraints(0, 2, 1, 1, 0, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); - add(daysField, new GridBagConstraints(1, 2, 1, 1, 1, 0, - GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); - } - - public int getYears() { - return yearsField.getValue(); - } - - public int getMouths() { - return mouthsField.getValue(); - } - - public int getDays() { - return daysField.getValue(); - } - -} From 498b1b774052d06fad7d5d84f12ca80a2f782f6a Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 2 Aug 2024 17:13:48 +0300 Subject: [PATCH 038/141] Add switching to the "Output" tab when start generation of the test data (RS-181680) --- src/org/executequery/gui/browser/GeneratorTestDataPanel.java | 1 + .../methodspanels/GetFromOtherTablePanel.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java index c0bf0701c..9cb292b15 100644 --- a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java +++ b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java @@ -197,6 +197,7 @@ private void start() { @Override public Object construct() { + tabbedPane.setSelectedIndex(1); runGeneration(); return Constants.WORKER_SUCCESS; } diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java index 1100aeeda..594be5d87 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/GetFromOtherTablePanel.java @@ -149,7 +149,8 @@ public Object getTestDataObject() { if (first) { try { - ResultSet rs = executor.getResultSet(getQuery()).getResultSet(); + String query = getQuery(); + ResultSet rs = executor.getResultSet(query).getResultSet(); while (rs.next()) objList.add(rs.getObject(1)); From b958234814687953f6b2928858043a6fd89b1be9 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 09:50:49 +0300 Subject: [PATCH 039/141] Fix trigger name generating when create new one with the help of the CreateTriggerPanel (RS-189141) --- .../databaseobjects/CreateTriggerPanel.java | 3 ++ src/org/underworldlabs/util/SQLUtils.java | 51 ++++++++++++------- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/src/org/executequery/gui/databaseobjects/CreateTriggerPanel.java b/src/org/executequery/gui/databaseobjects/CreateTriggerPanel.java index f80749233..9b38baabb 100644 --- a/src/org/executequery/gui/databaseobjects/CreateTriggerPanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateTriggerPanel.java @@ -343,6 +343,9 @@ protected void checkExternal() { @Override protected void reset() { + if (!editing) + return; + nameField.setEditable(false); triggerTypeCombo.setEnabled(false); diff --git a/src/org/underworldlabs/util/SQLUtils.java b/src/org/underworldlabs/util/SQLUtils.java index c35206922..dfc529ee1 100644 --- a/src/org/underworldlabs/util/SQLUtils.java +++ b/src/org/underworldlabs/util/SQLUtils.java @@ -794,26 +794,41 @@ public static ColumnData columnDataFromProcedureParameter(Parameter parameter, D } public static String generateNameForDBObject(String type, DatabaseConnection databaseConnection) { - String name = "NEW_" + type + "_"; - int int_number = 0; - String number; - List keys = ConnectionsTreePanel.getPanelFromBrowser().getDefaultDatabaseHostFromConnection(databaseConnection).getDatabaseObjectsForMetaTag(type); - if (keys != null) - for (NamedObject key : keys) { - if (!MiscUtils.isNull(key.getName())) - if (key.getName().contains(name)) { - number = key.getName().replace(name, ""); - try { - if (Integer.parseInt(number) > int_number) - int_number = Integer.parseInt(number); - } catch (NumberFormatException e) { - Log.debug(e.getMessage()); - } - } + String newObjectName = "NEW_" + type + "_"; + String stringNumber; + int newNumber = 0; + + DefaultDatabaseHost databaseHost = ConnectionsTreePanel.getPanelFromBrowser().getDefaultDatabaseHostFromConnection(databaseConnection); + List databaseObjects = databaseHost.getDatabaseObjectsForMetaTag(type); + if (Objects.equals(type, META_TYPES[TRIGGER])) { + databaseObjects.addAll(databaseHost.getDatabaseObjectsForMetaTag(META_TYPES[DATABASE_TRIGGER])); + databaseObjects.addAll(databaseHost.getDatabaseObjectsForMetaTag(META_TYPES[DDL_TRIGGER])); + } + + if (databaseObjects == null) + return newObjectName + "1"; + + for (NamedObject object : databaseObjects) { + + if (MiscUtils.isNull(object.getName())) + continue; + + if (object.getName().contains(newObjectName)) { + stringNumber = object.getName().replace(newObjectName, ""); + + try { + if (Integer.parseInt(stringNumber) > newNumber) + newNumber = Integer.parseInt(stringNumber); + + } catch (NumberFormatException e) { + Log.debug(e.getMessage()); + } } - number = String.valueOf(int_number + 1); - return name + number; + } + + stringNumber = String.valueOf(newNumber + 1); + return newObjectName + stringNumber; } private static String generateNameForConstraint(String type, List keys) { From 9e09a4400a28f125c64972d28c1e35f7892c767e Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 10:14:43 +0300 Subject: [PATCH 040/141] Fix reloading connections tree paths (RS-183683) --- .../executequery/gui/browser/ConnectionsTreePanel.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/org/executequery/gui/browser/ConnectionsTreePanel.java b/src/org/executequery/gui/browser/ConnectionsTreePanel.java index 26b38abe6..0c48f07c3 100644 --- a/src/org/executequery/gui/browser/ConnectionsTreePanel.java +++ b/src/org/executequery/gui/browser/ConnectionsTreePanel.java @@ -967,18 +967,11 @@ public void reloadPath(TreePath path, boolean refreshButtons) { GUIUtilities.showWaitCursor(); - boolean expanded = tree.isExpanded(path); - if (expanded) - tree.collapsePath(path); - DatabaseObjectNode node = (DatabaseObjectNode) object; node.reset(); + nodeStructureChanged(node); pathExpanded(path); - - if (expanded) - tree.expandPath(path); - pathChanged(oldSelectionPath, path, refreshButtons); // --- reload panel view --- From ad56a2effbc1a5dd3d49937811d23e5efedb7be1 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 10:31:22 +0300 Subject: [PATCH 041/141] Fix saving SQL script after DB comparing (RS-179977) --- src/org/executequery/gui/browser/ComparerDBPanel.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/org/executequery/gui/browser/ComparerDBPanel.java b/src/org/executequery/gui/browser/ComparerDBPanel.java index 6d41c128a..75e66512b 100644 --- a/src/org/executequery/gui/browser/ComparerDBPanel.java +++ b/src/org/executequery/gui/browser/ComparerDBPanel.java @@ -844,9 +844,9 @@ private void saveScript() { try (FileOutputStream path = new FileOutputStream(fileSavePath)) { - for (int i = 0; i < comparer.getScript().size(); i++) { - String text = comparer.getScript(i); - byte[] buffer = text.getBytes(); + String[] sqlTextLines = sqlTextPanel.getSQLText().split("\n"); + for (String sqlLine : sqlTextLines) { + byte[] buffer = (sqlLine + "\n").getBytes(); path.write(buffer, 0, buffer.length); } @@ -854,7 +854,7 @@ private void saveScript() { loggingOutputPanel.append(bundleString("SavedTo") + fileSavePath); } catch (IOException e) { - e.printStackTrace(System.out); + Log.error(e.getMessage(), e); } } } From 61d8c275a75b83d722d047d4b436cffe5ca1e34f Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 12:09:54 +0300 Subject: [PATCH 042/141] Update Java Native Access and Java Native Access Platform packages versions (RS-187358) --- modules/redexpert/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/redexpert/pom.xml b/modules/redexpert/pom.xml index 6fa19408b..96e1836f5 100644 --- a/modules/redexpert/pom.xml +++ b/modules/redexpert/pom.xml @@ -142,7 +142,7 @@ net.java.dev.jna jna - 5.5.0 + 5.14.0 @@ -154,7 +154,7 @@ net.java.dev.jna jna-platform - 5.5.0 + 5.14.0 From df3436674cf672b839a3f5fb8ea42521313d4e5a Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 12:14:23 +0300 Subject: [PATCH 043/141] Add comment tabs for JOB and TABLESPACE panels (RS-143258) --- .../executequery/gui/databaseobjects/CreateJobPanel.java | 6 +++--- .../gui/databaseobjects/CreateTablespacePanel.java | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/org/executequery/gui/databaseobjects/CreateJobPanel.java b/src/org/executequery/gui/databaseobjects/CreateJobPanel.java index d7df9f8b9..7ba3bfd85 100644 --- a/src/org/executequery/gui/databaseobjects/CreateJobPanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateJobPanel.java @@ -26,7 +26,7 @@ public class CreateJobPanel extends AbstractCreateObjectPanel { private DefaultDatabaseJob job; - // --- GUI ccomponents --- + // --- GUI components --- private TimestampPicker startDatePicker; private TimestampPicker endDatePicker; @@ -81,7 +81,7 @@ protected void init() { tabbedPane.add(bundleString("Task"), taskPanel); tabbedPane.add(bundleString("Schedule"), cronPanel); -// addCommentTab(null); RDB doesn't support adding comments on the JOBs + addCommentTab(null); if (!editing) arrange(); @@ -99,7 +99,7 @@ protected void initEdited() { reset(); arrange(); -// simpleCommentPanel.setDatabaseObject(job); RDB doesn't support adding comments on the JOBs + simpleCommentPanel.setDatabaseObject(job); nameField.setEditable(false); tabbedPane.addTab(bundleString("Log"), new JobsLogPanel(job)); addCreateSqlTab(job); diff --git a/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java b/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java index 09bd8ca54..ae0b715d4 100644 --- a/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java @@ -68,6 +68,7 @@ public void actionPerformed(ActionEvent e) { centralPanel.add(fileField, gbh.nextCol().setMaxWeightX().fillHorizontally().get()); centralPanel.add(fileButton, gbh.nextCol().setLabelDefault().get()); tabbedPane.add("SQL", sqlTextPanel); + addCommentTab(null); nameField.getDocument().addDocumentListener(new DocumentListener() { @Override @@ -111,6 +112,7 @@ protected void initEdited() { tabbedPane.insertTab(Bundles.getCommon("contents"), null, new JScrollPane(tablesIndexesPanel), null, 0); addCreateSqlTab(tablespace); tabbedPane.setSelectedIndex(0); + simpleCommentPanel.setDatabaseObject(tablespace); } protected void reset() { From 445abdc09aef73669dccba58b5f16e88450784a6 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 14:20:44 +0300 Subject: [PATCH 044/141] Fix SQL script generating for JOB with comment (RS-143258) --- src/org/executequery/gui/databaseobjects/CreateJobPanel.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/org/executequery/gui/databaseobjects/CreateJobPanel.java b/src/org/executequery/gui/databaseobjects/CreateJobPanel.java index 7ba3bfd85..2e30d53ea 100644 --- a/src/org/executequery/gui/databaseobjects/CreateJobPanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateJobPanel.java @@ -1,6 +1,5 @@ package org.executequery.gui.databaseobjects; -import org.executequery.Constants; import org.executequery.databasemediators.DatabaseConnection; import org.executequery.databaseobjects.NamedObject; import org.executequery.databaseobjects.impl.DefaultDatabaseJob; @@ -217,7 +216,7 @@ private String getGenerateCreateQuery() { jobTypeCombo.getSelectedIndex() == DefaultDatabaseJob.PSQL_TYPE ? sqlTextPanel.getSQLText() : bashTextPanel.getTextAreaComponent().getText(), - Constants.EMPTY, + simpleCommentPanel.getComment(), false, getDatabaseConnection() ); @@ -239,7 +238,7 @@ private String getGenerateAlterQuery() { jobTypeCombo.getSelectedIndex() == DefaultDatabaseJob.PSQL_TYPE ? sqlTextPanel.getSQLText() : bashTextPanel.getTextAreaComponent().getText(), - Constants.EMPTY, + simpleCommentPanel.getComment(), false ); } From d0227528141128ac1b706db2d175821928ec0c54 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 14:42:26 +0300 Subject: [PATCH 045/141] Fix SQL script generating for TABLESPACE with comment (RS-143258) --- .../impl/DefaultDatabaseTablespace.java | 9 ++- .../CreateTablespacePanel.java | 30 ++++++--- src/org/underworldlabs/util/SQLUtils.java | 62 +++++++++++++++---- 3 files changed, 76 insertions(+), 25 deletions(-) diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTablespace.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTablespace.java index 9fab898d2..3510729bf 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTablespace.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTablespace.java @@ -3,6 +3,7 @@ import org.executequery.databasemediators.spi.DefaultStatementExecutor; import org.executequery.databaseobjects.DatabaseMetaTag; import org.executequery.databaseobjects.NamedObject; +import org.executequery.gui.browser.comparer.Comparer; import org.executequery.sql.sqlbuilder.Field; import org.executequery.sql.sqlbuilder.SelectBuilder; import org.executequery.sql.sqlbuilder.Table; @@ -178,15 +179,14 @@ public void setTables(List tables) { @Override public String getCreateSQLText() throws DataSourceException { - return SQLUtils.generateCreateTablespace(getName(), getFileName(), getHost().getDatabaseConnection()); + return SQLUtils.generateCreateTablespace(getName(), getFileName(), getRemarks(), true, getHost().getDatabaseConnection()); } @Override public String getCreateSQLTextWithoutComment() throws DataSourceException { - return getCreateSQLText(); + return SQLUtils.generateCreateTablespace(getName(), getFileName(), null, false, getHost().getDatabaseConnection()); } - @Override public String getDropSQL() throws DataSourceException { return SQLUtils.generateDefaultDropQuery("TABLESPACE", getName(), getHost().getDatabaseConnection()); @@ -195,8 +195,7 @@ public String getDropSQL() throws DataSourceException { @Override public String getCompareAlterSQL(AbstractDatabaseObject databaseObject) throws DataSourceException { DefaultDatabaseTablespace comparingTablespace = (DefaultDatabaseTablespace) databaseObject; - return SQLUtils.generateAlterTablespace(this, comparingTablespace); + return SQLUtils.generateAlterTablespace(this, comparingTablespace, Comparer.isCommentsNeed()); } } - diff --git a/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java b/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java index ae0b715d4..9734bed6a 100644 --- a/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java @@ -123,9 +123,27 @@ protected void reset() { @Override protected String generateQuery() { - return editing ? - SQLUtils.generateAlterTablespace(nameField.getText(), fileField.getText(), getDatabaseConnection()) : - SQLUtils.generateCreateTablespace(nameField.getText(), fileField.getText(), getDatabaseConnection()); + return editing ? getGenerateAlterQuery() : getGenerateCreateQuery(); + } + + private String getGenerateCreateQuery() { + return SQLUtils.generateCreateTablespace( + nameField.getText(), + fileField.getText(), + simpleCommentPanel.getComment(), + true, + getDatabaseConnection() + ); + } + + private String getGenerateAlterQuery() { + return SQLUtils.generateAlterTablespace( + nameField.getText(), + fileField.getText(), + simpleCommentPanel.getComment(), + true, + getDatabaseConnection() + ); } private void generateSQL() { @@ -134,12 +152,10 @@ private void generateSQL() { @Override public void createObject() { - if (tabbedPane.getSelectedComponent() != sqlTextPanel) { + if (tabbedPane.getSelectedComponent() != sqlTextPanel) generateSQL(); - } - displayExecuteQueryDialog(sqlTextPanel.getSQLText(), ";"); - + displayExecuteQueryDialog(sqlTextPanel.getSQLText(), ";"); } @Override diff --git a/src/org/underworldlabs/util/SQLUtils.java b/src/org/underworldlabs/util/SQLUtils.java index dfc529ee1..e0a7257b9 100644 --- a/src/org/underworldlabs/util/SQLUtils.java +++ b/src/org/underworldlabs/util/SQLUtils.java @@ -1418,26 +1418,62 @@ public static String generateAlterUser(DefaultDatabaseUser thisUser, DefaultData } - public static String generateAlterTablespace( - DefaultDatabaseTablespace thisTablespace, DefaultDatabaseTablespace comparingTablespace) { + public static String generateAlterTablespace(DefaultDatabaseTablespace thisTablespace, + DefaultDatabaseTablespace comparingTablespace, + boolean commentsNeed) { + + StringBuilder sb = new StringBuilder(); String comparingFileName = comparingTablespace.getFileName(); + if (!Objects.equals(thisTablespace.getFileName(), comparingFileName)) { + sb.append(generateAlterTablespace( + thisTablespace.getName(), + comparingFileName, + null, + false, + thisTablespace.getHost().getDatabaseConnection() + )); + } + + String comparingComment = comparingTablespace.getRemarks(); + if (commentsNeed && !Objects.equals(thisTablespace.getRemarks(), comparingComment)) { + sb.append(generateComment( + thisTablespace.getName(), + "TABLESPACE", + comparingComment, + ";", + false, + thisTablespace.getHost().getDatabaseConnection() + )); + } - return !Objects.equals(thisTablespace.getFileName(), comparingFileName) ? - "/* there are no changes */\n" : - generateAlterTablespace(thisTablespace.getName(), comparingFileName, thisTablespace.getHost().getDatabaseConnection()); + return sb.toString().isEmpty() ? "/* there are no changes */\n" : sb.toString(); } - public static String generateAlterTablespace(String name, String file, DatabaseConnection dc) { - String sb = "ALTER TABLESPACE " + format(name, dc) + - " SET FILE '" + file + "';\n"; - return sb; + public static String generateAlterTablespace(String name, String file, String comment, boolean commentNeed, DatabaseConnection dc) { + StringBuilder sb = new StringBuilder(); + String formattedName = format(name, dc); + + sb.append("ALTER TABLESPACE ").append(formattedName); + sb.append(" SET FILE '").append(file).append("';\n"); + + if (commentNeed && !MiscUtils.isNull(comment)) + sb.append(generateComment(formattedName, "TABLESPACE", comment, ";")); + + return sb.toString(); } - public static String generateCreateTablespace(String name, String file, DatabaseConnection dc) { - String sb = "CREATE TABLESPACE " + format(name, dc) + - " FILE '" + file + "';\n"; - return sb; + public static String generateCreateTablespace(String name, String file, String comment, boolean commentNeed, DatabaseConnection dc) { + StringBuilder sb = new StringBuilder(); + String formattedName = format(name, dc); + + sb.append("CREATE TABLESPACE ").append(formattedName); + sb.append(" FILE '").append(file).append("';\n"); + + if (commentNeed && !MiscUtils.isNull(comment)) + sb.append(generateComment(formattedName, "TABLESPACE", comment, ";")); + + return sb.toString(); } public static String generateCreateSequence( From 6e40fc3a492faf80b21ff4af10d771bb663e79b5 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 14:55:40 +0300 Subject: [PATCH 046/141] Set Monospaced font for the "Trace Manager" sql panel (RS-189130) --- .../gui/browser/managment/tracemanager/TablePanel.java | 1 + src/org/executequery/gui/text/SimpleSqlTextPanel.java | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/org/executequery/gui/browser/managment/tracemanager/TablePanel.java b/src/org/executequery/gui/browser/managment/tracemanager/TablePanel.java index 74ae9bee8..bc68933a1 100644 --- a/src/org/executequery/gui/browser/managment/tracemanager/TablePanel.java +++ b/src/org/executequery/gui/browser/managment/tracemanager/TablePanel.java @@ -307,6 +307,7 @@ public void mouseClicked(MouseEvent e) { littleSplit.setTopComponent(logListPanel); txtFieldRawSql = new SimpleSqlTextPanel(); txtFieldRawSql.setBorder(BorderFactory.createTitledBorder(TraceManagerPanel.bundleString("Body"))); + txtFieldRawSql.setFont(new Font("Monospaced", Font.PLAIN, 14)); littleSplit.setBottomComponent(txtFieldRawSql); JSplitPane bigSplit = new JSplitPane(); diff --git a/src/org/executequery/gui/text/SimpleSqlTextPanel.java b/src/org/executequery/gui/text/SimpleSqlTextPanel.java index c4e83463b..b2ea602d8 100644 --- a/src/org/executequery/gui/text/SimpleSqlTextPanel.java +++ b/src/org/executequery/gui/text/SimpleSqlTextPanel.java @@ -206,4 +206,12 @@ public boolean contentCanBeSaved() { return true; } + @Override + public void setFont(Font font) { + super.setFont(font); + + if (textComponent != null) + textComponent.setFont(font); + } + } From 5c52fb27222c3aec08b954cddda4cfca436af14b Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 15:11:07 +0300 Subject: [PATCH 047/141] CreateTablespacePanel class code clean --- .../CreateTablespacePanel.java | 140 +++++++++--------- 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java b/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java index 9734bed6a..236608b24 100644 --- a/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateTablespacePanel.java @@ -16,15 +16,18 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.io.File; public class CreateTablespacePanel extends AbstractCreateObjectPanel { + public static final String CREATE_TITLE = getCreateTitle(NamedObject.TABLESPACE); public static final String EDIT_TITLE = getEditTitle(NamedObject.TABLESPACE); - private JTextField fileField; + + private DefaultDatabaseTablespace tablespace; + private JButton fileButton; + private JTextField fileField; + private FileChooserDialog fileChooser; private SimpleSqlTextPanel sqlTextPanel; public CreateTablespacePanel(DatabaseConnection dc, ActionContainer dialog) { @@ -35,70 +38,21 @@ public CreateTablespacePanel(DatabaseConnection dc, ActionContainer dialog, Obje super(dc, dialog, databaseObject); } - public CreateTablespacePanel(DatabaseConnection dc, ActionContainer dialog, Object databaseObject, Object[] params) { - super(dc, dialog, databaseObject, params); - } - @Override protected void init() { - sqlTextPanel = new SimpleSqlTextPanel(); + fileField = new JTextField(); + fileChooser = new FileChooserDialog(); + sqlTextPanel = new SimpleSqlTextPanel(); + fileButton = new JButton("..."); - fileButton.addActionListener(new ActionListener() { - final FileChooserDialog fileChooser = new FileChooserDialog(); + fileButton.addActionListener(e -> browseFile()); - @Override - public void actionPerformed(ActionEvent e) { - int returnVal = fileChooser.showOpenDialog(fileButton); - if (returnVal == JFileChooser.APPROVE_OPTION) { - File file = fileChooser.getSelectedFile(); - fileField.setText(file.getAbsolutePath()); - } - } - }); - GridBagHelper gbh = new GridBagHelper(); - gbh.setDefaults(new GridBagConstraints( - 0, 0, 1, 1, 0, 0, - GridBagConstraints.NORTHWEST, - GridBagConstraints.HORIZONTAL, - new Insets(5, 5, 5, 5), 0, 0)); - gbh.defaults(); - centralPanel.setLayout(new GridBagLayout()); - centralPanel.add(new JLabel(Bundles.getCommon("file")), gbh.nextRowFirstCol().setLabelDefault().get()); - centralPanel.add(fileField, gbh.nextCol().setMaxWeightX().fillHorizontally().get()); - centralPanel.add(fileButton, gbh.nextCol().setLabelDefault().get()); tabbedPane.add("SQL", sqlTextPanel); addCommentTab(null); - nameField.getDocument().addDocumentListener(new DocumentListener() { - @Override - public void insertUpdate(DocumentEvent e) { - generateSQL(); - } - @Override - public void removeUpdate(DocumentEvent e) { - generateSQL(); - } - @Override - public void changedUpdate(DocumentEvent e) { - generateSQL(); - } - }); - fileField.getDocument().addDocumentListener(new DocumentListener() { - @Override - public void insertUpdate(DocumentEvent e) { - generateSQL(); - } - @Override - public void removeUpdate(DocumentEvent e) { - generateSQL(); - } - @Override - public void changedUpdate(DocumentEvent e) { - generateSQL(); - } - }); - + arrange(); + addListeners(); generateSQL(); } @@ -106,19 +60,26 @@ public void changedUpdate(DocumentEvent e) { protected void initEdited() { reset(); nameField.setEditable(false); + DependPanel tablesIndexesPanel = new DependPanel(TreePanel.TABLESPACE); tablesIndexesPanel.setDatabaseObject(tablespace); tablesIndexesPanel.setDatabaseConnection(tablespace.getHost().getDatabaseConnection()); + tabbedPane.insertTab(Bundles.getCommon("contents"), null, new JScrollPane(tablesIndexesPanel), null, 0); + addCreateSqlTab(tablespace); tabbedPane.setSelectedIndex(0); simpleCommentPanel.setDatabaseObject(tablespace); } - protected void reset() { - nameField.setText(tablespace.getName()); - fileField.setText(tablespace.getFileName()); - generateSQL(); + private void arrange() { + + centralPanel.setLayout(new GridBagLayout()); + + GridBagHelper gbh = new GridBagHelper().setInsets(5, 3, 0, 0).anchorNorthWest().fillHorizontally(); + centralPanel.add(new JLabel(Bundles.getCommon("file")), gbh.nextRowFirstCol().get()); + centralPanel.add(fileField, gbh.nextCol().topGap(0).setMaxWeightX().get()); + centralPanel.add(fileButton, gbh.nextCol().rightGap(5).setMinWeightX().get()); } @Override @@ -146,18 +107,23 @@ private String getGenerateAlterQuery() { ); } - private void generateSQL() { - sqlTextPanel.setSQLText(generateQuery()); - } - @Override public void createObject() { if (tabbedPane.getSelectedComponent() != sqlTextPanel) generateSQL(); - displayExecuteQueryDialog(sqlTextPanel.getSQLText(), ";"); } + @Override + protected void reset() { + if (!editing) + return; + + nameField.setText(tablespace.getName()); + fileField.setText(tablespace.getFileName()); + generateSQL(); + } + @Override public String getCreateTitle() { return CREATE_TITLE; @@ -173,8 +139,6 @@ public String getTypeObject() { return NamedObject.META_TYPES[NamedObject.TABLESPACE]; } - private DefaultDatabaseTablespace tablespace; - @Override public void setDatabaseObject(Object databaseObject) { tablespace = (DefaultDatabaseTablespace) databaseObject; @@ -182,6 +146,42 @@ public void setDatabaseObject(Object databaseObject) { @Override public void setParameters(Object[] params) { + } + + private void addListeners() { + + DocumentListener documentListener = new DocumentListener() { + @Override + public void insertUpdate(DocumentEvent e) { + generateSQL(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + generateSQL(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + generateSQL(); + } + }; + + nameField.getDocument().addDocumentListener(documentListener); + fileField.getDocument().addDocumentListener(documentListener); + } + + private void browseFile() { + int returnVal = fileChooser.showOpenDialog(fileButton); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File file = fileChooser.getSelectedFile(); + fileField.setText(file.getAbsolutePath()); + } } + + private void generateSQL() { + sqlTextPanel.setSQLText(generateQuery()); + } + } From 468933c23068430dac3d9374775b814dd8162ea9 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 15:56:00 +0300 Subject: [PATCH 048/141] Fix execution of the SQL scripts with parameters (RS-187211) --- src/org/executequery/sql/QueryDispatcher.java | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/src/org/executequery/sql/QueryDispatcher.java b/src/org/executequery/sql/QueryDispatcher.java index 881c265dc..0a1647252 100644 --- a/src/org/executequery/sql/QueryDispatcher.java +++ b/src/org/executequery/sql/QueryDispatcher.java @@ -1059,41 +1059,34 @@ private Object executeScript(String script, boolean anyConnections) { continue; } + if (isBeginEndQuery(query)) + return executeCreateOrAlterObject(queryToExecute, query, anyConnections); + int type = query.getQueryType(); if (type != QueryTypes.COMMIT && type != QueryTypes.ROLLBACK) { - logExecution(queryToExecute, anyConnections); } else { - - if (type == QueryTypes.COMMIT) { - - setOutputMessage(querySender.getDatabaseConnection(), - SqlMessages.ACTION_MESSAGE, - COMMITTING_LAST, anyConnections); - - } else if (type == QueryTypes.ROLLBACK) { - - setOutputMessage(querySender.getDatabaseConnection(), - SqlMessages.ACTION_MESSAGE, - ROLLING_BACK_LAST, anyConnections); - } - + setOutputMessage( + querySender.getDatabaseConnection(), + SqlMessages.ACTION_MESSAGE, + type == QueryTypes.COMMIT ? COMMITTING_LAST : ROLLING_BACK_LAST, + anyConnections + ); } - PreparedStatement statement; - if (queryToExecute.toUpperCase().contains("SET BLOBFILE ")) { blobFilePath = "blobfile=" + queryToExecute.substring(queryToExecute.indexOf("SET BLOBFILE ") + 14, queryToExecute.length() - 1); continue; } + PreparedStatement statement; if (query.getQueryType() == QueryTypes.SET_AUTODDL_ON || query.getQueryType() == QueryTypes.SET_AUTODDL_OFF) statement = null; else if (query.getQueryType() == QueryTypes.INSERT) statement = prepareStatementWithParameters(queryToExecute, blobFilePath); else - statement = prepareStatementWithParameters(queryToExecute, ""); + statement = prepareStatementWithParameters(queryToExecute, getVariables(queryToExecute)); SqlStatementResult result = querySender.execute(type, statement); From 3c8460280a87f7a824517c8cdccf4f6d0e4716e5 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 17:11:46 +0300 Subject: [PATCH 049/141] Fix generating SQL stubs for procedures (RS-184025) --- src/org/underworldlabs/util/SQLUtils.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/org/underworldlabs/util/SQLUtils.java b/src/org/underworldlabs/util/SQLUtils.java index e0a7257b9..11a462968 100644 --- a/src/org/underworldlabs/util/SQLUtils.java +++ b/src/org/underworldlabs/util/SQLUtils.java @@ -1857,7 +1857,11 @@ public static String generateCreateProcedureStub(DefaultDatabaseProcedure obj) { if (!MiscUtils.isNull(formattedOutputParams.trim())) sb.append(String.format("\nRETURNS (\n%s)", formattedOutputParams)); - return sb.append("\nAS BEGIN END^\n").toString(); + sb.append("\nAS BEGIN "); + if (!outputParams.isEmpty()) + sb.append("\n\tSUSPEND;\n"); + + return sb.append("END^").toString(); } public static String generateCreateTriggerStub(DefaultDatabaseTrigger obj) { From b08f682f9e654672ba50ccadac1a39f2f88d3218 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 5 Aug 2024 17:23:14 +0300 Subject: [PATCH 050/141] Fix batch tools enabling in the GeneratorTestDataPanel (RS-181680) --- .../gui/browser/GeneratorTestDataPanel.java | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java index 9cb292b15..18e5ecc92 100644 --- a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java +++ b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java @@ -58,6 +58,7 @@ public class GeneratorTestDataPanel extends JPanel private JCheckBox stopOnErrorCheck; private JCheckBox loggingEnabledCheck; + private JLabel batchLabel; private JTabbedPane tabbedPane; private FieldsPanel fieldsPanel; private JProgressBar progressBar; @@ -72,6 +73,8 @@ public class GeneratorTestDataPanel extends JPanel public GeneratorTestDataPanel() { init(); arrange(); + checkBatchToolsEnable(); + updateBatchToolsEnable(); loadTableColumns(); } @@ -80,6 +83,7 @@ private void init() { fieldsPanel = new FieldsPanel(); progressBar = new JProgressBar(); logPanel = new LoggingOutputPanel(); + batchLabel = new JLabel(bundleString("BatchCount")); tabbedPane = new JTabbedPane(); tabbedPane.add(bundleString("Generator"), fieldsPanel); @@ -114,7 +118,9 @@ private void init() { commitAfterField.setText("500"); stopOnErrorCheck = WidgetFactory.createCheckBox("stopOnErrorCheck", bundleString("StopOnError")); + useBatchesCheck = WidgetFactory.createCheckBox("useBatchesCheck", bundleString("useBatchesBox")); + useBatchesCheck.addActionListener(e -> updateBatchToolsEnable()); loggingEnabledCheck = WidgetFactory.createCheckBox("loggingEnabledCheck", bundleString("OutputLog")); loggingEnabledCheck.setSelected(true); @@ -127,7 +133,6 @@ private void init() { private void arrange() { GridBagHelper gbh; - JLabel batchLabel = new JLabel(bundleString("BatchCount")); // --- check panel --- @@ -179,17 +184,6 @@ private void arrange() { setLayout(new GridBagLayout()); gbh = new GridBagHelper().fillBoth().setInsets(5, 5, 5, 5).spanY().spanX(); add(mainPanel, gbh.get()); - - // --- - - if (new DefaultDriverLoader().load(getSelectedConnection().getJDBCDriver()).getMajorVersion() < 4 - || getSelectedConnection().getMajorServerVersion() < 4 - || !getSelectedConnection().useNewAPI()) { - - batchLabel.setEnabled(false); - batchSizeField.setEnabled(false); - useBatchesCheck.setEnabled(false); - } } private void start() { @@ -514,6 +508,22 @@ private void loadTableColumns() { fieldsPanel.setFieldGenerators(fieldGenerators); } + private void checkBatchToolsEnable() { + boolean enable = new DefaultDriverLoader().load(getSelectedConnection().getJDBCDriver()).getMajorVersion() > 3 + && getSelectedConnection().getMajorServerVersion() > 3 + && getSelectedConnection().useNewAPI(); + + useBatchesCheck.setEnabled(enable); + useBatchesCheck.setSelected(false); + updateBatchToolsEnable(); + } + + private void updateBatchToolsEnable() { + boolean enable = useBatchesCheck.isSelected(); + batchLabel.setEnabled(enable); + batchSizeField.setEnabled(enable); + } + private void tablesComboTriggered(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) loadTableColumns(); @@ -525,6 +535,7 @@ private void connectionsComboTriggered(ItemEvent e) { executor.setDatabaseConnection(getSelectedConnection()); tablesModel.setElements(getDatabaseTables()); + checkBatchToolsEnable(); } private String getSelectedTable() { @@ -535,7 +546,7 @@ private DatabaseConnection getSelectedConnection() { return (DatabaseConnection) connectionsCombo.getSelectedItem(); } -// --- TabView impl --- + // --- TabView impl --- @Override public boolean tabViewSelected() { @@ -552,7 +563,7 @@ public boolean tabViewClosing() { return true; } -// --- + // --- private static String bundleString(String key, Object... args) { return Bundles.get(GeneratorTestDataPanel.class, key, args); From ee4e134da41d53b25cf226c60ff97118211b85b3 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 6 Aug 2024 09:14:32 +0300 Subject: [PATCH 051/141] Fix executing SQL script with several BEGIN-END queries (RS-187211) --- src/org/executequery/sql/QueryDispatcher.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/org/executequery/sql/QueryDispatcher.java b/src/org/executequery/sql/QueryDispatcher.java index 0a1647252..71e4d5015 100644 --- a/src/org/executequery/sql/QueryDispatcher.java +++ b/src/org/executequery/sql/QueryDispatcher.java @@ -1059,8 +1059,10 @@ private Object executeScript(String script, boolean anyConnections) { continue; } - if (isBeginEndQuery(query)) - return executeCreateOrAlterObject(queryToExecute, query, anyConnections); + if (isBeginEndQuery(query)) { + executeCreateOrAlterObject(queryToExecute, query, anyConnections); + continue; + } int type = query.getQueryType(); if (type != QueryTypes.COMMIT && type != QueryTypes.ROLLBACK) { From 6ee15411f6b74d975bd2ba01875d4442e552fd0e Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Tue, 6 Aug 2024 14:46:09 +0300 Subject: [PATCH 052/141] See RS-173688 fix fullLoading for indicies --- .../databaseobjects/impl/DefaultDatabaseIndex.java | 7 ++++--- .../databaseobjects/impl/DefaultDatabaseTable.java | 2 +- src/org/executequery/gui/browser/BrowserIndexPanel.java | 4 ++-- .../executequery/gui/databaseobjects/CreateIndexPanel.java | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseIndex.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseIndex.java index c96e9d88c..bf755d503 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseIndex.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseIndex.java @@ -298,10 +298,11 @@ public String getExpression() { } public void setExpression(String expression) { - if (MiscUtils.isNull(expression)) - return; - expression = expression.trim().substring(1, expression.trim().length() - 1); this.expression = expression; + if (!MiscUtils.isNull(expression)) { + expression = expression.trim().substring(1, expression.trim().length() - 1); + this.expression = expression; + } } @Override diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java index 09b6de5c4..ca309fa97 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTable.java @@ -333,7 +333,7 @@ public List getIndexes() throws DataSourceException { DefaultDatabaseIndex index1 = metaTag.getIndexFromName(index.getName()); index1.getObjectInfo(); indexes.add(index1); - if (index1.getExpression() != null) { + if (!MiscUtils.isNull(index1.getExpression())) { index.setIndexedColumns(null); index.setExpression(index1.getExpression()); } diff --git a/src/org/executequery/gui/browser/BrowserIndexPanel.java b/src/org/executequery/gui/browser/BrowserIndexPanel.java index d90d7f770..dda7216da 100644 --- a/src/org/executequery/gui/browser/BrowserIndexPanel.java +++ b/src/org/executequery/gui/browser/BrowserIndexPanel.java @@ -1,6 +1,5 @@ package org.executequery.gui.browser; -import org.executequery.GUIUtilities; import org.executequery.databaseobjects.DatabaseObject; import org.executequery.databaseobjects.NamedObject; import org.executequery.databaseobjects.impl.DefaultDatabaseIndex; @@ -14,6 +13,7 @@ import org.underworldlabs.swing.DisabledField; import org.underworldlabs.swing.StyledLogPane; import org.underworldlabs.swing.layouts.GridBagHelper; +import org.underworldlabs.util.MiscUtils; import javax.swing.*; import java.awt.*; @@ -177,7 +177,7 @@ public void setValues(DefaultDatabaseIndex index) { uniqueCheckBox.setSelected(index.isUnique()); activeCheckBox.setSelected(index.isActive()); descriptionPane.setText(index.getRemarks()); - if (index.getExpression() != null) { + if (!MiscUtils.isNull(index.getExpression())) { expressionText = new SimpleSqlTextPanel(); expressionText.setSQLText(index.getExpression()); tabPane.remove(0); diff --git a/src/org/executequery/gui/databaseobjects/CreateIndexPanel.java b/src/org/executequery/gui/databaseobjects/CreateIndexPanel.java index 28882d8b3..1f20ee794 100644 --- a/src/org/executequery/gui/databaseobjects/CreateIndexPanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateIndexPanel.java @@ -178,7 +178,7 @@ public void changedUpdate(DocumentEvent e) { } } - if (databaseIndex.getExpression() == null) { + if (MiscUtils.isNull(databaseIndex.getExpression())) { for (int i = 0; i < databaseIndex.getIndexColumns().size(); i++) { DefaultDatabaseIndex.DatabaseIndexColumn column = databaseIndex.getIndexColumns().get(i); From f3af6cbe8e104569de5c60612450b8ce598ca425 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 6 Aug 2024 11:24:29 +0300 Subject: [PATCH 053/141] Improve output when generating test data using OO API (RS-181680) --- .../redsoft/FBBatchCompletionStateImpl.java | 13 ++- .../redsoft/FBBatchCompletionStateImpl.java | 11 ++ .../biz/redsoft/IFBBatchCompletionState.java | 5 + .../gui/browser/GeneratorTestDataPanel.java | 105 +++++++++++++----- .../localization/resources.properties | 1 - .../localization/resources_ru.properties | 1 - 6 files changed, 107 insertions(+), 29 deletions(-) diff --git a/modules/plugins/fbplugin-impl/src/main/java/biz/redsoft/FBBatchCompletionStateImpl.java b/modules/plugins/fbplugin-impl/src/main/java/biz/redsoft/FBBatchCompletionStateImpl.java index 5495dce9e..77f2e8eb3 100644 --- a/modules/plugins/fbplugin-impl/src/main/java/biz/redsoft/FBBatchCompletionStateImpl.java +++ b/modules/plugins/fbplugin-impl/src/main/java/biz/redsoft/FBBatchCompletionStateImpl.java @@ -4,7 +4,7 @@ import java.sql.SQLException; -public class FBBatchCompletionStateImpl implements IFBBatchCompletionState{ +public class FBBatchCompletionStateImpl implements IFBBatchCompletionState { private final FbBatchCompletionState state; @@ -21,4 +21,15 @@ public int[] getAllStates() throws SQLException { public String printAllStates() throws SQLException { return state.printAllStates(); } + + @Override + public int getState(int i) throws SQLException { + return state.getState(i); + } + + @Override + public String getError(int i) throws SQLException { + return state.getError(i); + } + } diff --git a/modules/plugins/fbplugin-impl5/src/main/java/biz/redsoft/FBBatchCompletionStateImpl.java b/modules/plugins/fbplugin-impl5/src/main/java/biz/redsoft/FBBatchCompletionStateImpl.java index 44753de66..77f2e8eb3 100644 --- a/modules/plugins/fbplugin-impl5/src/main/java/biz/redsoft/FBBatchCompletionStateImpl.java +++ b/modules/plugins/fbplugin-impl5/src/main/java/biz/redsoft/FBBatchCompletionStateImpl.java @@ -21,4 +21,15 @@ public int[] getAllStates() throws SQLException { public String printAllStates() throws SQLException { return state.printAllStates(); } + + @Override + public int getState(int i) throws SQLException { + return state.getState(i); + } + + @Override + public String getError(int i) throws SQLException { + return state.getError(i); + } + } diff --git a/modules/plugins/fbplugin/src/main/java/biz/redsoft/IFBBatchCompletionState.java b/modules/plugins/fbplugin/src/main/java/biz/redsoft/IFBBatchCompletionState.java index a20948edf..d1b5469ce 100644 --- a/modules/plugins/fbplugin/src/main/java/biz/redsoft/IFBBatchCompletionState.java +++ b/modules/plugins/fbplugin/src/main/java/biz/redsoft/IFBBatchCompletionState.java @@ -7,4 +7,9 @@ public interface IFBBatchCompletionState { int[] getAllStates() throws SQLException; String printAllStates() throws SQLException; + + int getState(int i) throws SQLException; + + String getError(int i) throws SQLException; + } diff --git a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java index 18e5ecc92..fca82fd25 100644 --- a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java +++ b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java @@ -26,15 +26,14 @@ import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.swing.util.SwingWorker; import org.underworldlabs.util.DynamicLibraryLoader; +import org.underworldlabs.util.MiscUtils; import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; import java.sql.*; -import java.util.ArrayList; +import java.util.*; import java.util.List; -import java.util.Objects; -import java.util.Vector; public class GeneratorTestDataPanel extends JPanel implements TabView { @@ -356,8 +355,12 @@ private void generate(int recordsCount, List selectedFields) thr private void generateUsingBatches(int recordsCount, List selectedFields) throws SQLException { - int batchCount = batchSizeField.getValue(); + long countError = 0; + long countSuccess = 0; + + int batchSize = batchSizeField.getValue(); int commitAfter = commitAfterField.getValue(); + boolean isStopOnError = stopOnErrorCheck.isSelected(); boolean loggingEnabled = loggingEnabledCheck.isSelected(); Connection realConnection = ConnectionManager.getTemporaryConnection(getSelectedConnection()); @@ -385,43 +388,93 @@ private void generateUsingBatches(int recordsCount, List selecte int recordIndex = 0; while (recordIndex < recordsCount && !stop) { + try { - if (recordIndex + batchCount > recordsCount) - batchCount = recordIndex + batchCount - recordsCount; + if (recordIndex + batchSize > recordsCount) + batchSize = recordIndex + batchSize - recordsCount; - for (int batchRecordIndex = 0; batchRecordIndex < batchCount; batchRecordIndex++) { - for (int columnIndex = 0; columnIndex < selectedFields.size(); columnIndex++) { + for (int batchRecordIndex = 0; batchRecordIndex < batchSize; batchRecordIndex++) { + for (int columnIndex = 0; columnIndex < selectedFields.size(); columnIndex++) { - String parameterType = selectedFields.get(columnIndex).getColumn().getTypeName(); - Object parameterValue = selectedFields.get(columnIndex).getMethodGeneratorPanel().getTestDataObject(); + String parameterType = selectedFields.get(columnIndex).getColumn().getTypeName(); + Object parameterValue = selectedFields.get(columnIndex).getMethodGeneratorPanel().getTestDataObject(); - if (parameterType.contains("BLOB")) { - if (((byte[]) parameterValue).length == 0) - parameterValue = new byte[1]; - batch.addBlob(columnIndex + 1, (byte[]) parameterValue); + if (parameterType.contains("BLOB")) { + if (((byte[]) parameterValue).length == 0) + parameterValue = new byte[1]; + batch.addBlob(columnIndex + 1, (byte[]) parameterValue); - } else - batch.setObject(columnIndex + 1, parameterValue); + } else + batch.setObject(columnIndex + 1, parameterValue); + } + + batch.addBatch(); } - batch.addBatch(); - } + IFBBatchCompletionState execute = batch.execute(); + int[] states = execute.getAllStates(); + long batchError = Arrays.stream(states).filter(i -> i < 0).count(); + long batchSuccess = states.length - batchError; - IFBBatchCompletionState execute = batch.execute(); - if (loggingEnabled) - logPanel.append(execute.printAllStates()); + countError += batchError; + countSuccess += batchSuccess; - if (recordIndex % commitAfter == 0 && recordIndex != 0) { - batch.commit(); - batch.startTransaction(); + String errorMessage = null; + if (countError > 0 && isStopOnError) { + for (int i = 0; i < states.length; i++) { + if (states[i] < 0) { + + try { + errorMessage = execute.getError(i); + } catch (SQLException ignored) { + } + + if (!MiscUtils.isNull(errorMessage)) + throw new SQLException(errorMessage); + } + } + } + + if (loggingEnabled) { + logPanel.append(String.format("Batch executed. Added: %d. Failed: %d", batchSuccess, batchError)); + + if (countError > 0) { + for (int i = 0; i < states.length; i++) { + if (states[i] < 0) { + try { + errorMessage = execute.getError(i); + if (!MiscUtils.isNull(errorMessage)) + logPanel.appendError(errorMessage); + + } catch (SQLException ignored) { + } + } + } + } + } + + if (recordIndex % commitAfter == 0 && recordIndex != 0) { + batch.commit(); + batch.startTransaction(); + } + + } catch (SQLException e) { + logPanel.appendError(e.getMessage()); + batch.cancel(); + + if (isStopOnError) { + GUIUtilities.displayExceptionErrorDialog(e.getMessage(), e, this.getClass()); + break; + } } - recordIndex += batchCount; + recordIndex += batchSize; progressBar.setValue(recordIndex); } batch.commit(); - GUIUtilities.displayInformationMessage(bundleString("batchGenerationEndMessage")); + logPanel.appendAction("Added: " + countSuccess + "\nFailed: " + countError); + GUIUtilities.displayInformationMessage(bundleString("generationEndMessage", countSuccess, recordsCount, countError)); } private String getInsertQuery(List selectedFields) { diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index f1f34e5de..1eb6fb43a 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1568,7 +1568,6 @@ GeneratorTestDataPanel.noColumnsSelected=You must select at least one column for GeneratorTestDataPanel.nothingToGenerate=Records count couldn't be less than 1 GeneratorTestDataPanel.batchesNotSupported=Selected connection doesn't support batch operations GeneratorTestDataPanel.generationEndMessage=Test data generation ends\nRecords added: {0} from total {1}\nRecords failed: {2} -GeneratorTestDataPanel.batchGenerationEndMessage=Test data generation ends GeneratorTestDataPanel.Generator=Generator GeneratorTestDataPanel.Output=Output GotoCommand.goTo=Go To diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index f40d3ee88..3c94e98e6 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1568,7 +1568,6 @@ GeneratorTestDataPanel.noColumnsSelected=Вы должны выбрать хот GeneratorTestDataPanel.nothingToGenerate=Количество записей не может быть меньше 1 GeneratorTestDataPanel.batchesNotSupported=Выбранное соединение не поддерживает пакетные операции GeneratorTestDataPanel.generationEndMessage=Генерация тестовых данных завершена\nЗаписей добавлено: {0} из {1}\nЗаписей проигнорировано: {2} -GeneratorTestDataPanel.batchGenerationEndMessage=Генерация тестовых данных завершена GeneratorTestDataPanel.Generator=Генератор GeneratorTestDataPanel.Output=Вывод GotoCommand.goTo=Перейти к From 22853fe2917017ee95bfdda8fbaa6e87c015f054 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 6 Aug 2024 15:08:02 +0300 Subject: [PATCH 054/141] PooledConnection::checkConnectionToServer method code clean --- .../datasource/PooledConnection.java | 65 ++++++++++--------- .../localization/resources.properties | 1 + .../localization/resources_ru.properties | 1 + 3 files changed, 36 insertions(+), 31 deletions(-) diff --git a/src/org/executequery/datasource/PooledConnection.java b/src/org/executequery/datasource/PooledConnection.java index 91380f378..3fda2429b 100644 --- a/src/org/executequery/datasource/PooledConnection.java +++ b/src/org/executequery/datasource/PooledConnection.java @@ -25,6 +25,7 @@ import org.executequery.databasemediators.ConnectionMediator; import org.executequery.databasemediators.DatabaseConnection; import org.executequery.localization.Bundles; +import org.executequery.log.Log; import org.underworldlabs.util.DynamicLibraryLoader; import org.underworldlabs.util.SystemProperties; @@ -263,47 +264,49 @@ protected void handleException(SQLException e) throws SQLException { throw e; } - public void checkConnectionToServer() - { + public void checkConnectionToServer() { + + TimerTask task = new TimerTask() { + @Override + public void run() { + if (databaseConnection.isConnected()) + askAndCloseConnection(); + timerDelay.cancel(); + } + }; + try { - IFBDatabasePerformance db = (IFBDatabasePerformance) DynamicLibraryLoader.loadingObjectFromClassLoader(databaseConnection.getDriverMajorVersion(), realConnection, "FBDatabasePerformanceImpl"); + int driverVersion = databaseConnection.getDriverMajorVersion(); + Object loadedObject = DynamicLibraryLoader.loadingObjectFromClassLoader(driverVersion, realConnection, "FBDatabasePerformanceImpl"); + + IFBDatabasePerformance db = (IFBDatabasePerformance) loadedObject; db.setConnection(realConnection); - TimerTask task = new TimerTask() { - @Override - public void run() { - if (databaseConnection.isConnected()) { - if (GUIUtilities.displayConfirmDialog("The server is not responding. Do you want to close the connection?") == JOptionPane.OK_OPTION) { - closeDatabaseConnection(); - timerDelay.cancel(); - } - } else - timerDelay.cancel(); - } - }; - timerDelay = new Timer("check "+databaseConnection.getName()+ "conToServer"); - /*StackTraceElement[] stack = Thread.currentThread().getStackTrace(); - Log.info("---------------------------------Start check----------------------------------\n\n\n"); - for (int i = 0; i < stack.length - 2; i++) - Log.info(stack[stack.length - 1 - i]);*/ + + timerDelay = new Timer("check " + databaseConnection.getName() + "connection to the server"); timerDelay.schedule(task, timeoutShutdown); - db.getPerformanceInfo(databaseConnection.getDriverMajorVersion()); - timerDelay.cancel(); - //Log.info("---------------------------------Finish check.----------------------------------\n\n\n"); - } catch (SQLException e) - { + db.getPerformanceInfo(driverVersion); //todo check (with using OO API throws exceptions from handleException method) + + } catch (SQLException e) { + Log.error(e.getMessage(), e); if (databaseConnection.isConnected()) closeDatabaseConnection(); - timerDelay.cancel(); + } catch (ClassNotFoundException e) { - if (databaseConnection.isConnected()) { - if (GUIUtilities.displayConfirmDialog("The server is not responding. Do you want to close the connection?") == JOptionPane.OK_OPTION) { - closeDatabaseConnection(); - } - } + Log.error(e.getMessage(), e); + if (databaseConnection.isConnected()) + askAndCloseConnection(); + + } finally { timerDelay.cancel(); } } + private void askAndCloseConnection() { + int result = GUIUtilities.displayConfirmDialog(Bundles.get("common.serverNotResponding.closeConnection.ask")); + if (result == JOptionPane.OK_OPTION) + closeDatabaseConnection(); + } + public Statement createStatement() throws SQLException { checkOpen(); Statement statement = null; diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index 1eb6fb43a..9252cfe23 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -113,6 +113,7 @@ common.triggers=Triggers common.value=Value common.warning=Warning common.yes.button=Yes +common.serverNotResponding.closeConnection.ask=The server is not responding.\nDo you want to close the connection? # ------------------------------------------------------------- # actions # ------------------------------------------------------------- diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 3c94e98e6..c5375be82 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -113,6 +113,7 @@ common.triggers=Триггеры common.value=Значение common.warning=Предупреждение common.yes.button=Да +common.serverNotResponding.closeConnection.ask=Сервер не отвечает.\nОтключиться от БД? # ------------------------------------------------------------- # actions # ------------------------------------------------------------- From 6b0519cd5794f096ec1eb7a8e793f733db2e19d0 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 6 Aug 2024 15:36:17 +0300 Subject: [PATCH 055/141] ComparerDBPanel class code clean --- .../gui/browser/ComparerDBPanel.java | 103 ++++++++++-------- 1 file changed, 58 insertions(+), 45 deletions(-) diff --git a/src/org/executequery/gui/browser/ComparerDBPanel.java b/src/org/executequery/gui/browser/ComparerDBPanel.java index 75e66512b..60bad620b 100644 --- a/src/org/executequery/gui/browser/ComparerDBPanel.java +++ b/src/org/executequery/gui/browser/ComparerDBPanel.java @@ -1,5 +1,6 @@ package org.executequery.gui.browser; +import org.executequery.Constants; import org.executequery.GUIUtilities; import org.executequery.base.TabView; import org.executequery.databasemediators.ConnectionMediator; @@ -570,50 +571,46 @@ private void compare() { } if (isErd && isExtractMetadata) { - ((ComparerTreeNode) rootTreeNode.getChildAt(rootTreeNode.getChildCount() - 1)) - .add(new ComparerTreeNode(ComparerTreeNode.CREATE, NamedObject.TABLE, - Bundles.get(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[NamedObject.TABLE]), ComparerTreeNode.TYPE_FOLDER)); - - loggingOutputPanel.append(MessageFormat.format("\n============= {0} to CREATE =============", - Bundles.getEn(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[NamedObject.TABLE]))); + updateOutputPanels(ComparerTreeNode.CREATE, NamedObject.TABLE); comparer.createErds(erdTables); + if (!isPropertySelected(IGNORE_COMPUTED_FIELDS) && !isCanceled()) { loggingOutputPanel.append("\n============= COMPUTED FIELDS defining ============="); if (!Objects.equals(comparer.getComputedFieldsList(), "") && comparer.getComputedFieldsList() != null) loggingOutputPanel.append(comparer.getComputedFieldsList()); comparer.createComputedFields(); } - } else for (Integer type : scriptGenerationOrder) { - if (isCanceled()) - break; + } else { - if (type == STUBS) { - comparer.createStubs(attributesCheckBoxMap.get(NamedObject.FUNCTION).isSelected(), - attributesCheckBoxMap.get(NamedObject.PROCEDURE).isSelected(), - attributesCheckBoxMap.get(NamedObject.TRIGGER).isSelected(), - attributesCheckBoxMap.get(NamedObject.DDL_TRIGGER).isSelected(), - attributesCheckBoxMap.get(NamedObject.DATABASE_TRIGGER).isSelected()); - - if (!isPropertySelected(IGNORE_COMPUTED_FIELDS) && !isCanceled()) { - loggingOutputPanel.append("\n============= COMPUTED FIELDS defining ============="); - if (!Objects.equals(comparer.getComputedFieldsList(), "") && comparer.getComputedFieldsList() != null) - loggingOutputPanel.append(comparer.getComputedFieldsList()); - comparer.createComputedFields(); - } + for (Integer type : scriptGenerationOrder) { - continue; - } + if (isCanceled()) + break; - if (attributesCheckBoxMap.get(type).isSelected()) { + if (type == STUBS) { + comparer.createStubs( + attributesCheckBoxMap.get(NamedObject.FUNCTION).isSelected(), + attributesCheckBoxMap.get(NamedObject.PROCEDURE).isSelected(), + attributesCheckBoxMap.get(NamedObject.TRIGGER).isSelected(), + attributesCheckBoxMap.get(NamedObject.DDL_TRIGGER).isSelected(), + attributesCheckBoxMap.get(NamedObject.DATABASE_TRIGGER).isSelected() + ); + + if (!isPropertySelected(IGNORE_COMPUTED_FIELDS) && !isCanceled()) { + loggingOutputPanel.append("\n============= COMPUTED FIELDS defining ============="); + if (!Objects.equals(comparer.getComputedFieldsList(), "") && comparer.getComputedFieldsList() != null) + loggingOutputPanel.append(comparer.getComputedFieldsList()); + comparer.createComputedFields(); + } - ((ComparerTreeNode) rootTreeNode.getChildAt(rootTreeNode.getChildCount() - 1)) - .add(new ComparerTreeNode(ComparerTreeNode.CREATE, type, - Bundles.get(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[type]), ComparerTreeNode.TYPE_FOLDER)); + continue; + } - loggingOutputPanel.append(MessageFormat.format("\n============= {0} to CREATE =============", - Bundles.getEn(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[type]))); - comparer.createObjects(type); + if (attributesCheckBoxMap.get(type).isSelected()) { + updateOutputPanels(ComparerTreeNode.CREATE, type); + comparer.createObjects(type); + } } } } @@ -636,16 +633,12 @@ private void compare() { continue; if (attributesCheckBoxMap.get(type).isSelected()) { + updateOutputPanels(ComparerTreeNode.ALTER, type); - ((ComparerTreeNode) rootTreeNode.getChildAt(rootTreeNode.getChildCount() - 1)) - .add(new ComparerTreeNode(ComparerTreeNode.ALTER, type, - Bundles.get(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[type]), ComparerTreeNode.TYPE_FOLDER)); - - loggingOutputPanel.append(MessageFormat.format("\n============= {0} to ALTER =============", - Bundles.getEn(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[type]))); if (isErd) comparer.alterErds(erdTables); - else comparer.alterObjects(type); + else + comparer.alterObjects(type); } } } @@ -668,16 +661,12 @@ private void compare() { continue; if (attributesCheckBoxMap.get(type).isSelected()) { + updateOutputPanels(ComparerTreeNode.DROP, type); - ((ComparerTreeNode) rootTreeNode.getChildAt(rootTreeNode.getChildCount() - 1)) - .add(new ComparerTreeNode(ComparerTreeNode.DROP, type, - Bundles.get(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[type]), ComparerTreeNode.TYPE_FOLDER)); - - loggingOutputPanel.append(MessageFormat.format("\n============= {0} to DROP =============", - Bundles.getEn(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[type]))); if (isErd) comparer.dropErds(erdTables); - else comparer.dropObjects(type); + else + comparer.dropObjects(type); } } } @@ -955,6 +944,30 @@ private String getMasterDBDialect() { return dialect; } + private void updateOutputPanels(int treeNodeType, Integer objectType) { + + ComparerTreeNode childNode = (ComparerTreeNode) rootTreeNode.getChildAt(rootTreeNode.getChildCount() - 1); + childNode.add(new ComparerTreeNode( + treeNodeType, + objectType, + Bundles.get(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[objectType]), + ComparerTreeNode.TYPE_FOLDER + )); + + String pattern = Constants.EMPTY; + if (treeNodeType == ComparerTreeNode.CREATE) + pattern = "\n============= {0} to CREATE ============="; + else if (treeNodeType == ComparerTreeNode.ALTER) + pattern = "\n============= {0} to ALTER ============="; + else if (treeNodeType == ComparerTreeNode.DROP) + pattern = "\n============= {0} to DROP ============="; + + loggingOutputPanel.append(MessageFormat.format( + pattern, + Bundles.getEn(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[objectType]) + )); + } + public void recreateProgressBar(String label, String metaTag, int maxValue) { progressBar.setValue(0); progressBar.setMaximum(maxValue); From fac9de466e8c1d84cafde9c7fd447dc82410ee18 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Tue, 6 Aug 2024 17:45:39 +0300 Subject: [PATCH 056/141] Improve stubs generating during comparing (RS-188523) --- .../gui/browser/ComparerDBPanel.java | 15 +++- .../gui/browser/comparer/Comparer.java | 70 +++++++++++++------ 2 files changed, 61 insertions(+), 24 deletions(-) diff --git a/src/org/executequery/gui/browser/ComparerDBPanel.java b/src/org/executequery/gui/browser/ComparerDBPanel.java index 60bad620b..0c3b27832 100644 --- a/src/org/executequery/gui/browser/ComparerDBPanel.java +++ b/src/org/executequery/gui/browser/ComparerDBPanel.java @@ -589,7 +589,8 @@ private void compare() { break; if (type == STUBS) { - comparer.createStubs( + comparer.setStubsNeed( + true, attributesCheckBoxMap.get(NamedObject.FUNCTION).isSelected(), attributesCheckBoxMap.get(NamedObject.PROCEDURE).isSelected(), attributesCheckBoxMap.get(NamedObject.TRIGGER).isSelected(), @@ -629,8 +630,18 @@ private void compare() { if (isCanceled()) break; - if (type == STUBS) + if (type == STUBS) { + comparer.setStubsNeed( + false, + attributesCheckBoxMap.get(NamedObject.FUNCTION).isSelected(), + attributesCheckBoxMap.get(NamedObject.PROCEDURE).isSelected(), + attributesCheckBoxMap.get(NamedObject.TRIGGER).isSelected(), + attributesCheckBoxMap.get(NamedObject.DDL_TRIGGER).isSelected(), + attributesCheckBoxMap.get(NamedObject.DATABASE_TRIGGER).isSelected() + ); + continue; + } if (attributesCheckBoxMap.get(type).isSelected()) { updateOutputPanels(ComparerTreeNode.ALTER, type); diff --git a/src/org/executequery/gui/browser/comparer/Comparer.java b/src/org/executequery/gui/browser/comparer/Comparer.java index 5c4c49e07..310e12f25 100644 --- a/src/org/executequery/gui/browser/comparer/Comparer.java +++ b/src/org/executequery/gui/browser/comparer/Comparer.java @@ -40,6 +40,10 @@ public class Comparer { protected DatabaseConnection masterConnection; protected DatabaseConnection compareConnection; + private int stubsInsertIndex; + private Map> stubsOnAlter; + private Map> stubsOnCreate; + private final int[] counter; private String constraintsList; private String computedFieldsList; @@ -254,6 +258,9 @@ public void createObjects(int type) { if (createObjects == null || createObjects.isEmpty()) return; + if (stubsOnCreate != null && stubsOnCreate.containsKey(type) && stubsOnCreate.get(type) != null) + stubsOnCreate.get(type).addAll(createObjects); + String header = MessageFormat.format( "\n/* ----- Creating {0} ----- */\n", Bundles.getEn(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[type])); @@ -351,6 +358,9 @@ public void alterObjects(int type) { if (alterObjects.isEmpty()) return; + if (stubsOnAlter != null && stubsOnAlter.containsKey(type) && stubsOnAlter.get(type) != null) + stubsOnAlter.get(type).addAll(alterObjects.values()); + if (Objects.equals(Bundles.getEn(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[type]), "ROLE")) return; @@ -633,20 +643,27 @@ public void createComputedFields() { } } - public void createStubs( + public void setStubsNeed( + boolean onCreate, boolean functions, boolean procedures, boolean triggers, boolean ddlTriggers, boolean dbTriggers) { - if (functions) - addStubsToScript(FUNCTION); - if (procedures) - addStubsToScript(PROCEDURE); - if (triggers) - addStubsToScript(TRIGGER); - if (ddlTriggers) - addStubsToScript(DDL_TRIGGER); - if (dbTriggers) - addStubsToScript(DATABASE_TRIGGER); + Map> exampleHashMap = new HashMap<>(); + exampleHashMap.put(FUNCTION, functions ? new ArrayList<>() : null); + exampleHashMap.put(PROCEDURE, procedures ? new ArrayList<>() : null); + exampleHashMap.put(TRIGGER, triggers ? new ArrayList<>() : null); + exampleHashMap.put(DDL_TRIGGER, ddlTriggers ? new ArrayList<>() : null); + exampleHashMap.put(DATABASE_TRIGGER, dbTriggers ? new ArrayList<>() : null); + + if (onCreate) { + stubsInsertIndex = script.size(); + stubsOnCreate = new HashMap<>(exampleHashMap); + + } else { + if (stubsInsertIndex < 0) + stubsInsertIndex = script.size(); + stubsOnAlter = new HashMap<>(exampleHashMap); + } } private void addConstraintToScript(org.executequery.gui.browser.ColumnConstraint obj) { @@ -1114,21 +1131,15 @@ private List sortObjectsByDependency(List objectsList) return objectsList; } - private void addStubsToScript(int type) { - - List stubsList = createListObjects( - panel.isExtractMetadata() ? new ArrayList<>() : getObjects(masterConnection, type), - getObjects(compareConnection, type), - type - ); + private void addStubsToScript(int type, List stubsList, int insertIndex) { - if (stubsList.isEmpty()) + if (stubsList == null || stubsList.isEmpty()) return; String header = MessageFormat.format( "\n/* ----- Creating {0} stubs ----- */\n", Bundles.getEn(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[type])); - script.add(header); + script.add(insertIndex++, header); panel.recreateProgressBar( "CreatingStubs", NamedObject.META_TYPES[type], @@ -1136,8 +1147,8 @@ private void addStubsToScript(int type) { ); for (NamedObject obj : stubsList) { - script.add("\n/* " + obj.getName() + " (STUB) */"); - script.add("\n" + SQLUtils.generateCreateDefaultStub(obj)); + script.add(insertIndex++, "\n/* " + obj.getName() + " (STUB) */"); + script.add(insertIndex++, "\n" + SQLUtils.generateCreateDefaultStub(obj)); panel.incrementProgressBarValue(); } @@ -1160,6 +1171,21 @@ public String getComputedFieldsList() { } public ArrayList getScript() { + + if (stubsInsertIndex > 0 && stubsOnCreate != null) { + for (Integer key : stubsOnCreate.keySet()) + addStubsToScript(key, stubsOnCreate.get(key), stubsInsertIndex); + + stubsOnCreate = null; + } + + if (stubsInsertIndex > 0 && stubsOnAlter != null) { + for (Integer key : stubsOnAlter.keySet()) + addStubsToScript(key, stubsOnAlter.get(key), stubsInsertIndex); + + stubsOnAlter = null; + } + return script; } From cfe3db38a88149090b70742c003e4d680f95f7ab Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 09:17:46 +0300 Subject: [PATCH 057/141] Minor fix last commit (RS-188523) --- .../gui/browser/ComparerDBPanel.java | 21 +++++++++---------- .../gui/browser/comparer/Comparer.java | 11 +++++----- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/org/executequery/gui/browser/ComparerDBPanel.java b/src/org/executequery/gui/browser/ComparerDBPanel.java index 0c3b27832..5588d1797 100644 --- a/src/org/executequery/gui/browser/ComparerDBPanel.java +++ b/src/org/executequery/gui/browser/ComparerDBPanel.java @@ -625,23 +625,22 @@ private void compare() { Collections.reverse(scriptGenerationOrder); } + comparer.setStubsNeed( + false, + attributesCheckBoxMap.get(NamedObject.FUNCTION).isSelected(), + attributesCheckBoxMap.get(NamedObject.PROCEDURE).isSelected(), + attributesCheckBoxMap.get(NamedObject.TRIGGER).isSelected(), + attributesCheckBoxMap.get(NamedObject.DDL_TRIGGER).isSelected(), + attributesCheckBoxMap.get(NamedObject.DATABASE_TRIGGER).isSelected() + ); + for (Integer type : scriptGenerationOrder) { if (isCanceled()) break; - if (type == STUBS) { - comparer.setStubsNeed( - false, - attributesCheckBoxMap.get(NamedObject.FUNCTION).isSelected(), - attributesCheckBoxMap.get(NamedObject.PROCEDURE).isSelected(), - attributesCheckBoxMap.get(NamedObject.TRIGGER).isSelected(), - attributesCheckBoxMap.get(NamedObject.DDL_TRIGGER).isSelected(), - attributesCheckBoxMap.get(NamedObject.DATABASE_TRIGGER).isSelected() - ); - + if (type == STUBS) continue; - } if (attributesCheckBoxMap.get(type).isSelected()) { updateOutputPanels(ComparerTreeNode.ALTER, type); diff --git a/src/org/executequery/gui/browser/comparer/Comparer.java b/src/org/executequery/gui/browser/comparer/Comparer.java index 310e12f25..18605bbbe 100644 --- a/src/org/executequery/gui/browser/comparer/Comparer.java +++ b/src/org/executequery/gui/browser/comparer/Comparer.java @@ -67,6 +67,7 @@ public Comparer( constraintsToDrop = new ArrayList<>(); computedFields = new ArrayList<>(); + stubsInsertIndex = -1; counter = new int[]{0, 0, 0}; this.panel = panel; @@ -655,15 +656,13 @@ public void setStubsNeed( exampleHashMap.put(DDL_TRIGGER, ddlTriggers ? new ArrayList<>() : null); exampleHashMap.put(DATABASE_TRIGGER, dbTriggers ? new ArrayList<>() : null); - if (onCreate) { + if (stubsInsertIndex < 0) stubsInsertIndex = script.size(); - stubsOnCreate = new HashMap<>(exampleHashMap); - } else { - if (stubsInsertIndex < 0) - stubsInsertIndex = script.size(); + if (onCreate) + stubsOnCreate = new HashMap<>(exampleHashMap); + else stubsOnAlter = new HashMap<>(exampleHashMap); - } } private void addConstraintToScript(org.executequery.gui.browser.ColumnConstraint obj) { From a3e1c497d6f026416e466c82d183c1c7f58f88fa Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 09:40:52 +0300 Subject: [PATCH 058/141] Fix generating drop query for UDFs --- .../executequery/databaseobjects/impl/DefaultDatabaseUDF.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseUDF.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseUDF.java index 197ec5f4e..88d9ca83b 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseUDF.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseUDF.java @@ -101,7 +101,7 @@ public String getCompareCreateSQL() throws DataSourceException { @Override public String getDropSQL() throws DataSourceException { - return SQLUtils.generateDefaultDropQuery("UDF", getName(), getHost().getDatabaseConnection()); + return SQLUtils.generateDefaultDropQuery("EXTERNAL FUNCTION", getName(), getHost().getDatabaseConnection()); } @Override From a77439f623a16629885b6a3423dd48be1d72b718 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 09:42:08 +0300 Subject: [PATCH 059/141] Improve automatic selecting tabs in the GeneratorTestDataPanel on user actions --- .../executequery/gui/browser/GeneratorTestDataPanel.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java index fca82fd25..459b8dbce 100644 --- a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java +++ b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java @@ -190,7 +190,6 @@ private void start() { @Override public Object construct() { - tabbedPane.setSelectedIndex(1); runGeneration(); return Constants.WORKER_SUCCESS; } @@ -228,6 +227,7 @@ private void runGeneration() { stopButton.setEnabled(true); startButton.setEnabled(false); + tabbedPane.setSelectedIndex(1); stop = false; progressBar.setMinimum(0); @@ -578,8 +578,10 @@ private void updateBatchToolsEnable() { } private void tablesComboTriggered(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) + if (e.getStateChange() == ItemEvent.SELECTED) { loadTableColumns(); + tabbedPane.setSelectedIndex(0); + } } private void connectionsComboTriggered(ItemEvent e) { From 482f8af64a8b15d78eefc6c78f8039c64bb19609 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 10:52:48 +0300 Subject: [PATCH 060/141] Add custom ComboBox class with the automatically updated active connections list --- .../components/ConnectionsComboBox.java | 102 ----------------- .../datasource/ConnectionManager.java | 34 ++++-- src/org/executequery/gui/WidgetFactory.java | 16 ++- .../swing/ConnectionsComboBox.java | 104 ++++++++++++++++++ 4 files changed, 144 insertions(+), 112 deletions(-) delete mode 100644 src/org/executequery/components/ConnectionsComboBox.java create mode 100644 src/org/underworldlabs/swing/ConnectionsComboBox.java diff --git a/src/org/executequery/components/ConnectionsComboBox.java b/src/org/executequery/components/ConnectionsComboBox.java deleted file mode 100644 index 19005f7c7..000000000 --- a/src/org/executequery/components/ConnectionsComboBox.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * ConnectionsComboBox.java - * - * Copyright (C) 2002-2017 Takis Diakoumis - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 3 - * of the License, or any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package org.executequery.components; - -import org.executequery.databasemediators.DatabaseConnection; -import org.executequery.datasource.ConnectionManager; - -import javax.swing.*; -import java.util.List; - -/** - * Combo box pre-populated with database connection objects. - * - * @author Takis Diakoumis - */ -public class ConnectionsComboBox extends JComboBox { - - /** - * the selection model - */ - private ConnectionSelectionModel model; - - /** - * Creates a new instance of ConnectionsComboBox - */ - public ConnectionsComboBox() { - model = new ConnectionSelectionModel(); - setModel(model); - } - - public DatabaseConnection getSelectedConnection() { - return (DatabaseConnection) model.getSelectedItem(); - } - - private static class ConnectionSelectionModel extends DefaultComboBoxModel { - - /** - * the selected item - */ - private DatabaseConnection selectedItem; - - /** - * the database connections vector - */ - private List connections; - - public ConnectionSelectionModel() { - connections = ConnectionManager.getActiveConnections(); - } - - public void addElement(Object object) { - connections.add((DatabaseConnection) object); - int index = connections.indexOf((DatabaseConnection) object); - fireContentsChanged(this, index, index); - } - - public void setSelectedItem(Object object) { - selectedItem = (DatabaseConnection) object; - } - - public void removeAllElements() { - connections.clear(); - selectedItem = null; - } - - public void removeElement(Object object) { - connections.remove((DatabaseConnection) object); - } - - public Object getSelectedItem() { - return selectedItem; - } - - public int getIndexOf(Object object) { - return connections.indexOf((DatabaseConnection) object); - } - - public int getSize() { - return connections.size(); - } - } - -} - diff --git a/src/org/executequery/datasource/ConnectionManager.java b/src/org/executequery/datasource/ConnectionManager.java index 2a07d2796..34d682e43 100644 --- a/src/org/executequery/datasource/ConnectionManager.java +++ b/src/org/executequery/datasource/ConnectionManager.java @@ -30,7 +30,9 @@ import org.executequery.gui.browser.ConnectionsTreePanel; import org.executequery.gui.browser.nodes.DatabaseObjectNode; import org.executequery.log.Log; +import org.executequery.repository.DatabaseConnectionRepository; import org.executequery.repository.DatabaseDriverRepository; +import org.executequery.repository.Repository; import org.executequery.repository.RepositoryCache; import org.underworldlabs.jdbc.DataSourceException; import org.underworldlabs.util.SystemProperties; @@ -346,15 +348,29 @@ public static void setTransactionIsolationLevel(DatabaseConnection databaseConne * @return a collection of active connections */ public static Vector getActiveConnections() { - if (connectionPools == null || connectionPools.isEmpty()) { - return new Vector(0); - } - Vector connections = - new Vector(connectionPools.size()); - for (Iterator i = - connectionPools.keySet().iterator(); i.hasNext(); ) { - connections.add(i.next()); - } + + if (connectionPools.isEmpty()) + return new Vector<>(0); + + Vector connections = new Vector<>(connectionPools.size()); + connections.addAll(connectionPools.keySet()); + + return connections; + } + + /** + * Returns a collection of database connection property + * objects that are active (connected). + * + * @return a collection of active connections + */ + public static Vector getAllConnections() { + + Vector connections = new Vector<>(); + Repository repository = RepositoryCache.load(DatabaseConnectionRepository.REPOSITORY_ID); + if (repository instanceof DatabaseConnectionRepository) + connections.addAll(((DatabaseConnectionRepository) repository).findAll()); + return connections; } diff --git a/src/org/executequery/gui/WidgetFactory.java b/src/org/executequery/gui/WidgetFactory.java index de9c0e8f4..491a02fff 100644 --- a/src/org/executequery/gui/WidgetFactory.java +++ b/src/org/executequery/gui/WidgetFactory.java @@ -21,7 +21,6 @@ package org.executequery.gui; import org.executequery.Constants; -import org.executequery.GUIUtilities; import org.executequery.gui.browser.DefaultInlineFieldButton; import org.underworldlabs.swing.*; @@ -490,6 +489,21 @@ public static JLabel createLabel(String text, int fontSize) { // --- Custom Components --- // ------------------------- + /** + * Create named ConnectionsComboBox class instance, + * that extended from JComboBox with the DatabaseConnection items + * with the automatically updated active connections list + * + * @param name the component's name + * @param showOnlyActiveConnections whether comboBox will contain only active connections + */ + public static ConnectionsComboBox createConnectionComboBox(String name, boolean showOnlyActiveConnections) { + + ConnectionsComboBox connectionsCombo = new ConnectionsComboBox(showOnlyActiveConnections); + connectionsCombo.setName(name); + + return connectionsCombo; + } /** * Create named DefaultInlineFieldButton class instance diff --git a/src/org/underworldlabs/swing/ConnectionsComboBox.java b/src/org/underworldlabs/swing/ConnectionsComboBox.java new file mode 100644 index 000000000..fd5b6581e --- /dev/null +++ b/src/org/underworldlabs/swing/ConnectionsComboBox.java @@ -0,0 +1,104 @@ +package org.underworldlabs.swing; + +import org.executequery.EventMediator; +import org.executequery.databasemediators.DatabaseConnection; +import org.executequery.datasource.ConnectionManager; +import org.executequery.event.ApplicationEvent; +import org.executequery.event.ConnectionEvent; +import org.executequery.event.ConnectionListener; + +import javax.swing.*; +import java.util.Objects; + +public class ConnectionsComboBox extends JComboBox + implements ConnectionListener { + + public ConnectionsComboBox(boolean showOnlyActiveConnections) { + super(); + + setModel(new DefaultComboBoxModel<>(showOnlyActiveConnections ? + ConnectionManager.getActiveConnections() : + ConnectionManager.getAllConnections() + )); + + if (showOnlyActiveConnections) + EventMediator.registerListener(this); + } + + public DatabaseConnection getSelectedConnection() { + return (DatabaseConnection) getSelectedItem(); + } + + public boolean hasConnection(DatabaseConnection connection) { + + for (int i = 0; i < getItemCount(); i++) + if (Objects.equals(getItemAt(i), connection)) + return true; + + return false; + } + + private void updateEnable() { + setEnabled(getItemCount() > 0); + } + + // --- ConnectionListener impl --- + + @Override + public void connected(ConnectionEvent connectionEvent) { + super.addItem(connectionEvent.getDatabaseConnection()); + updateEnable(); + } + + @Override + public void disconnected(ConnectionEvent connectionEvent) { + super.removeItem(connectionEvent.getDatabaseConnection()); + updateEnable(); + } + + @Override + public boolean canHandleEvent(ApplicationEvent event) { + return event instanceof ConnectionEvent; + } + + // --- JComboBox impl --- + + @Override + public void setModel(ComboBoxModel aModel) { + super.setModel(aModel); + updateEnable(); + } + + @Override + public void addItem(DatabaseConnection item) { + super.addItem(item); + updateEnable(); + } + + @Override + public void insertItemAt(DatabaseConnection item, int index) { + super.insertItemAt(item, index); + updateEnable(); + } + + @Override + public void removeItem(Object anObject) { + super.removeItem(anObject); + updateEnable(); + } + + @Override + public void removeItemAt(int anIndex) { + super.removeItemAt(anIndex); + updateEnable(); + } + + @Override + public void removeAllItems() { + super.removeAllItems(); + updateEnable(); + } + + // --- + +} From 586aa98dfd958f0fbfbd3b4da8462b73a7357e9a Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 11:45:44 +0300 Subject: [PATCH 061/141] Replace JComboBox for connections on the ConnectionsComboBox --- .../components/TableSelectionCombosGroup.java | 490 ------------------ .../gui/ExecuteSqlScriptPanel.java | 27 +- .../gui/browser/ComparerDBPanel.java | 64 +-- .../gui/browser/GeneratorTestDataPanel.java | 7 +- .../gui/browser/profiler/ProfilerPanel.java | 22 +- .../connections/ImportConnectionsDBPanel.java | 8 +- .../AbstractCreateObjectPanel.java | 17 +- .../databaseobjects/CreateProcedurePanel.java | 2 +- .../gui/editor/OpenConnectionsComboBox.java | 94 ---- .../executequery/gui/editor/QueryEditor.java | 30 +- .../gui/erd/ErdSelectionPanel.java | 27 +- .../CreateProcedureFunctionPanel.java | 2 +- .../gui/table/CreateTablePanel.java | 2 +- 13 files changed, 80 insertions(+), 712 deletions(-) delete mode 100644 src/org/executequery/components/TableSelectionCombosGroup.java delete mode 100644 src/org/executequery/gui/editor/OpenConnectionsComboBox.java diff --git a/src/org/executequery/components/TableSelectionCombosGroup.java b/src/org/executequery/components/TableSelectionCombosGroup.java deleted file mode 100644 index 97c513a4f..000000000 --- a/src/org/executequery/components/TableSelectionCombosGroup.java +++ /dev/null @@ -1,490 +0,0 @@ -/* - * TableSelectionCombosGroup.java - * - * Copyright (C) 2002-2017 Takis Diakoumis - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 3 - * of the License, or any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package org.executequery.components; - -import org.executequery.ApplicationException; -import org.executequery.databasemediators.DatabaseConnection; -import org.executequery.databaseobjects.*; -import org.executequery.databaseobjects.impl.DatabaseObjectFactoryImpl; -import org.executequery.datasource.ConnectionManager; -import org.executequery.gui.WidgetFactory; -import org.executequery.localization.Bundles; -import org.executequery.log.Log; -import org.executequery.util.ThreadUtils; -import org.underworldlabs.jdbc.DataSourceException; -import org.underworldlabs.swing.DynamicComboBoxModel; - -import javax.swing.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.ArrayList; -import java.util.List; -import java.util.Vector; - -/** - * Combo box group controller containing connection -> table - * selection combo boxes. - * - * @author Takis Diakoumis - */ -public class TableSelectionCombosGroup implements ItemListener { - - private final JComboBox connectionsCombo; - - private final JComboBox tablesCombo; - - private final JComboBox columnsCombo; - - private List itemListeners; - - public TableSelectionCombosGroup() { - this(WidgetFactory.createComboBox("connectionsCombo"), WidgetFactory.createComboBox("tableCombo"), null); - } - - public TableSelectionCombosGroup(JComboBox connectionsCombo) { - this(connectionsCombo, null, null); - } - - public TableSelectionCombosGroup(JComboBox connectionsCombo, JComboBox tablesCombo, JComboBox columnsCombo) { - - super(); - - this.connectionsCombo = connectionsCombo; - this.tablesCombo = tablesCombo; - this.columnsCombo = columnsCombo; - - init(); - - connectionSelected(); - } - - private void init() { - - initConnectionsCombo(connectionsCombo); - - if (tablesCombo != null) - initTablesCombo(tablesCombo); - - if (columnsCombo != null) - initTablesCombo(columnsCombo); - } - - public void connectionOpened(DatabaseConnection databaseConnection) { - - DynamicComboBoxModel model = connectionComboModel(); - model.addElement(databaseObjectFactory().createDatabaseHost(databaseConnection)); - } - - public void connectionClosed(DatabaseConnection databaseConnection) { - - DynamicComboBoxModel model = connectionComboModel(); - - DatabaseHost host = null; - DatabaseHost selectedHost = getSelectedHost(); - - if (selectedHost.getDatabaseConnection() == databaseConnection) { - - host = selectedHost; - - } else { - - host = hostForConnection(databaseConnection); - } - - if (host != null) { - - model.removeElement(host); - } - - } - - private DynamicComboBoxModel connectionComboModel() { - - return (DynamicComboBoxModel) connectionsCombo.getModel(); - } - - private DatabaseHost hostForConnection(DatabaseConnection databaseConnection) { - - ComboBoxModel model = connectionComboModel(); - - for (int i = 0, n = model.getSize(); i < n; i++) { - - DatabaseHost host = (DatabaseHost) model.getElementAt(i); - - if (host.getDatabaseConnection() == databaseConnection) { - - return host; - } - - } - - return null; - } - - public void addItemSelectionListener(ItemSelectionListener listener) { - - if (itemListeners == null) { - - itemListeners = new ArrayList(); - } - - itemListeners.add(listener); - } - - public DatabaseHost getSelectedHost() { - - return (DatabaseHost) connectionsCombo.getSelectedItem(); - } - - public void setSelectedDatabaseHost(DatabaseHost databaseHost) { - - if (connectionsCombo.getSelectedItem() == databaseHost) { - - return; - } - - try { - - connectionSelectionPending = true; - - if (comboContains(connectionsCombo, databaseHost)) { - - connectionsCombo.setSelectedItem(databaseHost); - - } else { - - ComboBoxModel model = connectionComboModel(); - - String connectionId = databaseHost.getDatabaseConnection().getId(); - - for (int i = 0, n = model.getSize(); i < n; i++) { - - DatabaseHost host = (DatabaseHost) model.getElementAt(i); - - if (connectionId.equals(host.getDatabaseConnection().getId())) { - - connectionsCombo.setSelectedItem(host); - break; - } - - } - - } - - connectionSelected(); - - } finally { - - connectionSelectionPending = false; - } - - } - - private boolean comboContains(JComboBox comboBox, Object item) { - - return ((DynamicComboBoxModel) comboBox.getModel()).contains(item); - } - - private boolean connectionSelectionPending; - private boolean tableSelectionPending; - - public void setSelectedDatabaseTable(DatabaseTable databaseTable) { - - if (tablesCombo.getSelectedItem() == databaseTable) { - - return; - } - - if (comboContains(tablesCombo, databaseTable)) { - - tablesCombo.setSelectedItem(databaseTable); - - } else { - - setSelectedDatabaseHost(databaseTable.getDatabaseSource().getHost()); - - try { - - tableSelectionPending = true; - - ComboBoxModel model = tablesCombo.getModel(); - - String tableName = databaseTable.getName(); - - for (int i = 0, n = model.getSize(); i < n; i++) { - - DatabaseTable table = (DatabaseTable) model.getElementAt(i); - - if (tableName.equals(table.getName())) { - - tablesCombo.setSelectedItem(table); - break; - } - - } - - } finally { - - tableSelectionPending = false; - } - - } - - } - - public DatabaseTable getSelectedTable() { - - if (tablesCombo.getSelectedItem() != null) { - - return (DatabaseTable) tablesCombo.getSelectedItem(); - } - - return null; - } - - public DatabaseColumn getSelectedColumn() { - - if (columnsCombo.getSelectedItem() != null) { - - return (DatabaseColumn) columnsCombo.getSelectedItem(); - } - - return null; - } - - public void itemStateChanged(final ItemEvent e) { - - if (selectionPending() || (e.getStateChange() == ItemEvent.DESELECTED)) { - - return; - } - - final Object source = e.getSource(); - - ThreadUtils.startWorker(new Runnable() { - public void run() { - - try { - - fireItemStateChanging(e); - - if (source == connectionsCombo) { - - connectionSelected(); - - } else if (source == tablesCombo) { - - tableSelected(); - } - - } finally { - - fireItemStateChanged(e); - } - - } - }); - - } - - private boolean selectionPending() { - return connectionSelectionPending || tableSelectionPending; - } - - private synchronized void fireItemStateChanged(ItemEvent e) { - - if (hasItemListeners()) { - - for (ItemSelectionListener listener : itemListeners) { - - listener.itemStateChanged(e); - } - - } - - } - - private synchronized void fireItemStateChanging(ItemEvent e) { - - if (hasItemListeners()) { - - for (ItemSelectionListener listener : itemListeners) { - - listener.itemStateChanging(e); - } - - } - - } - - private boolean hasItemListeners() { - - return (itemListeners != null && !itemListeners.isEmpty()); - } - - private void connectionSelected() { - clearCombos(); - } - - private void tableSelected() { - - if (columnsCombo != null) { - - try { - - DatabaseTable table = getSelectedTable(); - - if (table != null) { - - List columns = table.getColumns(); - - populateModelForCombo(columnsCombo, columns); - - } else { - - populateModelForCombo(columnsCombo, null); - } - - } catch (DataSourceException e) { - - handleDataSourceException(e); - } - - } - - } - - private void populateModelForCombo(JComboBox comboBox, List list) { - - if (comboBox == null) { - - return; - } - - DynamicComboBoxModel model = (DynamicComboBoxModel) comboBox.getModel(); - - if (list != null && !list.isEmpty()) { - - try { - - comboBox.removeItemListener(this); - model.setElements(list); - - } finally { - - comboBox.addItemListener(this); - } - - comboBox.setEnabled(true); - - } else { - - try { - - comboBox.removeItemListener(this); - model.removeAllElements(); - - } finally { - - comboBox.addItemListener(this); - } - - comboBox.setEnabled(false); - } - - } - - private void clearCombos() { - if (tablesCombo != null) - populateModelForCombo(tablesCombo, null); - } - - private void initTablesCombo(JComboBox comboBox) { - - comboBox.setModel(new DynamicComboBoxModel()); - initComboBox(comboBox); - } - - private void initConnectionsCombo(JComboBox comboBox) { - - DatabaseObjectFactory factory = databaseObjectFactory(); - - Vector hosts = new Vector(); - - for (DatabaseConnection connection : activeConnections()) { - - hosts.add(factory.createDatabaseHost(connection)); - } - - ComboBoxModel model = new DynamicComboBoxModel(hosts); - - comboBox.setModel(model); - initComboBox(comboBox); - comboBox.setEnabled(true); - } - - private void initComboBox(JComboBox comboBox) { - - comboBox.addItemListener(this); - comboBox.setEnabled(false); - } - - private DatabaseObjectFactory databaseObjectFactory() { - - return new DatabaseObjectFactoryImpl(); - } - - private Vector activeConnections() { - - return ConnectionManager.getActiveConnections(); - } - - private void handleDataSourceException(DataSourceException e) { - - Log.error(bundleString("error.selection-object"), e); - - throw new ApplicationException(e); - } - - public void close() { - - ComboBoxModel model = connectionComboModel(); - - for (int i = 0, n = model.getSize(); i < n; i++) { - - DatabaseHost host = (DatabaseHost) model.getElementAt(i); - host.close(); - } - } - - public JComboBox getConnectionsCombo() { - return connectionsCombo; - } - - public JComboBox getTablesCombo() { - return tablesCombo; - } - - public String bundleString(String key) { - return Bundles.get(getClass(), key); - } - -} diff --git a/src/org/executequery/gui/ExecuteSqlScriptPanel.java b/src/org/executequery/gui/ExecuteSqlScriptPanel.java index f2a0df2dc..8b84b2969 100644 --- a/src/org/executequery/gui/ExecuteSqlScriptPanel.java +++ b/src/org/executequery/gui/ExecuteSqlScriptPanel.java @@ -28,21 +28,14 @@ import org.executequery.components.SplitPaneFactory; import org.executequery.databasemediators.ConnectionMediator; import org.executequery.databasemediators.DatabaseConnection; -import org.executequery.datasource.ConnectionManager; import org.executequery.gui.text.SimpleSqlTextPanel; import org.executequery.gui.text.TextFileWriter; import org.executequery.localization.Bundles; -import org.executequery.repository.DatabaseConnectionRepository; -import org.executequery.repository.Repository; -import org.executequery.repository.RepositoryCache; import org.executequery.sql.ExecutionController; import org.executequery.sql.SqlScriptRunner; import org.executequery.sql.SqlStatementResult; import org.executequery.util.ThreadUtils; -import org.underworldlabs.swing.AbstractStatusBarPanel; -import org.underworldlabs.swing.GUIUtils; -import org.underworldlabs.swing.ProgressBar; -import org.underworldlabs.swing.ProgressBarFactory; +import org.underworldlabs.swing.*; import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.swing.plaf.UIUtils; import org.underworldlabs.swing.util.SwingWorker; @@ -55,8 +48,6 @@ import java.io.File; import java.io.IOException; import java.sql.SQLException; -import java.util.HashMap; -import java.util.Map; /** * @author Takis Diakoumis @@ -76,7 +67,7 @@ public class ExecuteSqlScriptPanel extends DefaultTabViewActionPanel // --- GUI components --- - private JComboBox connectionsCombo; + private ConnectionsComboBox connectionsCombo; private JCheckBox useConnectionCheck; private JCheckBox stopOnErrorCheck; @@ -105,27 +96,18 @@ public class ExecuteSqlScriptPanel extends DefaultTabViewActionPanel private SwingWorker swingWorker; private SqlScriptRunner sqlScriptRunner; - private final Map connections; public ExecuteSqlScriptPanel() { super(new BorderLayout()); - - this.connections = new HashMap<>(); - init(); arrange(); } private void init() { - Repository repository = RepositoryCache.load(DatabaseConnectionRepository.REPOSITORY_ID); - if (repository != null) - for (DatabaseConnection dc : ((DatabaseConnectionRepository) repository).findAll()) - connections.put(dc.getName(), dc); - // --- comboBoxes --- - connectionsCombo = WidgetFactory.createComboBox("connectionsCombo", connections.keySet().toArray()); + connectionsCombo = WidgetFactory.createConnectionComboBox("connectionsCombo", false); connectionsCombo.setEnabled(false); // --- checkBoxes --- @@ -430,8 +412,7 @@ private SqlStatementResult execute() { } private DatabaseConnection getSelectedConnection() { - Object selectedValue = connectionsCombo.getSelectedItem(); - return selectedValue != null ? connections.get(selectedValue.toString()) : null; + return connectionsCombo.getSelectedConnection(); } private boolean fieldsValid() { diff --git a/src/org/executequery/gui/browser/ComparerDBPanel.java b/src/org/executequery/gui/browser/ComparerDBPanel.java index 5588d1797..290cd3367 100644 --- a/src/org/executequery/gui/browser/ComparerDBPanel.java +++ b/src/org/executequery/gui/browser/ComparerDBPanel.java @@ -12,6 +12,7 @@ import org.executequery.datasource.SimpleDataSource; import org.executequery.gui.IconManager; import org.executequery.gui.LoggingOutputPanel; +import org.executequery.gui.WidgetFactory; import org.executequery.gui.browser.comparer.ComparedObject; import org.executequery.gui.browser.comparer.Comparer; import org.executequery.gui.editor.QueryEditor; @@ -20,10 +21,9 @@ import org.executequery.gui.text.SimpleSqlTextPanel; import org.executequery.localization.Bundles; import org.executequery.log.Log; -import org.executequery.repository.DatabaseConnectionRepository; -import org.executequery.repository.RepositoryCache; import org.underworldlabs.jdbc.DataSourceException; import org.underworldlabs.swing.BackgroundProgressDialog; +import org.underworldlabs.swing.ConnectionsComboBox; import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.swing.tree.AbstractTreeCellRenderer; import org.underworldlabs.swing.util.SwingWorker; @@ -73,7 +73,6 @@ public class ComparerDBPanel extends JPanel implements TabView { private Comparer comparer; private List scriptGenerationOrder; private List comparedObjectList; - private List databaseConnectionList; private static final List busyConnectionList = new ArrayList<>(); private boolean isComparing; @@ -83,8 +82,9 @@ public class ComparerDBPanel extends JPanel implements TabView { // --- panel components --- - private JComboBox dbMasterComboBox; - private JComboBox dbTargetComboBox; + private ConnectionsComboBox dbMasterComboBox; + private ConnectionsComboBox dbTargetComboBox; + private JButton compareButton; private JButton saveScriptButton; private JButton executeScriptButton; @@ -120,29 +120,31 @@ public ComparerDBPanel() { public ComparerDBPanel(List tables, DatabaseConnection databaseConnection) { isErd = true; isExtractMetadata = databaseConnection == null; + this.erdTables = new ArrayList<>(); - for (ErdTable erd : tables) { + for (ErdTable erd : tables) erdTables.add(new DefaultDatabaseTable(erd)); - } + init(); if (databaseConnection != null) { - dbTargetComboBox.setSelectedItem(databaseConnection.getName()); - dbMasterComboBox.setSelectedItem(databaseConnection.getName()); + dbTargetComboBox.setSelectedItem(databaseConnection); + dbMasterComboBox.setSelectedItem(databaseConnection); } + if (databaseConnection != null) attributesCheckBoxMap.values().forEach(checkBox -> checkBox.setSelected(true)); } - public ComparerDBPanel(DatabaseConnection dc) { + public ComparerDBPanel(DatabaseConnection databaseConnection) { isExtractMetadata = true; isErd = false; init(); - if (dc != null) { - dbTargetComboBox.setSelectedItem(dc.getName()); - dbMasterComboBox.setSelectedItem(dc.getName()); + if (databaseConnection != null) { + dbTargetComboBox.setSelectedItem(databaseConnection); + dbMasterComboBox.setSelectedItem(databaseConnection); } attributesCheckBoxMap.values().forEach(checkBox -> checkBox.setSelected(true)); @@ -150,11 +152,9 @@ public ComparerDBPanel(DatabaseConnection dc) { private void init() { - databaseConnectionList = new ArrayList<>(); - comparedObjectList = new ArrayList<>(); - isComparing = false; isReverseOrder = false; + comparedObjectList = new ArrayList<>(); // --- script generation order defining --- @@ -232,8 +232,8 @@ private void init() { // --- comboBoxes defining --- - dbTargetComboBox = new JComboBox<>(); - dbMasterComboBox = new JComboBox<>(); + dbTargetComboBox = WidgetFactory.createConnectionComboBox("dbTargetComboBox", false); + dbMasterComboBox = WidgetFactory.createConnectionComboBox("dbMasterComboBox", false); dbMasterComboBox.setVisible(!isExtractMetadata); // --- db components tree view --- @@ -277,7 +277,6 @@ public void mouseClicked(MouseEvent e) { // --- arrangeComponents(); - getConnections(); } private void arrangeComponents() { @@ -414,19 +413,6 @@ private void arrangeComponents() { } - private void getConnections() { - - List connections = - ((DatabaseConnectionRepository) Objects.requireNonNull( - RepositoryCache.load(DatabaseConnectionRepository.REPOSITORY_ID))).findAll(); - - for (DatabaseConnection dc : connections) { - databaseConnectionList.add(dc); - dbTargetComboBox.addItem(dc.getName()); - dbMasterComboBox.addItem(dc.getName()); - } - } - private boolean prepareComparer() { if (isErd && isExtractMetadata) { comparer = new Comparer(this, null, new boolean[]{ @@ -440,8 +426,9 @@ private boolean prepareComparer() { !isPropertySelected(IGNORE_FIELDS_POSITIONS)); return true; } - DatabaseConnection masterConnection = databaseConnectionList.get(dbMasterComboBox.getSelectedIndex()); - DatabaseConnection targetConnection = databaseConnectionList.get(dbTargetComboBox.getSelectedIndex()); + + DatabaseConnection masterConnection = dbMasterComboBox.getSelectedConnection(); + DatabaseConnection targetConnection = dbTargetComboBox.getSelectedConnection(); if (busyConnectionList.contains(masterConnection) || busyConnectionList.contains(targetConnection)) { GUIUtilities.displayWarningMessage(isExtractMetadata ? @@ -500,8 +487,8 @@ private boolean prepareComparer() { try { - DefaultDatabaseHost masterHost = new DefaultDatabaseHost(databaseConnectionList.get(dbMasterComboBox.getSelectedIndex())); - DefaultDatabaseHost slaveHost = new DefaultDatabaseHost(databaseConnectionList.get(dbTargetComboBox.getSelectedIndex())); + DefaultDatabaseHost masterHost = new DefaultDatabaseHost(dbMasterComboBox.getSelectedConnection()); + DefaultDatabaseHost slaveHost = new DefaultDatabaseHost(dbTargetComboBox.getSelectedConnection()); if (!slaveHost.getDatabaseProductName().toLowerCase().contains("reddatabase") || (!isExtractMetadata && !masterHost.getDatabaseProductName().toLowerCase().contains("reddatabase"))) { @@ -707,8 +694,7 @@ private void compareDatabase() { if (!isExtractMetadata) { - if (databaseConnectionList.size() < 2 || - dbTargetComboBox.getSelectedIndex() == dbMasterComboBox.getSelectedIndex()) { + if (Objects.equals(dbTargetComboBox.getSelectedConnection(), dbMasterComboBox.getSelectedConnection())) { GUIUtilities.displayWarningMessage(bundleString("UnableCompareSampleConnections")); return; } @@ -893,7 +879,7 @@ else if (Objects.equals(selectedBox, "properties")) } private void switchTargetSource() { - Object sourceConnection = dbMasterComboBox.getSelectedItem(); + DatabaseConnection sourceConnection = dbMasterComboBox.getSelectedConnection(); dbMasterComboBox.setSelectedItem(dbTargetComboBox.getSelectedItem()); dbTargetComboBox.setSelectedItem(sourceConnection); } diff --git a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java index 459b8dbce..e7006228d 100644 --- a/src/org/executequery/gui/browser/GeneratorTestDataPanel.java +++ b/src/org/executequery/gui/browser/GeneratorTestDataPanel.java @@ -21,6 +21,7 @@ import org.executequery.localization.Bundles; import org.executequery.log.Log; import org.executequery.sql.SqlStatementResult; +import org.underworldlabs.swing.ConnectionsComboBox; import org.underworldlabs.swing.DynamicComboBoxModel; import org.underworldlabs.swing.NumberTextField; import org.underworldlabs.swing.layouts.GridBagHelper; @@ -44,7 +45,7 @@ public class GeneratorTestDataPanel extends JPanel // --- GUI components --- private JComboBox tablesCombo; - private JComboBox connectionsCombo; + private ConnectionsComboBox connectionsCombo; private JButton stopButton; private JButton startButton; @@ -88,7 +89,7 @@ private void init() { tabbedPane.add(bundleString("Generator"), fieldsPanel); tabbedPane.add(bundleString("Output"), logPanel); - connectionsCombo = WidgetFactory.createComboBox("connectionsCombo", ConnectionManager.getActiveConnections()); + connectionsCombo = WidgetFactory.createConnectionComboBox("connectionsCombo", true); connectionsCombo.setMinimumSize(new Dimension(400, WidgetFactory.defaultHeight())); connectionsCombo.addItemListener(this::connectionsComboTriggered); @@ -598,7 +599,7 @@ private String getSelectedTable() { } private DatabaseConnection getSelectedConnection() { - return (DatabaseConnection) connectionsCombo.getSelectedItem(); + return connectionsCombo.getSelectedConnection(); } // --- TabView impl --- diff --git a/src/org/executequery/gui/browser/profiler/ProfilerPanel.java b/src/org/executequery/gui/browser/profiler/ProfilerPanel.java index 583d0ce58..7aee17b6e 100644 --- a/src/org/executequery/gui/browser/profiler/ProfilerPanel.java +++ b/src/org/executequery/gui/browser/profiler/ProfilerPanel.java @@ -2,13 +2,12 @@ import org.executequery.GUIUtilities; import org.executequery.base.TabView; -import org.executequery.components.TableSelectionCombosGroup; import org.executequery.databasemediators.DatabaseConnection; import org.executequery.databasemediators.spi.DefaultStatementExecutor; -import org.executequery.datasource.ConnectionManager; import org.executequery.gui.WidgetFactory; import org.executequery.localization.Bundles; import org.executequery.log.Log; +import org.underworldlabs.swing.ConnectionsComboBox; import org.underworldlabs.swing.DynamicComboBoxModel; import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.swing.treetable.CCTNode; @@ -42,8 +41,8 @@ public class ProfilerPanel extends JPanel // --- GUI objects --- - private JComboBox connectionsComboBox; private JComboBox attachmentsComboBox; + private ConnectionsComboBox connectionsComboBox; private JCheckBox compactViewCheckBox; private JCheckBox roundValuesCheckBox; @@ -64,9 +63,8 @@ public class ProfilerPanel extends JPanel private int sessionId; private int currentState; private boolean dataCollected; - private DefaultProfilerExecutor profilerExecutor; - private TableSelectionCombosGroup combosGroup; private List oldDataList; + private DefaultProfilerExecutor profilerExecutor; // --- @@ -100,10 +98,8 @@ private void init() { // --- connections comboBox --- - connectionsComboBox = WidgetFactory.createComboBox("connectionsComboBox"); - connectionsComboBox.setModel(new DynamicComboBoxModel(new Vector<>(ConnectionManager.getActiveConnections()))); + connectionsComboBox = WidgetFactory.createConnectionComboBox("connectionsComboBox", true); connectionsComboBox.addActionListener(e -> refreshAttachments()); - combosGroup = new TableSelectionCombosGroup(connectionsComboBox); // --- compactView CheckBox --- @@ -236,7 +232,7 @@ private void startSession() { } profilerExecutor = new DefaultProfilerExecutor( - combosGroup.getSelectedHost().getDatabaseConnection(), + getSelectedConnection(), ((AttachmentData) Objects.requireNonNull(attachmentsComboBox.getSelectedItem())).id ); @@ -595,7 +591,7 @@ private void refreshAttachments() { try { DefaultStatementExecutor executor = new DefaultStatementExecutor(); - executor.setDatabaseConnection(combosGroup.getSelectedHost().getDatabaseConnection()); + executor.setDatabaseConnection(getSelectedConnection()); executor.setKeepAlive(true); executor.setCommitMode(false); @@ -657,7 +653,11 @@ public boolean isDataCollected() { } private boolean isConnected() { - return combosGroup.getSelectedHost().isConnected(); + return getSelectedConnection().isConnected(); + } + + private DatabaseConnection getSelectedConnection() { + return connectionsComboBox.getSelectedConnection(); } @Override diff --git a/src/org/executequery/gui/connections/ImportConnectionsDBPanel.java b/src/org/executequery/gui/connections/ImportConnectionsDBPanel.java index ece7a40b9..3f09c56fd 100644 --- a/src/org/executequery/gui/connections/ImportConnectionsDBPanel.java +++ b/src/org/executequery/gui/connections/ImportConnectionsDBPanel.java @@ -5,7 +5,6 @@ import org.executequery.databasemediators.DatabaseConnectionFactory; import org.executequery.databasemediators.spi.DatabaseConnectionFactoryImpl; import org.executequery.databasemediators.spi.DefaultStatementExecutor; -import org.executequery.datasource.ConnectionManager; import org.executequery.gui.ActionContainer; import org.executequery.gui.WidgetFactory; import org.executequery.gui.browser.ConnectionsTreePanel; @@ -13,6 +12,7 @@ import org.executequery.log.Log; import org.executequery.repository.DatabaseConnectionRepository; import org.executequery.repository.RepositoryCache; +import org.underworldlabs.swing.ConnectionsComboBox; import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.util.MiscUtils; @@ -34,7 +34,7 @@ public class ImportConnectionsDBPanel extends JPanel { private JButton applyButton; private JButton cancelButton; - private JComboBox connectionsCombo; + private ConnectionsComboBox connectionsCombo; public ImportConnectionsDBPanel(ActionContainer parent) { this.parent = parent; @@ -46,7 +46,7 @@ public ImportConnectionsDBPanel(ActionContainer parent) { } private void init() { - connectionsCombo = WidgetFactory.createComboBox("connectionsCombo", ConnectionManager.getActiveConnections()); + connectionsCombo = WidgetFactory.createConnectionComboBox("connectionsCombo", true); applyButton = WidgetFactory.createButton("applyButton", Bundles.get("common.ok.button"), e -> importConnections()); cancelButton = WidgetFactory.createButton("cancelButton", Bundles.get("common.cancel.button"), e -> finished(false)); } @@ -199,7 +199,7 @@ private void finished(boolean showMessage) { } private DatabaseConnection getSelectedConnection() { - return (DatabaseConnection) connectionsCombo.getSelectedItem(); + return connectionsCombo.getSelectedConnection(); } private boolean connectionNameExists(String name, DatabaseConnection databaseConnection) { diff --git a/src/org/executequery/gui/databaseobjects/AbstractCreateObjectPanel.java b/src/org/executequery/gui/databaseobjects/AbstractCreateObjectPanel.java index 431bc2909..5448deda5 100644 --- a/src/org/executequery/gui/databaseobjects/AbstractCreateObjectPanel.java +++ b/src/org/executequery/gui/databaseobjects/AbstractCreateObjectPanel.java @@ -8,7 +8,6 @@ import org.executequery.databaseobjects.DatabaseTable; import org.executequery.databaseobjects.NamedObject; import org.executequery.databaseobjects.impl.*; -import org.executequery.datasource.ConnectionManager; import org.executequery.gui.ActionContainer; import org.executequery.gui.BaseDialog; import org.executequery.gui.ExecuteQueryDialog; @@ -24,7 +23,7 @@ import org.executequery.gui.text.SimpleSqlTextPanel; import org.executequery.localization.Bundles; import org.executequery.log.Log; -import org.underworldlabs.swing.DynamicComboBoxModel; +import org.underworldlabs.swing.ConnectionsComboBox; import org.underworldlabs.swing.UpperFilter; import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.util.MiscUtils; @@ -39,7 +38,6 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.print.Printable; -import java.util.Vector; public abstract class AbstractCreateObjectPanel extends AbstractFormObjectViewPanel { @@ -58,7 +56,7 @@ public abstract class AbstractCreateObjectPanel extends AbstractFormObjectViewPa protected JButton submitButton; protected JButton cancelButton; protected JTextField nameField; - protected JComboBox connectionsCombo; + protected ConnectionsComboBox connectionsCombo; protected SimpleCommentPanel simpleCommentPanel; protected boolean edited; @@ -125,13 +123,12 @@ private void initBase() { // --- connections comboBox --- - Vector connections = ConnectionManager.getActiveConnections(); - connectionsCombo = WidgetFactory.createComboBox("connectionsCombo", new DynamicComboBoxModel(connections)); + connectionsCombo = WidgetFactory.createConnectionComboBox("connectionsCombo", true); connectionsCombo.addItemListener(this::connectionChanged); connectionsCombo.setEnabled(parent != null); if (connection == null) - connection = (DatabaseConnection) connectionsCombo.getSelectedItem(); + connection = getSelectedConnection(); else connectionsCombo.setSelectedItem(connection); @@ -297,7 +294,7 @@ private void connectionChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.DESELECTED) return; - connection = (DatabaseConnection) connectionsCombo.getSelectedItem(); + connection = getSelectedConnection(); sender.setDatabaseConnection(connection); } @@ -413,6 +410,10 @@ protected static String getEditTitle(int type) { return Bundles.get(BrowserTreePopupMenu.class, "edit", Bundles.get(BrowserTreePopupMenu.class, NamedObject.META_TYPES_FOR_BUNDLE[type])); } + protected DatabaseConnection getSelectedConnection() { + return connectionsCombo.getSelectedConnection(); + } + @Override public void cleanup() { super.cleanup(); diff --git a/src/org/executequery/gui/databaseobjects/CreateProcedurePanel.java b/src/org/executequery/gui/databaseobjects/CreateProcedurePanel.java index a336a5734..e7d260b79 100644 --- a/src/org/executequery/gui/databaseobjects/CreateProcedurePanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateProcedurePanel.java @@ -52,7 +52,7 @@ protected String getFullSourceBody() { String fullProcedureBody = null; try { - DatabaseConnection connection = (DatabaseConnection) connectionsCombo.getSelectedItem(); + DatabaseConnection connection = getSelectedConnection(); host = new DatabaseObjectFactoryImpl().createDatabaseHost(connection); DatabaseMetaData databaseMetadata = ((PooledDatabaseMetaData) host.getDatabaseMetaData()).getInner(); diff --git a/src/org/executequery/gui/editor/OpenConnectionsComboBox.java b/src/org/executequery/gui/editor/OpenConnectionsComboBox.java deleted file mode 100644 index 5788a3e79..000000000 --- a/src/org/executequery/gui/editor/OpenConnectionsComboBox.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * OpenConnectionsComboBox.java - * - * Copyright (C) 2002-2017 Takis Diakoumis - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 3 - * of the License, or any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package org.executequery.gui.editor; - -import org.executequery.databasemediators.DatabaseConnection; -import org.underworldlabs.swing.DynamicComboBoxModel; - -import javax.swing.*; -import java.awt.event.KeyEvent; -import java.util.Vector; - -/** - * @author Takis Diakoumis - */ -final class OpenConnectionsComboBox extends JComboBox { - - private QueryEditor queryEditor; - - private DynamicComboBoxModel connectionsModel; - - OpenConnectionsComboBox(QueryEditor queryEditor, - Vector connections) { - - this.queryEditor = queryEditor; - - connectionsModel = new DynamicComboBoxModel(connections); - setModel(connectionsModel); - - if (connectionsModel.getSize() == 0) { - setEnabled(false); - } - - } - - public boolean contains(DatabaseConnection databaseConnection) { - - return connectionsModel.contains(databaseConnection); - } - - public void processKeyEvent(KeyEvent e) { - - super.processKeyEvent(e); - - if (isKeyForCaretReset(e.getKeyCode())) { - - queryEditor.resetCaretPositionToLast(); - } - } - - private boolean isKeyForCaretReset(int keyCode) { - return keyCode == KeyEvent.VK_ENTER || keyCode == KeyEvent.VK_ESCAPE; - } - - protected void attemptToFocus() { - requestFocus(); - setPopupVisible(true); - } - - protected void removeElement(DatabaseConnection databaseConnection) { - connectionsModel.removeElement(databaseConnection); - if (connectionsModel.getSize() == 0) { - setEnabled(false); - } - } - - protected void addElement(DatabaseConnection databaseConnection) { - connectionsModel.addElement(databaseConnection); - setEnabled(true); - } - -} - - - - - diff --git a/src/org/executequery/gui/editor/QueryEditor.java b/src/org/executequery/gui/editor/QueryEditor.java index 311c3ef76..531299a64 100644 --- a/src/org/executequery/gui/editor/QueryEditor.java +++ b/src/org/executequery/gui/editor/QueryEditor.java @@ -43,6 +43,7 @@ import org.japura.gui.event.ListCheckListener; import org.japura.gui.event.ListEvent; import org.underworldlabs.sqlParser.SqlParser; +import org.underworldlabs.swing.ConnectionsComboBox; import org.underworldlabs.swing.EQCheckCombox; import org.underworldlabs.swing.RolloverButton; import org.underworldlabs.swing.layouts.GridBagHelper; @@ -100,8 +101,8 @@ public class QueryEditor extends DefaultTabView private QueryEditorPopupMenu popup; private TransactionParametersPanel transactionParametersPanel; - private OpenConnectionsComboBox connectionsCombo; private EQCheckCombox connectionsCheckCombo; + private ConnectionsComboBox connectionsCombo; private JPanel baseEditorPanel; private JSplitPane splitPane; @@ -187,7 +188,7 @@ private void init() { // --- connection combos --- - connectionsCombo = new OpenConnectionsComboBox(this, ConnectionManager.getActiveConnections()); + connectionsCombo = WidgetFactory.createConnectionComboBox("connectionsCombo", true); connectionsCombo.setMaximumSize(new Dimension(200, 30)); connectionsCombo.addItemListener(this::connectionChanged); connectionsCombo.setVisible(!useMultipleConnections); @@ -199,7 +200,7 @@ private void init() { oldConnection = useMultipleConnections ? getSelectedConnection() : - (DatabaseConnection) connectionsCombo.getSelectedItem(); + connectionsCombo.getSelectedConnection(); // --- transaction parameters panel --- @@ -936,12 +937,9 @@ public DatabaseConnection getSelectedConnection() { return selectedConnections != null && !selectedConnections.isEmpty() ? (DatabaseConnection) selectedConnections.get(0) : null; - - } else { - return connectionsCombo.getSelectedIndex() != -1 ? - (DatabaseConnection) connectionsCombo.getSelectedItem() : - null; } + + return connectionsCombo.getSelectedConnection(); } public void setSelectedConnection(DatabaseConnection databaseConnection) { @@ -953,8 +951,8 @@ public void setSelectedConnection(DatabaseConnection databaseConnection) { } else if (useMultipleConnections) connectionToSelect = databaseConnection; - if (connectionsCombo.contains(databaseConnection)) { - connectionsCombo.getModel().setSelectedItem(databaseConnection); + if (connectionsCombo.hasConnection(databaseConnection)) { + connectionsCombo.setSelectedItem(databaseConnection); } else if (!useMultipleConnections) connectionToSelect = databaseConnection; @@ -1388,29 +1386,21 @@ public void cleanup() { public void connected(ConnectionEvent connectionEvent) { if (!isQueryEditorClosed) { - -// if (connectionsCombo.getModel().getSize() == 0) -// connectionsCombo.addElement(null); - - connectionsCombo.addElement(connectionEvent.getDatabaseConnection()); connectionsCheckCombo.getModel().addElement(connectionEvent.getDatabaseConnection()); DatabaseConnection databaseConnection = connectionEvent.getDatabaseConnection(); if (databaseConnection == connectionToSelect) { connectionsCheckCombo.getModel().addCheck(databaseConnection); - connectionsCombo.getModel().setSelectedItem(databaseConnection); + connectionsCombo.setSelectedItem(databaseConnection); connectionToSelect = null; } } - } @Override public void disconnected(ConnectionEvent connectionEvent) { - if (!isQueryEditorClosed) { + if (!isQueryEditorClosed) connectionsCheckCombo.getModel().removeElement(connectionEvent.getDatabaseConnection()); - connectionsCombo.removeElement(connectionEvent.getDatabaseConnection()); - } } // --------------------------------------------- diff --git a/src/org/executequery/gui/erd/ErdSelectionPanel.java b/src/org/executequery/gui/erd/ErdSelectionPanel.java index de2d16d05..07f7b39e6 100644 --- a/src/org/executequery/gui/erd/ErdSelectionPanel.java +++ b/src/org/executequery/gui/erd/ErdSelectionPanel.java @@ -23,12 +23,11 @@ import org.executequery.GUIUtilities; import org.executequery.databasemediators.DatabaseConnection; import org.executequery.databaseobjects.NamedObject; -import org.executequery.datasource.ConnectionManager; import org.executequery.gui.WidgetFactory; import org.executequery.gui.browser.ConnectionsTreePanel; import org.executequery.localization.Bundles; import org.underworldlabs.jdbc.DataSourceException; -import org.underworldlabs.swing.DynamicComboBoxModel; +import org.underworldlabs.swing.ConnectionsComboBox; import org.underworldlabs.swing.GUIUtils; import org.underworldlabs.swing.ListSelectionPanel; @@ -49,12 +48,7 @@ public class ErdSelectionPanel extends JPanel /** * The connection combo selection */ - protected JComboBox connectionsCombo; - - /** - * The connections combo box model - */ - protected DynamicComboBoxModel connectionsModel; + protected ConnectionsComboBox connectionsCombo; /** * The add/remove table selections panel @@ -82,10 +76,7 @@ private void init() { listPanel = new ListSelectionPanel(bundleString("availableTables"), bundleString("selected Tables")); - // combo boxes - Vector connections = ConnectionManager.getActiveConnections(); - connectionsModel = new DynamicComboBoxModel(connections); - connectionsCombo = WidgetFactory.createComboBox("connectionsCombo", connectionsModel); + connectionsCombo = WidgetFactory.createConnectionComboBox("connectionsCombo", true); connectionsCombo.addItemListener(this); setBorder(BorderFactory.createEtchedBorder()); @@ -112,9 +103,7 @@ private void init() { gbc.fill = GridBagConstraints.BOTH; add(listPanel, gbc); - if (connections.isEmpty()) - connectionsCombo.setEnabled(false); - else + if (connectionsCombo.getItemCount() > 0) connectionChanged(); setPreferredSize(new Dimension(700, 380)); @@ -135,7 +124,7 @@ public void itemStateChanged(ItemEvent event) { } private void connectionChanged() { - databaseConnection = (DatabaseConnection) connectionsCombo.getSelectedItem(); + databaseConnection = getSelectedConnection(); try { List tables = ConnectionsTreePanel.getPanelFromBrowser() @@ -171,10 +160,14 @@ public boolean hasSelections() { public DatabaseConnection getDatabaseConnection() { if (databaseConnection == null) - return (DatabaseConnection) connectionsCombo.getSelectedItem(); + return getSelectedConnection(); return databaseConnection; } + private DatabaseConnection getSelectedConnection() { + return connectionsCombo.getSelectedConnection(); + } + private String bundleString(String key) { return Bundles.get(ErdSelectionPanel.class, key); } diff --git a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java index 472a58c3e..e89ce405d 100644 --- a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java +++ b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java @@ -567,7 +567,7 @@ private void columnChangeConnection(DatabaseConnection dc) { } private void connectionChanged() { - DatabaseConnection connection = (DatabaseConnection) connectionsCombo.getSelectedItem(); + DatabaseConnection connection = getSelectedConnection(); // reset meta data inputParamsPanel.setDatabaseConnection(connection); diff --git a/src/org/executequery/gui/table/CreateTablePanel.java b/src/org/executequery/gui/table/CreateTablePanel.java index 3ff8744dc..2d65f85dd 100644 --- a/src/org/executequery/gui/table/CreateTablePanel.java +++ b/src/org/executequery/gui/table/CreateTablePanel.java @@ -594,7 +594,7 @@ public void stateChanged(ChangeEvent e) { @Override public DatabaseConnection getSelectedConnection() { - return (DatabaseConnection) connectionsCombo.getSelectedItem(); + return super.getSelectedConnection(); } @Override From 84c1b594ba69cf851446764c5d5293eb0f6e316b Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Wed, 7 Aug 2024 14:19:51 +0300 Subject: [PATCH 062/141] See RS-187694 fix freezing autocomplete --- .../DefaultAutoCompletePopupProvider.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/org/executequery/gui/editor/autocomplete/DefaultAutoCompletePopupProvider.java b/src/org/executequery/gui/editor/autocomplete/DefaultAutoCompletePopupProvider.java index d877dfa33..cd805086b 100644 --- a/src/org/executequery/gui/editor/autocomplete/DefaultAutoCompletePopupProvider.java +++ b/src/org/executequery/gui/editor/autocomplete/DefaultAutoCompletePopupProvider.java @@ -33,8 +33,10 @@ import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.KeyEvent; +import java.util.ArrayList; +import java.util.Comparator; import java.util.List; -import java.util.*; +import java.util.TreeSet; public class DefaultAutoCompletePopupProvider implements AutoCompletePopupProvider, @@ -712,14 +714,13 @@ public void firePopupTrigger() { QueryEditorAutoCompletePopupPanel popupPanel = popupMenu(); Container parent = textComponent.getParent(); - int popupHeight = popupPanel.getHeight(); + int popupHeight = popupPanel.getPreferredSize().height; if (popupHeight != 0 && caretPosition.y + popupHeight > parent.getHeight()) caretPosition.y = caretPosition.y - popupHeight; else caretPosition.y += heightFont; - - if (caretPosition.x + popupPanel.getWidth() > parent.getWidth()) - caretPosition.x = parent.getWidth() - popupPanel.getWidth(); + if (caretPosition.x + popupPanel.getPreferredSize().width > parent.getWidth()) + caretPosition.x = parent.getWidth() - popupPanel.getPreferredSize().width; if (caretPosition.x < 0) caretPosition.x = 0; From eeb2c5e5d6a23d560e64a0d3a4648706daa015a1 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 13:42:46 +0300 Subject: [PATCH 063/141] Add names for ComparerDBPanel class GUI components --- .../gui/browser/ComparerDBPanel.java | 89 +++++++++++-------- 1 file changed, 51 insertions(+), 38 deletions(-) diff --git a/src/org/executequery/gui/browser/ComparerDBPanel.java b/src/org/executequery/gui/browser/ComparerDBPanel.java index 290cd3367..7522914fa 100644 --- a/src/org/executequery/gui/browser/ComparerDBPanel.java +++ b/src/org/executequery/gui/browser/ComparerDBPanel.java @@ -93,33 +93,34 @@ public class ComparerDBPanel extends JPanel implements TabView { private JButton switchTargetSourceButton; private JTabbedPane tabPane; - private LoggingOutputPanel loggingOutputPanel; private SimpleSqlTextPanel sqlTextPanel; + private LoggingOutputPanel loggingOutputPanel; private DifferenceSqlTextPanel differenceSqlTextPanel; + private JTree dbComponentsTree; private ComparerTreeNode rootTreeNode; private JProgressBar progressBar; private BackgroundProgressDialog progressDialog; + private List erdTables; private Map attributesCheckBoxMap; private Map propertiesCheckBoxMap; - private List erdTables; private StringBuilder settingScriptProps; // --- public ComparerDBPanel() { + this.isExtractMetadata = false; + this.isErd = false; - isExtractMetadata = false; - isErd = false; init(); } public ComparerDBPanel(List tables, DatabaseConnection databaseConnection) { - isErd = true; - isExtractMetadata = databaseConnection == null; + this.isExtractMetadata = databaseConnection == null; + this.isErd = true; this.erdTables = new ArrayList<>(); for (ErdTable erd : tables) @@ -137,9 +138,9 @@ public ComparerDBPanel(List tables, DatabaseConnection databaseConnect } public ComparerDBPanel(DatabaseConnection databaseConnection) { + this.isExtractMetadata = true; + this.isErd = false; - isExtractMetadata = true; - isErd = false; init(); if (databaseConnection != null) { @@ -163,29 +164,40 @@ private void init() { // --- buttons defining --- - compareButton = new JButton(); - compareButton.setText(bundleString(isExtractMetadata ? "CompareExportButton" : "CompareButton")); - compareButton.addActionListener(e -> compareDatabase()); + compareButton = WidgetFactory.createButton( + "compareButton", + bundleString(isExtractMetadata ? "CompareExportButton" : "CompareButton"), + e -> compareDatabase() + ); - saveScriptButton = new JButton(); - saveScriptButton.setText(bundleString("SaveScriptButton")); - saveScriptButton.addActionListener(e -> saveScript()); + saveScriptButton = WidgetFactory.createButton( + "saveScriptButton", + bundleString("SaveScriptButton"), + e -> saveScript() + ); - executeScriptButton = new JButton(); - executeScriptButton.setText(bundleString("ExecuteScriptButton")); - executeScriptButton.addActionListener(e -> executeScript()); + executeScriptButton = WidgetFactory.createButton( + "executeScriptButton", + bundleString("ExecuteScriptButton"), + e -> executeScript() + ); - selectAllAttributesButton = new JButton(); - selectAllAttributesButton.setText(bundleString("SelectAllButton")); - selectAllAttributesButton.addActionListener(e -> selectAll("attributes")); + selectAllAttributesButton = WidgetFactory.createButton( + "selectAllAttributesButton", + bundleString("SelectAllButton"), + e -> selectAll("attributes") + ); - selectAllPropertiesButton = new JButton(); - selectAllPropertiesButton.setText(bundleString("SelectAllButton")); - selectAllPropertiesButton.addActionListener(e -> selectAll("properties")); + selectAllPropertiesButton = WidgetFactory.createButton( + "selectAllPropertiesButton", + bundleString("SelectAllButton"), + e -> selectAll("properties") + ); - switchTargetSourceButton = new JButton(); - switchTargetSourceButton.setText("

"); // Unicode Character '⇅' (U+21C5) - switchTargetSourceButton.addActionListener(e -> switchTargetSource()); + switchTargetSourceButton = WidgetFactory.createButton( + "switchTargetSourceButton", + "

", + e -> switchTargetSource()); switchTargetSourceButton.setVisible(!isExtractMetadata); // --- attributes checkBox defining --- @@ -200,23 +212,23 @@ private void init() { if (checkBoxText.isEmpty()) checkBoxText = Bundles.get(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[objectType]); - attributesCheckBoxMap.put(objectType, new JCheckBox(checkBoxText)); + JCheckBox checkBox = WidgetFactory.createCheckBox(NamedObject.META_TYPES_FOR_BUNDLE[objectType] + "_CHECK", checkBoxText); + attributesCheckBoxMap.put(objectType, checkBox); } // --- properties checkBox defining --- propertiesCheckBoxMap = new LinkedHashMap<>(); - propertiesCheckBoxMap.put(CHECK_CREATE, new JCheckBox(bundleString("CheckCreate"))); - propertiesCheckBoxMap.put(CHECK_ALTER, new JCheckBox(bundleString("CheckAlter"))); - propertiesCheckBoxMap.put(CHECK_DROP, new JCheckBox(bundleString("CheckDrop"))); - propertiesCheckBoxMap.put(IGNORE_COMMENTS, new JCheckBox(bundleString(("IgnoreComments")))); - propertiesCheckBoxMap.put(IGNORE_COMPUTED_FIELDS, new JCheckBox(bundleString(("IgnoreComputed")))); - propertiesCheckBoxMap.put(IGNORE_FIELDS_POSITIONS, new JCheckBox(bundleString(("IgnorePositions")))); - propertiesCheckBoxMap.put(IGNORE_PK, new JCheckBox(bundleString("IgnorePK"))); - propertiesCheckBoxMap.put(IGNORE_FK, new JCheckBox(bundleString("IgnoreFK"))); - propertiesCheckBoxMap.put(IGNORE_UK, new JCheckBox(bundleString("IgnoreUK"))); - propertiesCheckBoxMap.put(IGNORE_CK, new JCheckBox(bundleString("IgnoreCK"))); - + propertiesCheckBoxMap.put(CHECK_CREATE, WidgetFactory.createCheckBox("checkCreate", bundleString("CheckCreate"))); + propertiesCheckBoxMap.put(CHECK_ALTER, WidgetFactory.createCheckBox("checkAlter", bundleString("CheckAlter"))); + propertiesCheckBoxMap.put(CHECK_DROP, WidgetFactory.createCheckBox("checkDrop", bundleString("CheckDrop"))); + propertiesCheckBoxMap.put(IGNORE_COMMENTS, WidgetFactory.createCheckBox("ignoreComments", bundleString(("IgnoreComments")))); + propertiesCheckBoxMap.put(IGNORE_COMPUTED_FIELDS, WidgetFactory.createCheckBox("ignoreComputed", bundleString(("IgnoreComputed")))); + propertiesCheckBoxMap.put(IGNORE_FIELDS_POSITIONS, WidgetFactory.createCheckBox("ignorePositions", bundleString(("IgnorePositions")))); + propertiesCheckBoxMap.put(IGNORE_PK, WidgetFactory.createCheckBox("ignorePK", bundleString("IgnorePK"))); + propertiesCheckBoxMap.put(IGNORE_FK, WidgetFactory.createCheckBox("ignoreFK", bundleString("IgnoreFK"))); + propertiesCheckBoxMap.put(IGNORE_UK, WidgetFactory.createCheckBox("ignoreUK", bundleString("IgnoreUK"))); + propertiesCheckBoxMap.put(IGNORE_CK, WidgetFactory.createCheckBox("ignoreCK", bundleString("IgnoreCK"))); if (isExtractMetadata) { propertiesCheckBoxMap.remove(CHECK_CREATE); @@ -240,6 +252,7 @@ private void init() { rootTreeNode = new ComparerTreeNode(bundleString("DatabaseChanges")); dbComponentsTree = new JTree(new DefaultTreeModel(rootTreeNode)); + dbComponentsTree.setName("dbComponentsTree"); dbComponentsTree.setCellRenderer(new ComparerTreeCellRenderer()); dbComponentsTree.addMouseListener(new MouseAdapter() { @Override From ba91c40ded64f9a96f1cb9d5d9cbbaefd40f0b3f Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 13:50:12 +0300 Subject: [PATCH 064/141] Fix calculating GUI components height --- src/org/executequery/gui/WidgetFactory.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/org/executequery/gui/WidgetFactory.java b/src/org/executequery/gui/WidgetFactory.java index 491a02fff..27b2a1630 100644 --- a/src/org/executequery/gui/WidgetFactory.java +++ b/src/org/executequery/gui/WidgetFactory.java @@ -769,7 +769,10 @@ public static LinkLabel createLinkLabel(String name, String text, String link, i // ----------------------- private static Dimension getPreferredSize(JComponent component) { - return new Dimension((int) component.getPreferredSize().getWidth(), DEFAULT_HEIGHT); + return new Dimension( + (int) component.getPreferredSize().getWidth(), + (int) Math.max(DEFAULT_HEIGHT, component.getPreferredSize().getHeight()) + ); } public static int defaultHeight() { From b394a07acadc796e0332e1edd348209a39bda461 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 14:33:36 +0300 Subject: [PATCH 065/141] Fix components arranging on the ComparerDBPanel --- .../gui/browser/ComparerDBPanel.java | 103 ++++++++---------- 1 file changed, 45 insertions(+), 58 deletions(-) diff --git a/src/org/executequery/gui/browser/ComparerDBPanel.java b/src/org/executequery/gui/browser/ComparerDBPanel.java index 7522914fa..e246807bc 100644 --- a/src/org/executequery/gui/browser/ComparerDBPanel.java +++ b/src/org/executequery/gui/browser/ComparerDBPanel.java @@ -116,6 +116,7 @@ public ComparerDBPanel() { this.isErd = false; init(); + arrange(); } public ComparerDBPanel(List tables, DatabaseConnection databaseConnection) { @@ -127,6 +128,7 @@ public ComparerDBPanel(List tables, DatabaseConnection databaseConnect erdTables.add(new DefaultDatabaseTable(erd)); init(); + arrange(); if (databaseConnection != null) { dbTargetComboBox.setSelectedItem(databaseConnection); @@ -142,6 +144,7 @@ public ComparerDBPanel(DatabaseConnection databaseConnection) { this.isErd = false; init(); + arrange(); if (databaseConnection != null) { dbTargetComboBox.setSelectedItem(databaseConnection); @@ -199,6 +202,7 @@ private void init() { "

", e -> switchTargetSource()); switchTargetSourceButton.setVisible(!isExtractMetadata); + switchTargetSourceButton.setHorizontalTextPosition(SwingConstants.LEFT); // --- attributes checkBox defining --- @@ -279,6 +283,7 @@ public void mouseClicked(MouseEvent e) { loggingOutputPanel = new LoggingOutputPanel(); loggingOutputPanel.append(bundleString("WelcomeText")); + loggingOutputPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 6, 0)); progressBar = new JProgressBar(); progressBar.setStringPainted(true); @@ -286,54 +291,42 @@ public void mouseClicked(MouseEvent e) { sqlTextPanel = new SimpleSqlTextPanel(); differenceSqlTextPanel = new DifferenceSqlTextPanel(bundleString("SourceLabel"), bundleString("TargetLabel"), !isExtractMetadata); - - // --- - - arrangeComponents(); } - private void arrangeComponents() { - - GridBagHelper gridBagHelper; + private void arrange() { + GridBagHelper gbh; // --- connections selector panel --- - gridBagHelper = new GridBagHelper(); - gridBagHelper.setInsets(5, 5, 5, 5).anchorNorthWest().fillHorizontally(); - JPanel connectionsSelectorPanel = new JPanel(new GridBagLayout()); - gridBagHelper.addLabelFieldPair(connectionsSelectorPanel, - bundleString("CompareDatabaseLabel"), dbTargetComboBox, null); - if (!isExtractMetadata) - gridBagHelper.addLabelFieldPair(connectionsSelectorPanel, - bundleString("MasterDatabaseLabel"), dbMasterComboBox, null); + gbh = new GridBagHelper().anchorNorthWest().fillHorizontally(); + connectionsSelectorPanel.add(new JLabel(bundleString("CompareDatabaseLabel")), gbh.topGap(3).setMinWeightX().get()); + connectionsSelectorPanel.add(dbTargetComboBox, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); + if (!isExtractMetadata) { + connectionsSelectorPanel.add(new JLabel(bundleString("MasterDatabaseLabel")), gbh.nextRowFirstCol().topGap(8).leftGap(0).setMinWeightX().get()); + connectionsSelectorPanel.add(dbMasterComboBox, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + } // --- connections panel --- - gridBagHelper = new GridBagHelper(); - gridBagHelper.setInsets(5, 5, 5, 5).anchorNorthWest().fillHorizontally(); - JPanel connectionsPanel = new JPanel(new GridBagLayout()); connectionsPanel.setBorder(BorderFactory.createTitledBorder(bundleString("ConnectionsLabel"))); - connectionsPanel.add(connectionsSelectorPanel, gridBagHelper.setMaxWeightX().get()); - connectionsPanel.add(switchTargetSourceButton, gridBagHelper.nextCol().setMinWeightX().fillVertical().get()); - connectionsPanel.add(compareButton, gridBagHelper.nextRowFirstCol().setWidth(2).fillHorizontally().get()); + gbh = new GridBagHelper().setInsets(5, 5, 5, 5).anchorNorthWest().fillBoth(); + connectionsPanel.add(connectionsSelectorPanel, gbh.setMaxWeightX().get()); + connectionsPanel.add(switchTargetSourceButton, gbh.nextCol().leftGap(0).setMinWeightX().fillVertical().get()); + connectionsPanel.add(compareButton, gbh.nextRowFirstCol().leftGap(5).topGap(0).fillHorizontally().spanX().get()); // --- attributes panel --- - gridBagHelper = new GridBagHelper(); - gridBagHelper.setLabelDefault().setInsets(5, 5, 5, 5).anchorNorthWest().fillHorizontally(); - JPanel attributesPanel = new JPanel(new GridBagLayout()); - attributesPanel.add(selectAllAttributesButton, gridBagHelper.nextRowFirstCol().setLabelDefault().anchorNorthWest().get()); + gbh = new GridBagHelper().setInsets(5, 5, 5, 0).anchorNorthWest().fillHorizontally(); + attributesPanel.add(selectAllAttributesButton, gbh.get()); for (JCheckBox checkBox : attributesCheckBoxMap.values()) - attributesPanel.add(checkBox, gridBagHelper.nextRowFirstCol().get()); - attributesPanel.add(new JPanel(), gridBagHelper.nextRowFirstCol().setMaxWeightY().spanY().get()); - - attributesPanel.add(new JScrollPane()); + attributesPanel.add(checkBox, gbh.nextRowFirstCol().get()); + attributesPanel.add(new JPanel(), gbh.nextRowFirstCol().bottomGap(5).setMaxWeightY().spanY().get()); JScrollPane attributesPanelWithScrolls = new JScrollPane(attributesPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, @@ -343,15 +336,13 @@ private void arrangeComponents() { // --- properties panel --- - gridBagHelper = new GridBagHelper(); - gridBagHelper.setLabelDefault().setInsets(5, 5, 5, 5).anchorNorthWest().fillHorizontally(); - JPanel propertiesPanel = new JPanel(new GridBagLayout()); - propertiesPanel.add(selectAllPropertiesButton, gridBagHelper.nextRowFirstCol().setLabelDefault().anchorNorthWest().get()); + gbh = new GridBagHelper().setInsets(5, 5, 5, 0).anchorNorthWest().fillHorizontally(); + propertiesPanel.add(selectAllPropertiesButton, gbh.get()); for (JCheckBox checkBox : propertiesCheckBoxMap.values()) - propertiesPanel.add(checkBox, gridBagHelper.nextRowFirstCol().get()); - propertiesPanel.add(new JPanel(), gridBagHelper.nextRowFirstCol().setMaxWeightY().spanY().get()); + propertiesPanel.add(checkBox, gbh.nextRowFirstCol().get()); + propertiesPanel.add(new JPanel(), gbh.nextRowFirstCol().bottomGap(5).setMaxWeightY().spanY().get()); JScrollPane propertiesPanelWithScrolls = new JScrollPane(propertiesPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, @@ -361,21 +352,20 @@ private void arrangeComponents() { // --- SQL panel --- - gridBagHelper = new GridBagHelper(); - gridBagHelper.setLabelDefault().setInsets(5, 5, 5, 5).anchorNorthWest().fillBoth(); - JPanel sqlPanel = new JPanel(new GridBagLayout()); - sqlPanel.add(sqlTextPanel, gridBagHelper.setWidth(3).setMaxWeightY().spanX().get()); - sqlPanel.add(saveScriptButton, gridBagHelper.setLabelDefault().nextRowFirstCol().get()); - sqlPanel.add(executeScriptButton, gridBagHelper.nextCol().get()); - sqlPanel.add(new JPanel(), gridBagHelper.nextCol().get()); + gbh = new GridBagHelper().setInsets(0, 5, 0, 5).anchorNorthWest().fillBoth(); + sqlPanel.add(sqlTextPanel, gbh.setMaxWeightY().spanX().get()); + sqlPanel.add(saveScriptButton, gbh.nextRowFirstCol().setLabelDefault().topGap(0).bottomGap(6).get()); + sqlPanel.add(executeScriptButton, gbh.nextCol().leftGap(5).get()); + sqlPanel.add(new JPanel(), gbh.nextCol().setMaxWeightX().get()); // --- view panel --- JScrollPane dbComponentsTreePanel = new JScrollPane(dbComponentsTree, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + dbComponentsTreePanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 6, 5)); JSplitPane viewPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); viewPanel.setResizeWeight(0.25); @@ -385,39 +375,36 @@ private void arrangeComponents() { // --- tabbed pane --- tabPane = new JTabbedPane(); - tabPane.add(bundleString("OutputLabel"), loggingOutputPanel); tabPane.add(bundleString("TreeView"), viewPanel); tabPane.add("SQL", sqlPanel); // --- compare panel --- - gridBagHelper = new GridBagHelper(); - gridBagHelper.setLabelDefault().setInsets(5, 5, 5, 5).anchorNorthWest().fillBoth(); - JPanel comparePanel = new JPanel(new GridBagLayout()); - if (!isErd) { - comparePanel.add(connectionsPanel, gridBagHelper.setWidth(2).get()); + gbh = new GridBagHelper().setInsets(5, 5, 5, 0).anchorNorthWest().fillBoth(); + if (!isErd) { + comparePanel.add(connectionsPanel, gbh.spanX().get()); + comparePanel.add(attributesPanelWithScrolls, gbh.nextRowFirstCol().setMaxWeightY().setWidth(1).spanY().get()); + gbh.nextCol().leftGap(5); - comparePanel.add(attributesPanelWithScrolls, gridBagHelper.nextRowFirstCol().setWidth(1).get()); } else { - comparePanel.add(compareButton, gridBagHelper.setLabelDefault().get()); - gridBagHelper.nextRowFirstCol(); - gridBagHelper.previousCol(); + comparePanel.add(compareButton, gbh.spanX().get()); + gbh.nextRow().setMaxWeightY().spanY(); } - comparePanel.add(propertiesPanelWithScrolls, gridBagHelper.nextCol().spanY().get()); + comparePanel.add(propertiesPanelWithScrolls, gbh.get()); // --- main panel --- - gridBagHelper = new GridBagHelper(); - gridBagHelper.setLabelDefault().setInsets(5, 5, 5, 5).anchorNorthWest().fillBoth(); + gbh = new GridBagHelper(); + gbh.setLabelDefault().setInsets(0, 5, 5, 5).anchorNorthWest().fillBoth(); JPanel mainPanel = new JPanel(new GridBagLayout()); - mainPanel.add(comparePanel, gridBagHelper.setMaxWeightY().get()); - mainPanel.add(tabPane, gridBagHelper.nextCol().spanX().get()); - mainPanel.add(progressBar, gridBagHelper.nextRowFirstCol().setMinWeightY().spanX().get()); + mainPanel.add(comparePanel, gbh.setMaxWeightY().get()); + mainPanel.add(tabPane, gbh.nextCol().bottomGap(1).spanX().get()); + mainPanel.add(progressBar, gbh.nextRowFirstCol().topGap(0).leftGap(5).bottomGap(5).setMinWeightY().spanX().get()); // --- layout configure --- From f5fde4ef28f2df73e4c609ebae44ec36bf009797 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 14:54:49 +0300 Subject: [PATCH 066/141] Fix generating stubs for altered objects (RS-188523) --- src/org/executequery/gui/browser/comparer/Comparer.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/org/executequery/gui/browser/comparer/Comparer.java b/src/org/executequery/gui/browser/comparer/Comparer.java index 18605bbbe..bc726a4f2 100644 --- a/src/org/executequery/gui/browser/comparer/Comparer.java +++ b/src/org/executequery/gui/browser/comparer/Comparer.java @@ -359,9 +359,6 @@ public void alterObjects(int type) { if (alterObjects.isEmpty()) return; - if (stubsOnAlter != null && stubsOnAlter.containsKey(type) && stubsOnAlter.get(type) != null) - stubsOnAlter.get(type).addAll(alterObjects.values()); - if (Objects.equals(Bundles.getEn(NamedObject.class, NamedObject.META_TYPES_FOR_BUNDLE[type]), "ROLE")) return; @@ -394,6 +391,10 @@ public void alterObjects(int type) { String sqlScript = masterObject.getCompareAlterSQL(compareObject); if (!sqlScript.contains("there are no changes")) { + + if (stubsOnAlter != null && stubsOnAlter.containsKey(type) && stubsOnAlter.get(type) != null) + stubsOnAlter.get(type).add(compareObject); + script.add("\n/* " + obj.getName() + " */\n" + sqlScript); panel.addTreeComponent(ComparerDBPanel.ComparerTreeNode.ALTER, type, obj); panel.addComparedObject(new ComparedObject(type, masterObject, compareObject.getCreateSQLText(), masterObject.getCreateSQLText())); From ced9c238c0ae9a8e4abd8168246bac3d592bee31 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Wed, 7 Aug 2024 15:10:46 +0300 Subject: [PATCH 067/141] See RS-187249 fix generating PK for ERD --- src/org/executequery/gui/table/CreateTablePanel.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/org/executequery/gui/table/CreateTablePanel.java b/src/org/executequery/gui/table/CreateTablePanel.java index 2d65f85dd..a0f81857e 100644 --- a/src/org/executequery/gui/table/CreateTablePanel.java +++ b/src/org/executequery/gui/table/CreateTablePanel.java @@ -505,6 +505,13 @@ public ColumnData[] getTableColumnDataAndConstraints() { for (ColumnData columnData : tableColumnData) { columnData.setForeignKey(false); columnData.resetConstraints(); + if (columnData.isPrimaryKey()) { + ColumnConstraint primaryConstraint = new ColumnConstraint(); + primaryConstraint.setName("PK_" + columnData.getTableName()); + primaryConstraint.setType(NamedObject.PRIMARY_KEY); + primaryConstraint.setColumn(columnData.getColumnName()); + columnData.addConstraint(primaryConstraint); + } String tableName = columnData.getTableName(); String columnName = columnData.getColumnName(); From 817edc857340827e1f9bfd95e0f732226f3d3b7c Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 15:44:56 +0300 Subject: [PATCH 068/141] Remove connections combo box from the ERD-editor toolbar --- .../executequery/gui/GenerateErdPanel.java | 9 ++-- .../gui/erd/ErdGenerateProgressDialog.java | 15 ------ .../gui/erd/ErdNewTableDialog.java | 7 ++- .../gui/erd/ErdSelectionPanel.java | 15 +++--- .../gui/erd/ErdToolBarPalette.java | 52 +++---------------- .../executequery/gui/erd/ErdViewerPanel.java | 22 -------- .../localization/resources.properties | 1 + .../localization/resources_ru.properties | 1 + .../swing/ConnectionsComboBox.java | 12 +++++ 9 files changed, 37 insertions(+), 97 deletions(-) diff --git a/src/org/executequery/gui/GenerateErdPanel.java b/src/org/executequery/gui/GenerateErdPanel.java index fca4f600b..128086964 100644 --- a/src/org/executequery/gui/GenerateErdPanel.java +++ b/src/org/executequery/gui/GenerateErdPanel.java @@ -21,7 +21,6 @@ package org.executequery.gui; import org.executequery.GUIUtilities; -import org.executequery.databasemediators.DatabaseConnection; import org.executequery.gui.erd.ErdGenerateProgressDialog; import org.executequery.gui.erd.ErdViewerPanel; import org.executequery.gui.erd.ErdSelectionPanel; @@ -42,17 +41,15 @@ public class GenerateErdPanel extends JPanel { private JButton generateButton; private JButton cancelButton; - private final DatabaseConnection connection; private final ErdViewerPanel erdPanel; private final ActionContainer parent; public GenerateErdPanel(ActionContainer parent) { - this(null, parent, null); + this(null, parent); } - public GenerateErdPanel(ErdViewerPanel erdPanel, ActionContainer parent, DatabaseConnection connection) { + public GenerateErdPanel(ErdViewerPanel erdPanel, ActionContainer parent) { super(new BorderLayout()); - this.connection = connection; this.erdPanel = erdPanel; this.parent = parent; @@ -61,7 +58,7 @@ public GenerateErdPanel(ErdViewerPanel erdPanel, ActionContainer parent, Databas } private void init() { - selectionPanel = new ErdSelectionPanel(connection, erdPanel); + selectionPanel = new ErdSelectionPanel(erdPanel); generateButton = WidgetFactory.createButton( "generateButton", diff --git a/src/org/executequery/gui/erd/ErdGenerateProgressDialog.java b/src/org/executequery/gui/erd/ErdGenerateProgressDialog.java index 87ccee938..c56569bcb 100644 --- a/src/org/executequery/gui/erd/ErdGenerateProgressDialog.java +++ b/src/org/executequery/gui/erd/ErdGenerateProgressDialog.java @@ -65,17 +65,6 @@ public ErdGenerateProgressDialog(Vector selectedTables, DatabaseConnection conne display(); } - public ErdGenerateProgressDialog(Vector selectedTables, ErdViewerPanel parent) { - super(GUIUtilities.getParentFrame(), "Adding Tables", false); - - this.connection = parent.getDatabaseConnection(); - this.selectedTables = selectedTables; - this.parent = parent; - - init(); - display(); - } - public ErdGenerateProgressDialog(Vector selectedTables, ErdViewerPanel parent, DatabaseConnection connection) { super(GUIUtilities.getParentFrame(), "Adding Tables", false); @@ -219,10 +208,6 @@ private void processComplete(Vector tableInfoList) { } GUIUtilities.showWaitCursor(); - - ErdViewerPanel viewerPanel = new ErdViewerPanel(tableInfoList, false); - viewerPanel.setDatabaseConnection(connection); - GUIUtilities.closeDialog(GenerateErdPanel.TITLE); dispose(); GUIUtilities.showNormalCursor(); diff --git a/src/org/executequery/gui/erd/ErdNewTableDialog.java b/src/org/executequery/gui/erd/ErdNewTableDialog.java index 453b8ccd3..c2f68e919 100644 --- a/src/org/executequery/gui/erd/ErdNewTableDialog.java +++ b/src/org/executequery/gui/erd/ErdNewTableDialog.java @@ -21,7 +21,6 @@ package org.executequery.gui.erd; import org.executequery.GUIUtilities; -import org.executequery.databasemediators.DatabaseConnection; import org.executequery.gui.ActionContainer; import org.executequery.gui.BaseDialog; import org.executequery.gui.WidgetFactory; @@ -93,7 +92,7 @@ private void init() { buttonsPanel.add(createButton, gbh.nextCol().setMinWeightX().fillNone().get()); buttonsPanel.add(cancelButton, gbh.nextCol().rightGap(5).get()); - createPanel = new CreateTableERDPanel(erdViewerPanel.getDatabaseConnection(), this); + createPanel = new CreateTableERDPanel(this); createPanel.addButtonsPanel(buttonsPanel); createPanel.setPreferredSize(new Dimension(700, 550)); @@ -203,8 +202,8 @@ private static String bundleString(String key) { public class CreateTableERDPanel extends CreateTablePanel { - public CreateTableERDPanel(DatabaseConnection dc, ActionContainer dialog) { - super(dc, dialog); + public CreateTableERDPanel(ActionContainer dialog) { + super(null, dialog); } public void setColumnConstraintVector(Vector ccv) { diff --git a/src/org/executequery/gui/erd/ErdSelectionPanel.java b/src/org/executequery/gui/erd/ErdSelectionPanel.java index 07f7b39e6..25493dc7a 100644 --- a/src/org/executequery/gui/erd/ErdSelectionPanel.java +++ b/src/org/executequery/gui/erd/ErdSelectionPanel.java @@ -62,12 +62,11 @@ public class ErdSelectionPanel extends JPanel private final ErdViewerPanel erdViewer; public ErdSelectionPanel() { - this(null, null); + this(null); } - public ErdSelectionPanel(DatabaseConnection databaseConnection, ErdViewerPanel erdViewer) { + public ErdSelectionPanel(ErdViewerPanel erdViewer) { super(new GridBagLayout()); - this.databaseConnection = databaseConnection; this.erdViewer = erdViewer; init(); } @@ -137,12 +136,16 @@ private void connectionChanged() { tables.add(table.getTableName()); } } + populateTableValues(tables); + } catch (DataSourceException e) { GUIUtilities.displayExceptionErrorDialog( - "Error retrieving the tables names for the " + - "current connection.\n\nThe system returned:\n" + - e.getExtendedMessage(), e, this.getClass()); + "Error retrieving the tables names for the current connection." + + "\n\nThe system returned:\n" + e.getExtendedMessage(), + e, + this.getClass() + ); } } diff --git a/src/org/executequery/gui/erd/ErdToolBarPalette.java b/src/org/executequery/gui/erd/ErdToolBarPalette.java index eb89ebac0..1dcf7ce97 100644 --- a/src/org/executequery/gui/erd/ErdToolBarPalette.java +++ b/src/org/executequery/gui/erd/ErdToolBarPalette.java @@ -22,16 +22,11 @@ import org.executequery.GUIUtilities; import org.executequery.actions.toolscommands.ComparerDBCommands; -import org.executequery.databasemediators.ConnectionMediator; -import org.executequery.databasemediators.DatabaseConnection; import org.executequery.datasource.ConnectionManager; import org.executequery.gui.BaseDialog; import org.executequery.gui.GenerateErdPanel; import org.executequery.gui.WidgetFactory; import org.executequery.localization.Bundles; -import org.executequery.repository.DatabaseConnectionRepository; -import org.executequery.repository.Repository; -import org.executequery.repository.RepositoryCache; import org.underworldlabs.swing.RolloverButton; import org.underworldlabs.swing.layouts.GridBagHelper; import org.underworldlabs.swing.toolbar.PanelToolBar; @@ -39,7 +34,6 @@ import javax.swing.*; import java.awt.*; import java.util.*; -import java.util.List; /** * @author Takis Diakoumis @@ -65,8 +59,6 @@ public class ErdToolBarPalette extends JPanel { private RolloverButton zoomInButton; private RolloverButton zoomOutButton; - private JComboBox connectionsCombo; - public ErdToolBarPalette(ErdViewerPanel parent) { super(); @@ -80,16 +72,6 @@ public ErdToolBarPalette(ErdViewerPanel parent) { private void init() { - List connections = ConnectionManager.getActiveConnections(); - Repository repo = RepositoryCache.load(DatabaseConnectionRepository.REPOSITORY_ID); - if (repo instanceof DatabaseConnectionRepository) - connections = ((DatabaseConnectionRepository) repo).findAll(); - - connectionsCombo = WidgetFactory.createComboBox( - "connectionsCombo", - connections.toArray() - ); - createTableButton = WidgetFactory.createRolloverButton( "createTableButton", bundleString("createTable"), @@ -187,18 +169,13 @@ private void init() { "icon_zoom_out", e -> parent.zoom(false) ); - - connections.stream() - .filter(DatabaseConnection::isConnected) - .findFirst().ifPresent(dc -> connectionsCombo.setSelectedItem(dc)); } private void arrange() { setLayout(new GridBagLayout()); GridBagHelper gbh = new GridBagHelper().anchorWest().fillHorizontally(); - add(connectionsCombo, gbh.setWeightX(0.2).get()); - add(createTableButton, gbh.nextCol().setMinWeightX().get()); + add(createTableButton, gbh.get()); add(dropTableButton, gbh.nextCol().get()); add(createRelationButton, gbh.nextCol().get()); add(deleteRelationButton, gbh.nextCol().get()); @@ -321,11 +298,17 @@ public void setScale(String scale) { } private void updateFromDatabase() { + + if (!ConnectionManager.hasConnections()) { + GUIUtilities.displayWarningMessage(bundleString("noActiveConnections")); + return; + } + try { GUIUtilities.showWaitCursor(); BaseDialog dialog = new BaseDialog(GenerateErdPanel.TITLE, false); - JPanel panel = new GenerateErdPanel(parent, dialog, getSelectedConnection()); + JPanel panel = new GenerateErdPanel(parent, dialog); dialog.addDisplayComponentWithEmptyBorder(panel); dialog.setResizable(false); @@ -369,25 +352,6 @@ private void updateScale() { parent.setPopupMenuScaleValue(selectedScaleIndex); } - public DatabaseConnection getSelectedConnection() { - - Object selectedItem = connectionsCombo.getSelectedItem(); - if (selectedItem instanceof DatabaseConnection) { - - DatabaseConnection connection = (DatabaseConnection) selectedItem; - if (!connection.isConnected()) - ConnectionMediator.getInstance().connect(connection, true); - - return connection; - } - - return null; - } - - public void setSelectedConnection(DatabaseConnection connection) { - connectionsCombo.setSelectedItem(connection); - } - private static String bundleString(String key) { return Bundles.get(ErdToolBarPalette.class, key); } diff --git a/src/org/executequery/gui/erd/ErdViewerPanel.java b/src/org/executequery/gui/erd/ErdViewerPanel.java index 04ab79ec9..813c50a27 100644 --- a/src/org/executequery/gui/erd/ErdViewerPanel.java +++ b/src/org/executequery/gui/erd/ErdViewerPanel.java @@ -24,7 +24,6 @@ import org.executequery.Constants; import org.executequery.GUIUtilities; import org.executequery.base.DefaultTabView; -import org.executequery.databasemediators.DatabaseConnection; import org.executequery.gui.SaveFunction; import org.executequery.gui.browser.ColumnConstraint; import org.executequery.gui.browser.ColumnData; @@ -1255,19 +1254,6 @@ public int getTextBlockFontStyle() { return textBlockFontStyle; } - public String getAllSQLText() { - - char newLine = '\n'; - ErdTable[] allTables = getAllTablesArray(); - - StringBuilder sb = new StringBuilder(); - for (ErdTable allTable : allTables) - if (allTable.hasSQLScripts()) - sb.append(allTable.getAllSQLScripts()).append(newLine); - - return sb.toString(); - } - public String getErdFileName() { return fileName; } @@ -1282,14 +1268,6 @@ public String toString() { return TITLE + " - " + fileName; } - public DatabaseConnection getDatabaseConnection() { - return tools.getSelectedConnection(); - } - - public void setDatabaseConnection(DatabaseConnection databaseConnection) { - tools.setSelectedConnection(databaseConnection); - } - // -------------------------------------------- // TabView implementation // -------------------------------------------- diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index 9252cfe23..25838b635 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1382,6 +1382,7 @@ ErdTitlePanelDialog.textBlock=Text Block ErdToolBarPalette.NoSchemaChangesRecordedError=No schema changes have been recorded ErdToolBarPalette.NoTablesError=No tables in ERD ErdToolBarPalette.SelectOnlyTwoTablesError=Please select only 2 related tables +ErdToolBarPalette.noActiveConnections=There are no active connections ErdToolBarPalette.canvasBg=Canvas background colour ErdToolBarPalette.canvasFg=Table background colour for selected or all tables ErdToolBarPalette.createTable=Create new table diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index c5375be82..698b0dece 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1382,6 +1382,7 @@ ErdTitlePanelDialog.textBlock=Текстовый блок ErdToolBarPalette.NoSchemaChangesRecordedError=Никаких изменений схемы не зафиксировано. ErdToolBarPalette.NoTablesError=Нет таблиц в ER-диаграмме ErdToolBarPalette.SelectOnlyTwoTablesError=Пожалуйста, выберите только 2 таблицы +ErdToolBarPalette.noActiveConnections=Нет ни одного активного соединения ErdToolBarPalette.canvasBg=Цвет фона холста ErdToolBarPalette.canvasFg=Цвет фона объекта ErdToolBarPalette.createTable=Создать новую таблицу diff --git a/src/org/underworldlabs/swing/ConnectionsComboBox.java b/src/org/underworldlabs/swing/ConnectionsComboBox.java index fd5b6581e..b6104515c 100644 --- a/src/org/underworldlabs/swing/ConnectionsComboBox.java +++ b/src/org/underworldlabs/swing/ConnectionsComboBox.java @@ -23,6 +23,8 @@ public ConnectionsComboBox(boolean showOnlyActiveConnections) { if (showOnlyActiveConnections) EventMediator.registerListener(this); + else + selectFirstActiveConnection(); } public DatabaseConnection getSelectedConnection() { @@ -38,6 +40,16 @@ public boolean hasConnection(DatabaseConnection connection) { return false; } + private void selectFirstActiveConnection() { + for (int i = 0; i < getItemCount(); i++) { + DatabaseConnection dc = getItemAt(i); + if (dc.isConnected()) { + setSelectedItem(dc); + return; + } + } + } + private void updateEnable() { setEnabled(getItemCount() > 0); } From eb617218a4b2cf1f80075a283294e606f1ef947a Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Wed, 7 Aug 2024 17:01:25 +0300 Subject: [PATCH 069/141] Remove create, edit, delete actions from popup for the view columns (RS-189398) --- .../gui/browser/BrowserTreePopupMenu.java | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/org/executequery/gui/browser/BrowserTreePopupMenu.java b/src/org/executequery/gui/browser/BrowserTreePopupMenu.java index 396a70a0b..82b080cef 100644 --- a/src/org/executequery/gui/browser/BrowserTreePopupMenu.java +++ b/src/org/executequery/gui/browser/BrowserTreePopupMenu.java @@ -181,27 +181,32 @@ private void buildPopup() { boolean isTable = nodeType == NamedObject.TABLE; boolean isIndex = nodeType == NamedObject.INDEX; boolean isSeveralSelected = listener.isSelectedSeveralPaths(); + boolean isViewColumn = nodeType == NamedObject.TABLE_COLUMN + && ((DatabaseObjectNode) objectNode.getParent()).getType() == NamedObject.VIEW; // --- - if (!isSeveralSelected) { - createObject.setText(bundleString("create", labelSingle)); - add(createObject); - addSeparator(); - } + if (!isViewColumn) { - reloadObject.setText(bundleString("reload", isSeveralSelected ? labelMultiple : labelSingle)); - add(reloadObject); + if (!isSeveralSelected) { + createObject.setText(bundleString("create", labelSingle)); + add(createObject); + addSeparator(); + } - if (!isSeveralSelected) { - editObject.setText(bundleString("edit", labelSingle)); - add(editObject); - } + reloadObject.setText(bundleString("reload", isSeveralSelected ? labelMultiple : labelSingle)); + add(reloadObject); - if (!isSeveralSelected) { - deleteObject.setText(bundleString("delete", labelSingle)); - add(deleteObject); - addSeparator(); + if (!isSeveralSelected) { + editObject.setText(bundleString("edit", labelSingle)); + add(editObject); + } + + if (!isSeveralSelected) { + deleteObject.setText(bundleString("delete", labelSingle)); + add(deleteObject); + addSeparator(); + } } if (isIndex) From fbde7444cf2e084f59ed08351afac6957232326d Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 8 Aug 2024 09:38:34 +0300 Subject: [PATCH 070/141] Fix selecting edited job type (RS-189582) --- src/org/executequery/gui/databaseobjects/CreateJobPanel.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/org/executequery/gui/databaseobjects/CreateJobPanel.java b/src/org/executequery/gui/databaseobjects/CreateJobPanel.java index 2e30d53ea..7a9617daa 100644 --- a/src/org/executequery/gui/databaseobjects/CreateJobPanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateJobPanel.java @@ -100,6 +100,7 @@ protected void initEdited() { simpleCommentPanel.setDatabaseObject(job); nameField.setEditable(false); + jobTypeCombo.setSelectedIndex(job.getJobType()); tabbedPane.addTab(bundleString("Log"), new JobsLogPanel(job)); addCreateSqlTab(job); } From 397b2cb3fd484f4bf0350cbe2d921c23917f04d5 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 8 Aug 2024 09:38:59 +0300 Subject: [PATCH 071/141] Fix CreateJobPanel size adjusting (RS-189582) --- src/org/executequery/gui/databaseobjects/CreateJobPanel.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/org/executequery/gui/databaseobjects/CreateJobPanel.java b/src/org/executequery/gui/databaseobjects/CreateJobPanel.java index 7a9617daa..d37738e30 100644 --- a/src/org/executequery/gui/databaseobjects/CreateJobPanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateJobPanel.java @@ -159,9 +159,8 @@ private void arrange() { topPanel.add(endDatePicker, topGbh.nextCol().setMaxWeightX().topGap(0).rightGap(5).spanX().get()); if (parent != null) { - int height = System.getProperty("os.name").toLowerCase().contains("win") ? 450 : 420; - ((BaseDialog) parent).setPreferredSize(new Dimension(700, height)); - ((BaseDialog) parent).setResizable(false); + ((BaseDialog) parent).setPreferredSize(new Dimension(700, 450)); + parent.setResizable(false); } } From 9d7bfa4d6b85c850d30d3231e7ebb60f9e280124 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 8 Aug 2024 10:40:44 +0300 Subject: [PATCH 072/141] Simplify open editing panels for objects from the connections tree --- .../BrowserTreePopupMenuActionListener.java | 114 ++---------------- 1 file changed, 7 insertions(+), 107 deletions(-) diff --git a/src/org/executequery/gui/browser/BrowserTreePopupMenuActionListener.java b/src/org/executequery/gui/browser/BrowserTreePopupMenuActionListener.java index 283d6bbe6..889589957 100644 --- a/src/org/executequery/gui/browser/BrowserTreePopupMenuActionListener.java +++ b/src/org/executequery/gui/browser/BrowserTreePopupMenuActionListener.java @@ -296,15 +296,17 @@ public void showCreateObjectDialog(DatabaseObjectNode node, DatabaseConnection c try { GUIUtilities.showWaitCursor(); - BaseDialog dialog = new BaseDialog("", false); - AbstractCreateObjectPanel panel = editing ? - getEditObjectPanel(node, dialog, connection) : - getCreateObjectPanel(node, dialog, connection); + if (editing) { + treePanel.valueChanged(node, connection); + return; + } + BaseDialog dialog = new BaseDialog("", false); + AbstractCreateObjectPanel panel = getCreateObjectPanel(node, dialog, connection); if (panel == null) return; - String title = editing ? panel.getEditTitle() : panel.getCreateTitle(); + String title = panel.getCreateTitle(); if (GUIUtilities.isDialogOpen(title)) { GUIUtilities.setSelectedDialog(title); return; @@ -442,108 +444,6 @@ private AbstractCreateObjectPanel getCreateObjectPanel(DatabaseObjectNode node, return panel; } - private AbstractCreateObjectPanel getEditObjectPanel(DatabaseObjectNode node, BaseDialog - dialog, DatabaseConnection connection) { - - int type = node.getType(); - if (type == NamedObject.META_TAG) { - for (int i = 0; i < NamedObject.META_TYPES.length; i++) { - if (NamedObject.META_TYPES[i].equals(node.getMetaDataKey())) { - type = i; - break; - } - } - } - - ColumnConstraint constraint; - AbstractCreateObjectPanel panel = null; - switch (type) { - - case NamedObject.TABLE: - case NamedObject.GLOBAL_TEMPORARY: - case NamedObject.ROLE: - treePanel.valueChanged(node, connection); - break; - - case NamedObject.SEQUENCE: - panel = new CreateGeneratorPanel(connection, dialog, (DefaultDatabaseSequence) node.getDatabaseObject()); - break; - - case NamedObject.VIEW: - panel = new CreateViewPanel(connection, dialog, (DefaultDatabaseView) node.getDatabaseObject()); - break; - - case NamedObject.PROCEDURE: - if (node.getDatabaseObject().getParent().getType() == NamedObject.PACKAGE) { - GUIUtilities.displayErrorMessage(bundledString("temporaryInconvenience")); - break; - } - panel = new CreateProcedurePanel(connection, dialog, MiscUtils.trimEnd(node.getName())); - break; - - case NamedObject.DOMAIN: - panel = new CreateDomainPanel(connection, dialog, MiscUtils.trimEnd(node.getName())); - break; - - case NamedObject.TRIGGERS_FOLDER_NODE: - type = NamedObject.TRIGGER; - case NamedObject.TRIGGER: - case NamedObject.DATABASE_TRIGGER: - case NamedObject.DDL_TRIGGER: - panel = new CreateTriggerPanel(connection, dialog, (DefaultDatabaseTrigger) node.getDatabaseObject(), type); - break; - - case NamedObject.EXCEPTION: - panel = new CreateExceptionPanel(connection, dialog, (DefaultDatabaseException) node.getDatabaseObject()); - break; - - case NamedObject.INDEX: - case NamedObject.INDEXES_FOLDER_NODE: - panel = new CreateIndexPanel(connection, dialog, (DefaultDatabaseIndex) node.getDatabaseObject()); - break; - - case NamedObject.FUNCTION: - if (node.getDatabaseObject().getParent().getType() == NamedObject.PACKAGE) { - GUIUtilities.displayErrorMessage(bundledString("temporaryInconvenience")); - break; - } - panel = new CreateFunctionPanel(connection, dialog, MiscUtils.trimEnd(node.getName()), (DefaultDatabaseFunction) node.getDatabaseObject()); - break; - - case NamedObject.UDF: - panel = new CreateUDFPanel(connection, dialog, node.getDatabaseObject()); - break; - - case NamedObject.PACKAGE: - panel = new CreatePackagePanel(connection, dialog, (DefaultDatabasePackage) node.getDatabaseObject()); - break; - - case NamedObject.USER: - panel = new CreateDatabaseUserPanel(connection, dialog, (DefaultDatabaseUser) node.getDatabaseObject()); - break; - - case NamedObject.TABLESPACE: - panel = new CreateTablespacePanel(connection, dialog, node.getDatabaseObject()); - break; - - case NamedObject.TABLE_COLUMN: - panel = new InsertColumnPanel((DatabaseTableColumn) node.getDatabaseObject(), dialog, true); - break; - - case NamedObject.PRIMARY_KEY: - case NamedObject.FOREIGN_KEY: - constraint = (ColumnConstraint) node.getDatabaseObject(); - panel = new EditConstraintPanel(constraint.getTable(), dialog, constraint); - break; - - default: - GUIUtilities.displayErrorMessage(bundledString("temporaryInconvenience")); - break; - } - - return panel; - } - private String getDropQuery(DatabaseObjectNode node, int nodeType) { if (nodeType == NamedObject.TABLE_COLUMN) { From c942c7285a99b38012a5270ed05ee303de667220 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 8 Aug 2024 10:42:30 +0300 Subject: [PATCH 073/141] Fix trying to open edit VIEW COLUMN panel (RS-189398) --- .../gui/browser/BrowserController.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/org/executequery/gui/browser/BrowserController.java b/src/org/executequery/gui/browser/BrowserController.java index 991a9c051..f06149e33 100644 --- a/src/org/executequery/gui/browser/BrowserController.java +++ b/src/org/executequery/gui/browser/BrowserController.java @@ -178,10 +178,13 @@ public void valueChanged(DatabaseObjectNode node, DatabaseConnection connection) */ public void valueChanged(DatabaseObjectNode node, DatabaseConnection connection, boolean updatePropertiesPanel) { + if (!isNodeObjectEditable(node)) + return; + treePanel.setInProcess(true); try { - FormObjectView panel = buildPanelView(node,updatePropertiesPanel); + FormObjectView panel = buildPanelView(node, updatePropertiesPanel); if (panel == null) return; @@ -189,9 +192,6 @@ public void valueChanged(DatabaseObjectNode node, DatabaseConnection connection, String type = ""; int nodeType = node.getType(); - if (NamedObject.isTableFolder(nodeType)) - return; - if (nodeType < NamedObject.META_TYPES.length) type = NamedObject.META_TYPES[node.getType()]; @@ -471,6 +471,20 @@ private HostPanel hostPanel() { return hostPanel; } + private static boolean isNodeObjectEditable(DatabaseObjectNode node) { + + int nodeType = node.getType(); + if (NamedObject.isTableFolder(nodeType)) + return false; + + if (nodeType == NamedObject.TABLE_COLUMN) { + int parentType = ((DatabaseObjectNode) node.getParent()).getType(); + return parentType != NamedObject.VIEW; + } + + return true; + } + /** * Selects the node that matches the specified prefix forward * from the currently selected node. From 703e20fc6428d566a9a69a3e513d9fa3ae27f75c Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 8 Aug 2024 11:45:42 +0300 Subject: [PATCH 074/141] Set results.table.row.numbers property to TRUE as default --- src/org/executequery/eq.default.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/executequery/eq.default.properties b/src/org/executequery/eq.default.properties index 44d380696..46a16e054 100644 --- a/src/org/executequery/eq.default.properties +++ b/src/org/executequery/eq.default.properties @@ -144,7 +144,7 @@ results.table.double-click.record.dialog=true results.table.use.form.adding.deleting=false results.table.use.other.color.null=false results.table.row.select=true -results.table.row.numbers=false +results.table.row.numbers=true results.table.single.row.transpose=false results.table.align.numeric=right results.table.align.text=left From b7c15cc12243ebd14e2723b1bc61b5ecc711c492 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Thu, 8 Aug 2024 13:49:03 +0300 Subject: [PATCH 075/141] Fix loading info for JOB (RS-189582) --- .../impl/DefaultDatabaseJob.java | 27 ++++++++++++------- .../gui/databaseobjects/CreateJobPanel.java | 1 - 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseJob.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseJob.java index 60f6bfeda..c019b9f19 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseJob.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseJob.java @@ -18,14 +18,15 @@ public class DefaultDatabaseJob extends AbstractDatabaseObject { public static final int PSQL_TYPE = 0; public static final int BASH_TYPE = 1; + private String id; private String source; - private boolean active; - private int jobType; + private Boolean active; + private Integer jobType; + private String database; private String cronSchedule; private LocalDateTime startDate; private LocalDateTime endDate; - private String database; public DefaultDatabaseJob(DatabaseMetaTag metaTagParent, String name) { super(metaTagParent, name); @@ -156,6 +157,8 @@ public String getCompareAlterSQL(AbstractDatabaseObject databaseObject) throws D } public String getId() { + if (id == null || isMarkedForReload()) + getObjectInfo(); return id; } @@ -165,9 +168,8 @@ public void setId(String id) { @Override public String getSource() { - if (source == null || isMarkedForReload()) { + if (source == null || isMarkedForReload()) getObjectInfo(); - } return source; } @@ -177,6 +179,8 @@ public void setSource(String source) { } public boolean isActive() { + if (active == null || isMarkedForReload()) + getObjectInfo(); return active; } @@ -185,6 +189,8 @@ public void setActive(boolean active) { } public int getJobType() { + if (jobType == null || isMarkedForReload()) + getObjectInfo(); return jobType; } @@ -193,9 +199,8 @@ public void setJobType(int jobType) { } public String getCronSchedule() { - if (cronSchedule == null || isMarkedForReload()) { + if (cronSchedule == null || isMarkedForReload()) getObjectInfo(); - } return cronSchedule; } @@ -204,6 +209,8 @@ public void setCronSchedule(String cronSchedule) { } public LocalDateTime getStartDate() { + if (startDate == null || isMarkedForReload()) + getObjectInfo(); return startDate; } @@ -212,6 +219,8 @@ public void setStartDate(LocalDateTime startDate) { } public LocalDateTime getEndDate() { + if (endDate == null || isMarkedForReload()) + getObjectInfo(); return endDate; } @@ -220,13 +229,13 @@ public void setEndDate(LocalDateTime endDate) { } public String getDatabase() { - if (database == null || isMarkedForReload()) { + if (database == null || isMarkedForReload()) getObjectInfo(); - } return database; } public void setDatabase(String database) { this.database = database; } + } diff --git a/src/org/executequery/gui/databaseobjects/CreateJobPanel.java b/src/org/executequery/gui/databaseobjects/CreateJobPanel.java index d37738e30..93de4b41c 100644 --- a/src/org/executequery/gui/databaseobjects/CreateJobPanel.java +++ b/src/org/executequery/gui/databaseobjects/CreateJobPanel.java @@ -100,7 +100,6 @@ protected void initEdited() { simpleCommentPanel.setDatabaseObject(job); nameField.setEditable(false); - jobTypeCombo.setSelectedIndex(job.getJobType()); tabbedPane.addTab(bundleString("Log"), new JobsLogPanel(job)); addCreateSqlTab(job); } From d4ad8ee4589b4a64acf1268b0e9ddd07c00bc9fc Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 9 Aug 2024 09:25:37 +0300 Subject: [PATCH 076/141] Add indicators for the ConnectionsComboBox (RS-174675) --- .../swing/ConnectionsComboBox.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/org/underworldlabs/swing/ConnectionsComboBox.java b/src/org/underworldlabs/swing/ConnectionsComboBox.java index b6104515c..42e617f21 100644 --- a/src/org/underworldlabs/swing/ConnectionsComboBox.java +++ b/src/org/underworldlabs/swing/ConnectionsComboBox.java @@ -6,10 +6,14 @@ import org.executequery.event.ApplicationEvent; import org.executequery.event.ConnectionEvent; import org.executequery.event.ConnectionListener; +import org.executequery.gui.IconManager; import javax.swing.*; +import java.awt.*; import java.util.Objects; +import static org.executequery.gui.browser.BrowserConstants.*; + public class ConnectionsComboBox extends JComboBox implements ConnectionListener { @@ -21,10 +25,13 @@ public ConnectionsComboBox(boolean showOnlyActiveConnections) { ConnectionManager.getAllConnections() )); - if (showOnlyActiveConnections) + if (showOnlyActiveConnections) { EventMediator.registerListener(this); - else + + } else { + setRenderer(new ConnectionsComboRenderer()); selectFirstActiveConnection(); + } } public DatabaseConnection getSelectedConnection() { @@ -113,4 +120,20 @@ public void removeAllItems() { // --- + private static class ConnectionsComboRenderer extends DefaultListCellRenderer { + + private static final Icon CONNECTED_ICON = IconManager.getIcon(GRANT_IMAGE, "svg", 10, IconManager.IconFolder.BASE); + private static final Icon NOT_CONNECTED_ICON = IconManager.getIcon(FIELD_GRANT_IMAGE, "svg", 10, IconManager.IconFolder.BASE); + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + + JLabel component = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + component.setIcon(((DatabaseConnection) value).isConnected() ? CONNECTED_ICON : NOT_CONNECTED_ICON); + + return component; + } + + } // ConnectionsComboRenderer class + } From 5ca3af1c53fb0cf4a5f118d74bfb5dac621b3ae5 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 9 Aug 2024 12:10:56 +0300 Subject: [PATCH 077/141] Add charset comboBox for random string generating in the test data generator panel (RS-181680) --- .../methodspanels/RandomMethodPanel.java | 49 +++++++++++++++++-- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java b/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java index d21370cf7..0839e5119 100644 --- a/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java +++ b/src/org/executequery/gui/browser/generatortestdata/methodspanels/RandomMethodPanel.java @@ -1,10 +1,12 @@ package org.executequery.gui.browser.generatortestdata.methodspanels; import com.github.lgooddatepicker.components.DatePicker; +import org.apache.commons.lang.RandomStringUtils; import org.executequery.databaseobjects.DatabaseColumn; import org.executequery.databaseobjects.T; import org.executequery.gui.WidgetFactory; import org.executequery.gui.text.SimpleTextArea; +import org.executequery.log.Log; import org.underworldlabs.jdbc.DataSourceException; import org.underworldlabs.swing.*; import org.underworldlabs.swing.celleditor.picker.TimestampPicker; @@ -12,12 +14,16 @@ import org.underworldlabs.swing.celleditor.picker.TimePicker; import org.underworldlabs.swing.celleditor.picker.ZonedTimePicker; import org.underworldlabs.swing.layouts.GridBagHelper; +import org.underworldlabs.util.FileUtils; +import org.underworldlabs.util.MiscUtils; import javax.swing.*; import java.awt.*; import java.math.BigInteger; +import java.nio.charset.Charset; import java.time.*; -import java.util.Random; +import java.util.*; +import java.util.List; public class RandomMethodPanel extends AbstractMethodPanel { @@ -43,6 +49,7 @@ public class RandomMethodPanel extends AbstractMethodPanel { private ZonedTimestampPicker minDateTimezone; private ZonedTimestampPicker maxDateTimezone; + private JComboBox charsetCombo; private JCheckBox useSelectedCharsetCheck; private SimpleTextArea useSelectedCharsetField; @@ -147,8 +154,16 @@ private void initCharPanel() { minField.setEnableNegativeNumbers(false); minField.setText("0"); + JLabel charsetLabel = new JLabel(bundleString("Charset")); + charsetCombo = WidgetFactory.createComboBox("charsetCombo", getLoadCharsets().toArray()); + useSelectedCharsetField = new SimpleTextArea(); useSelectedCharsetCheck = WidgetFactory.createCheckBox("useSelectedCharsetCheck", bundleString("UseOnlyThisSymbols")); + useSelectedCharsetCheck.addActionListener(e -> { + boolean enabled = !useSelectedCharsetCheck.isSelected(); + charsetLabel.setEnabled(enabled); + charsetCombo.setEnabled(enabled); + }); // --- arrange --- @@ -157,6 +172,8 @@ private void initCharPanel() { settingsPanel.add(minField, gbh.nextCol().topGap(0).leftGap(5).setMaxWeightX().get()); settingsPanel.add(new JLabel(bundleString("MaxLength")), gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); settingsPanel.add(maxField, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); + settingsPanel.add(charsetLabel, gbh.nextRowFirstCol().leftGap(3).topGap(8).setMinWeightX().get()); + settingsPanel.add(charsetCombo, gbh.nextCol().topGap(5).leftGap(5).setMaxWeightX().get()); settingsPanel.add(useSelectedCharsetCheck, gbh.nextRowFirstCol().leftGap(0).spanX().get()); settingsPanel.add(useSelectedCharsetField, gbh.nextRowFirstCol().setMaxWeightY().fillBoth().spanY().get()); } @@ -354,6 +371,8 @@ private String getCharValue() { StringBuilder value = new StringBuilder(); long valueLength = getRandomValue(max, min); + String encoding = charsetCombo != null ? (String) charsetCombo.getSelectedItem() : null; + if (useSelectedCharsetCheck.isSelected()) { String charset = useSelectedCharsetField.getTextAreaComponent().getText(); @@ -365,10 +384,12 @@ private String getCharValue() { } } else { - for (int i = 0; i < valueLength; i++) { - int x = new Random().nextInt(127); - value.append((char) x); - } + + String randomString = RandomStringUtils.random((int) valueLength, true, true); + if (!MiscUtils.isNull(encoding) && !Objects.equals(encoding, "NONE")) + randomString = new String(randomString.getBytes(), Charset.forName(encoding)); + + value.append(randomString); } return value.toString(); @@ -457,6 +478,24 @@ private static boolean getBooleanValue() { // --- + private List getLoadCharsets() { + + List charsets = new LinkedList<>(); + try { + String loadedResource = FileUtils.loadResource("org/executequery/charsets.properties"); + Arrays.stream(loadedResource.split("\n")) + .filter(line -> !line.isEmpty()) + .filter(line -> !line.startsWith("#")) + .sorted().forEach(charsets::add); + + } catch (Exception e) { + Log.error(e.getMessage(), e); + } + + charsets.add(0, "NONE"); + return charsets; + } + private static long getRandomValue(long max, long min) { long diapason = max - min; From 1bc39e3eae2134905196f71b63c22cdf9d8b22d4 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Fri, 9 Aug 2024 17:14:09 +0300 Subject: [PATCH 078/141] Fix trigger creation in firebird with version less than 3 --- src/org/underworldlabs/util/SQLUtils.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/org/underworldlabs/util/SQLUtils.java b/src/org/underworldlabs/util/SQLUtils.java index 11a462968..cb6b9d248 100644 --- a/src/org/underworldlabs/util/SQLUtils.java +++ b/src/org/underworldlabs/util/SQLUtils.java @@ -802,8 +802,12 @@ public static String generateNameForDBObject(String type, DatabaseConnection dat DefaultDatabaseHost databaseHost = ConnectionsTreePanel.getPanelFromBrowser().getDefaultDatabaseHostFromConnection(databaseConnection); List databaseObjects = databaseHost.getDatabaseObjectsForMetaTag(type); if (Objects.equals(type, META_TYPES[TRIGGER])) { - databaseObjects.addAll(databaseHost.getDatabaseObjectsForMetaTag(META_TYPES[DATABASE_TRIGGER])); - databaseObjects.addAll(databaseHost.getDatabaseObjectsForMetaTag(META_TYPES[DDL_TRIGGER])); + List dbo = databaseHost.getDatabaseObjectsForMetaTag(META_TYPES[DATABASE_TRIGGER]); + if (dbo != null) + databaseObjects.addAll(dbo); + dbo = databaseHost.getDatabaseObjectsForMetaTag(META_TYPES[DDL_TRIGGER]); + if (dbo != null) + databaseObjects.addAll(dbo); } if (databaseObjects == null) From 349f07bd3eca386ae651ff2f79b2881424e341d9 Mon Sep 17 00:00:00 2001 From: Vasiliy Yashkov Date: Mon, 12 Aug 2024 14:44:51 +0300 Subject: [PATCH 079/141] RS-189241. Update jaybird drivers to 4.0.30 and 5.0.18 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 69018c968..143f86983 100644 --- a/pom.xml +++ b/pom.xml @@ -6,8 +6,8 @@ 4.7 3.0.36 - 4.0.28 - 5.0.17 + 4.0.30 + 5.0.18 org.executequery RedExpert-parent From 76856c5322fc6c7efaa8273acc68ba5e964f3455 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Tue, 20 Aug 2024 12:02:03 +0300 Subject: [PATCH 080/141] See RS-183529 fix comparing DBs with PK --- src/org/underworldlabs/util/SQLUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/underworldlabs/util/SQLUtils.java b/src/org/underworldlabs/util/SQLUtils.java index cb6b9d248..3c9176c42 100644 --- a/src/org/underworldlabs/util/SQLUtils.java +++ b/src/org/underworldlabs/util/SQLUtils.java @@ -1170,7 +1170,7 @@ public static String generateAlterTable( } } - if (!Arrays.equals(constraints, new boolean[]{false, false, false, false})) { + if (!Arrays.equals(constraints, new boolean[]{true, true, true, true})) { List thisConstraints = thisTable.getConstraints(); List comparingConstraints = comparingTable.getConstraints(); From ae126c01298a823d6661522fb4e86db731246f79 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Tue, 20 Aug 2024 13:35:43 +0300 Subject: [PATCH 081/141] See RS-188935 fix comparing db with version < 3 --- src/org/executequery/gui/browser/ComparerDBPanel.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/org/executequery/gui/browser/ComparerDBPanel.java b/src/org/executequery/gui/browser/ComparerDBPanel.java index e246807bc..c6029703a 100644 --- a/src/org/executequery/gui/browser/ComparerDBPanel.java +++ b/src/org/executequery/gui/browser/ComparerDBPanel.java @@ -500,7 +500,6 @@ private boolean prepareComparer() { if (slaveHost.getDatabaseMajorVersion() < 3 || (!isExtractMetadata && masterHost.getDatabaseMajorVersion() < 3)) { - attributesCheckBoxMap.get(Arrays.asList(NamedObject.META_TYPES_FOR_BUNDLE).indexOf("USER")).setSelected(false); attributesCheckBoxMap.get(Arrays.asList(NamedObject.META_TYPES_FOR_BUNDLE).indexOf("PACKAGE")).setSelected(false); attributesCheckBoxMap.get(Arrays.asList(NamedObject.META_TYPES_FOR_BUNDLE).indexOf("FUNCTION")).setSelected(false); attributesCheckBoxMap.get(Arrays.asList(NamedObject.META_TYPES_FOR_BUNDLE).indexOf("TABLESPACE")).setSelected(false); From 1c504597d33b56bfe356a532cbde8867ddba185a Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Tue, 20 Aug 2024 16:02:21 +0300 Subject: [PATCH 082/141] See RS-183529 fix comparing db with constraints --- src/org/underworldlabs/util/SQLUtils.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/org/underworldlabs/util/SQLUtils.java b/src/org/underworldlabs/util/SQLUtils.java index 3c9176c42..e6b79f6c5 100644 --- a/src/org/underworldlabs/util/SQLUtils.java +++ b/src/org/underworldlabs/util/SQLUtils.java @@ -1197,10 +1197,10 @@ public static String generateAlterTable( //check for ADD CONSTRAINT for (org.executequery.databaseobjects.impl.ColumnConstraint comparingConstraint : comparingConstraints) { - if ((comparingConstraint.getType() == PRIMARY_KEY && !constraints[0]) || - (comparingConstraint.getType() == FOREIGN_KEY && !constraints[1]) || - (comparingConstraint.getType() == UNIQUE_KEY && !constraints[2]) || - (comparingConstraint.getType() == CHECK_KEY && !constraints[3])) + if ((comparingConstraint.getType() == PRIMARY_KEY && constraints[0]) || + (comparingConstraint.getType() == FOREIGN_KEY && constraints[1]) || + (comparingConstraint.getType() == UNIQUE_KEY && constraints[2]) || + (comparingConstraint.getType() == CHECK_KEY && constraints[3])) continue; int addCheck = 0; From 8250c8582bfa89188a7da0d011ff8cd33865a484 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Wed, 21 Aug 2024 10:36:50 +0300 Subject: [PATCH 083/141] See RS-183529 fix comparing db with constraints(drop) --- src/org/underworldlabs/util/SQLUtils.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/org/underworldlabs/util/SQLUtils.java b/src/org/underworldlabs/util/SQLUtils.java index e6b79f6c5..fcb7c775a 100644 --- a/src/org/underworldlabs/util/SQLUtils.java +++ b/src/org/underworldlabs/util/SQLUtils.java @@ -1178,10 +1178,10 @@ public static String generateAlterTable( //check for DROP CONSTRAINT for (org.executequery.databaseobjects.impl.ColumnConstraint thisConstraint : thisConstraints) { - if ((thisConstraint.getType() == PRIMARY_KEY && !constraints[0]) || - (thisConstraint.getType() == FOREIGN_KEY && !constraints[1]) || - (thisConstraint.getType() == UNIQUE_KEY && !constraints[2]) || - (thisConstraint.getType() == CHECK_KEY && !constraints[3])) + if ((thisConstraint.getType() == PRIMARY_KEY && constraints[0]) || + (thisConstraint.getType() == FOREIGN_KEY && constraints[1]) || + (thisConstraint.getType() == UNIQUE_KEY && constraints[2]) || + (thisConstraint.getType() == CHECK_KEY && constraints[3])) continue; int dropCheck = 0; From 125868883aa2287ddc5fc0382bb0a81b2ef82c28 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Wed, 21 Aug 2024 15:34:58 +0300 Subject: [PATCH 084/141] See RS-183529 fix double drop constraints --- src/org/executequery/gui/browser/comparer/Comparer.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/org/executequery/gui/browser/comparer/Comparer.java b/src/org/executequery/gui/browser/comparer/Comparer.java index bc726a4f2..077373076 100644 --- a/src/org/executequery/gui/browser/comparer/Comparer.java +++ b/src/org/executequery/gui/browser/comparer/Comparer.java @@ -932,10 +932,10 @@ private void checkConstraintsPair(NamedObject masterObject, NamedObject compareO if (panel.isCanceled()) break; - if ((masterCC.getType() == PRIMARY_KEY && !TABLE_CONSTRAINTS_NEED[0]) || - (masterCC.getType() == FOREIGN_KEY && !TABLE_CONSTRAINTS_NEED[1]) || - (masterCC.getType() == UNIQUE_KEY && !TABLE_CONSTRAINTS_NEED[2]) || - (masterCC.getType() == CHECK_KEY && !TABLE_CONSTRAINTS_NEED[3])) + if ((masterCC.getType() == PRIMARY_KEY && TABLE_CONSTRAINTS_NEED[0]) || + (masterCC.getType() == FOREIGN_KEY && TABLE_CONSTRAINTS_NEED[1]) || + (masterCC.getType() == UNIQUE_KEY && TABLE_CONSTRAINTS_NEED[2]) || + (masterCC.getType() == CHECK_KEY && TABLE_CONSTRAINTS_NEED[3])) continue; long dropCheck = compareConstraints.stream() From 9eca9b725d310ab9e0b64cf5fae6f07ac766ac53 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Thu, 22 Aug 2024 10:06:38 +0300 Subject: [PATCH 085/141] See RS-183529 fix double create constraints --- src/org/executequery/gui/browser/comparer/Comparer.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/org/executequery/gui/browser/comparer/Comparer.java b/src/org/executequery/gui/browser/comparer/Comparer.java index 077373076..0d7ac68af 100644 --- a/src/org/executequery/gui/browser/comparer/Comparer.java +++ b/src/org/executequery/gui/browser/comparer/Comparer.java @@ -1032,10 +1032,10 @@ private void checkConstraintsPair(NamedObject masterObject, NamedObject compareO if (panel.isCanceled()) break; - if ((comparingCC.getType() == PRIMARY_KEY && !TABLE_CONSTRAINTS_NEED[0]) || - (comparingCC.getType() == FOREIGN_KEY && !TABLE_CONSTRAINTS_NEED[1]) || - (comparingCC.getType() == UNIQUE_KEY && !TABLE_CONSTRAINTS_NEED[2]) || - (comparingCC.getType() == CHECK_KEY && !TABLE_CONSTRAINTS_NEED[3])) + if ((comparingCC.getType() == PRIMARY_KEY && TABLE_CONSTRAINTS_NEED[0]) || + (comparingCC.getType() == FOREIGN_KEY && TABLE_CONSTRAINTS_NEED[1]) || + (comparingCC.getType() == UNIQUE_KEY && TABLE_CONSTRAINTS_NEED[2]) || + (comparingCC.getType() == CHECK_KEY && TABLE_CONSTRAINTS_NEED[3])) continue; long addCheck = masterConstraints.stream() From 74664739423607b5a6fe3f7284cb190d5b4a1374 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Thu, 22 Aug 2024 11:58:26 +0300 Subject: [PATCH 086/141] See RS-183529 fix comparing constraints --- .../gui/browser/comparer/Comparer.java | 8 ++++- src/org/underworldlabs/util/SQLUtils.java | 31 ++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/org/executequery/gui/browser/comparer/Comparer.java b/src/org/executequery/gui/browser/comparer/Comparer.java index 0d7ac68af..01fa26014 100644 --- a/src/org/executequery/gui/browser/comparer/Comparer.java +++ b/src/org/executequery/gui/browser/comparer/Comparer.java @@ -390,7 +390,7 @@ public void alterObjects(int type) { loadingObjectsHelperCompare.preparingLoadForObjectAndCols(compareObject); String sqlScript = masterObject.getCompareAlterSQL(compareObject); - if (!sqlScript.contains("there are no changes")) { + if (!sqlScript.contains("there are no changes") && !sqlScript.contains("ALTER CONSTRAINTS")) { if (stubsOnAlter != null && stubsOnAlter.containsKey(type) && stubsOnAlter.get(type) != null) stubsOnAlter.get(type).add(compareObject); @@ -401,6 +401,12 @@ public void alterObjects(int type) { panel.addToLog("\t" + obj.getName()); isHeaderNeeded = true; counter[2]++; + } else if (sqlScript.contains("ALTER CONSTRAINTS")) { + panel.addTreeComponent(ComparerDBPanel.ComparerTreeNode.ALTER, type, obj); + panel.addComparedObject(new ComparedObject(type, masterObject, compareObject.getCreateSQLText(), masterObject.getCreateSQLText())); + panel.addToLog("\t" + obj.getName()); + isHeaderNeeded = true; + counter[2]++; } loadingObjectsHelperMaster.postProcessingLoadForObjectAndCols(masterObject); diff --git a/src/org/underworldlabs/util/SQLUtils.java b/src/org/underworldlabs/util/SQLUtils.java index fcb7c775a..ed5bbbd07 100644 --- a/src/org/underworldlabs/util/SQLUtils.java +++ b/src/org/underworldlabs/util/SQLUtils.java @@ -1093,6 +1093,7 @@ public static String generateAlterTable( StringBuilder sb = new StringBuilder(); StringBuilder columnComments = new StringBuilder(); + boolean alterConstraints = false; if (temporary) sb.append("ALTER GLOBAL TEMPORARY TABLE "); @@ -1174,6 +1175,31 @@ public static String generateAlterTable( List thisConstraints = thisTable.getConstraints(); List comparingConstraints = comparingTable.getConstraints(); + //check for ALTER CONSTRAINT + for (org.executequery.databaseobjects.impl.ColumnConstraint thisConstraint : thisConstraints) { + + if ((thisConstraint.getType() == PRIMARY_KEY && constraints[0]) || + (thisConstraint.getType() == FOREIGN_KEY && constraints[1]) || + (thisConstraint.getType() == UNIQUE_KEY && constraints[2]) || + (thisConstraint.getType() == CHECK_KEY && constraints[3])) + continue; + + + for (org.executequery.databaseobjects.impl.ColumnConstraint comparingConstraint : comparingConstraints) + if (Objects.equals(thisConstraint.getName(), comparingConstraint.getName())) + if (thisConstraint.getType() != comparingConstraint.getType() + || thisConstraint.getColumnName() != comparingConstraint.getColumnName() + || thisConstraint.getCheck() != comparingConstraint.getCheck() + || thisConstraint.getReferencedTable() != comparingConstraint.getReferencedTable() + || !Objects.equals(thisConstraint.getColumnDisplayList(), comparingConstraint.getColumnDisplayList()) + || !Objects.equals(thisConstraint.getReferenceColumnDisplayList(), comparingConstraint.getReferenceColumnDisplayList()) + || thisConstraint.getUpdateRule() != comparingConstraint.getUpdateRule() + || thisConstraint.getDeleteRule() != comparingConstraint.getDeleteRule() + ) { + alterConstraints = true; + break; + } + } //check for DROP CONSTRAINT for (org.executequery.databaseobjects.impl.ColumnConstraint thisConstraint : thisConstraints) { @@ -1239,7 +1265,10 @@ public static String generateAlterTable( } if (sb.toString().isEmpty()) - return "/* there are no changes */\n"; + if (alterConstraints) + return "/* ALTER CONSTRAINTS */\n"; + else + return "/* there are no changes */\n"; return sb.toString(); } From 283043330a80ced959cd1c28690734135af8a0e7 Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Thu, 22 Aug 2024 15:34:25 +0300 Subject: [PATCH 087/141] fix names for comparing constraints --- .../impl/DefaultDatabaseCollation.java | 2 +- .../impl/DefaultDatabaseFunction.java | 2 +- .../impl/DefaultDatabasePackage.java | 2 +- .../impl/DefaultDatabaseProcedure.java | 2 +- .../impl/DefaultDatabaseRole.java | 3 +- .../impl/DefaultDatabaseTrigger.java | 2 +- .../impl/DefaultDatabaseView.java | 3 +- .../gui/browser/comparer/Comparer.java | 10 ++-- src/org/underworldlabs/util/SQLUtils.java | 51 +++++++++++-------- 9 files changed, 42 insertions(+), 35 deletions(-) diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseCollation.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseCollation.java index ad301ae76..ef24525b5 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseCollation.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseCollation.java @@ -226,7 +226,7 @@ public String getDropSQL() throws DataSourceException { public String getCompareAlterSQL(AbstractDatabaseObject databaseObject) throws DataSourceException { String comparingSqlQuery = databaseObject.getCompareCreateSQL(); return !Objects.equals(this.getCompareCreateSQL(), comparingSqlQuery) ? - getDropSQL() + comparingSqlQuery : "/* there are no changes */\n"; + getDropSQL() + comparingSqlQuery : SQLUtils.THERE_ARE_NO_CHANGES; } } diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseFunction.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseFunction.java index 201da321a..b27ce94ce 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseFunction.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseFunction.java @@ -168,7 +168,7 @@ public String getDropSQL() throws DataSourceException { @Override public String getCompareAlterSQL(AbstractDatabaseObject databaseObject) throws DataSourceException { return (!this.getCompareCreateSQL().equals(databaseObject.getCompareCreateSQL())) ? - databaseObject.getCompareCreateSQL() : "/* there are no changes */"; + databaseObject.getCompareCreateSQL() : SQLUtils.THERE_ARE_NO_CHANGES; } protected static final String FA = "FA_"; diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabasePackage.java b/src/org/executequery/databaseobjects/impl/DefaultDatabasePackage.java index 822de0070..26cda60cb 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabasePackage.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabasePackage.java @@ -130,7 +130,7 @@ public String getDropSQL() throws DataSourceException { @Override public String getCompareAlterSQL(AbstractDatabaseObject databaseObject) throws DataSourceException { return (!this.getCompareCreateSQL().equals(databaseObject.getCompareCreateSQL())) ? - databaseObject.getCompareCreateSQL() : "/* there are no changes */"; + databaseObject.getCompareCreateSQL() : SQLUtils.THERE_ARE_NO_CHANGES; } protected final static String PACKAGE_HEADER_SOURCE = "PACKAGE_HEADER_SOURCE"; protected final static String PACKAGE_BODY_SOURCE = "PACKAGE_BODY_SOURCE"; diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseProcedure.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseProcedure.java index ec8fe1bba..ad0984ddb 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseProcedure.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseProcedure.java @@ -142,7 +142,7 @@ public String getDropSQL() throws DataSourceException { @Override public String getCompareAlterSQL(AbstractDatabaseObject databaseObject) throws DataSourceException { return (!this.getCompareCreateSQL().equals(databaseObject.getCompareCreateSQL())) ? - databaseObject.getCompareCreateSQL() : "/* there are no changes */"; + databaseObject.getCompareCreateSQL() : SQLUtils.THERE_ARE_NO_CHANGES; } protected static final String PP = "PP_"; diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseRole.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseRole.java index 4f59c0d44..c573e36f3 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseRole.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseRole.java @@ -2,7 +2,6 @@ import org.executequery.databaseobjects.DatabaseMetaTag; import org.executequery.databaseobjects.NamedObject; -import org.executequery.gui.browser.comparer.Comparer; import org.executequery.sql.sqlbuilder.Field; import org.executequery.sql.sqlbuilder.SelectBuilder; import org.executequery.sql.sqlbuilder.Table; @@ -45,7 +44,7 @@ public String getDropSQL() throws DataSourceException { @Override public String getCompareAlterSQL(AbstractDatabaseObject databaseObject) throws DataSourceException { - return "/* there are no changes */\n"; + return SQLUtils.THERE_ARE_NO_CHANGES; } @Override diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTrigger.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTrigger.java index 13838012e..ca649c440 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseTrigger.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseTrigger.java @@ -421,7 +421,7 @@ public String getDropSQL() throws DataSourceException { @Override public String getCompareAlterSQL(AbstractDatabaseObject databaseObject) throws DataSourceException { return (!this.getCompareCreateSQL().equals(databaseObject.getCompareCreateSQL())) ? - databaseObject.getCompareCreateSQL() : "/* there are no changes */"; + databaseObject.getCompareCreateSQL() : SQLUtils.THERE_ARE_NO_CHANGES; } protected static final String TRIGGER_SOURCE = "TRIGGER_SOURCE"; diff --git a/src/org/executequery/databaseobjects/impl/DefaultDatabaseView.java b/src/org/executequery/databaseobjects/impl/DefaultDatabaseView.java index aac5be476..9cdff8c5a 100644 --- a/src/org/executequery/databaseobjects/impl/DefaultDatabaseView.java +++ b/src/org/executequery/databaseobjects/impl/DefaultDatabaseView.java @@ -22,7 +22,6 @@ import org.executequery.databasemediators.spi.DefaultStatementExecutor; import org.executequery.databaseobjects.*; -import org.executequery.gui.browser.comparer.Comparer; import org.executequery.log.Log; import org.executequery.sql.TokenizingFormatter; import org.executequery.sql.sqlbuilder.*; @@ -145,7 +144,7 @@ public String getDropSQL() throws DataSourceException { @Override public String getCompareAlterSQL(AbstractDatabaseObject databaseObject) throws DataSourceException { return (!this.getCompareCreateSQL().equals(databaseObject.getCompareCreateSQL())) ? - databaseObject.getCompareCreateSQL() : "/* there are no changes */"; + databaseObject.getCompareCreateSQL() : SQLUtils.THERE_ARE_NO_CHANGES; } @Override diff --git a/src/org/executequery/gui/browser/comparer/Comparer.java b/src/org/executequery/gui/browser/comparer/Comparer.java index 01fa26014..6d38462eb 100644 --- a/src/org/executequery/gui/browser/comparer/Comparer.java +++ b/src/org/executequery/gui/browser/comparer/Comparer.java @@ -220,7 +220,7 @@ public void alterErds(List tables) { AbstractDatabaseObject compareObject = (AbstractDatabaseObject) alterObjects.get(obj); String sqlScript = masterObject.getCompareAlterSQL(compareObject); - if (!sqlScript.contains("there are no changes")) { + if (!sqlScript.contains(SQLUtils.THERE_ARE_NO_CHANGES)) { script.add("\n/* " + obj.getName() + " */\n" + sqlScript); panel.addTreeComponent(ComparerDBPanel.ComparerTreeNode.ALTER, TABLE, obj); panel.addComparedObject(new ComparedObject(TABLE, masterObject, compareObject.getCreateSQLText(), masterObject.getCreateSQLText())); @@ -390,7 +390,7 @@ public void alterObjects(int type) { loadingObjectsHelperCompare.preparingLoadForObjectAndCols(compareObject); String sqlScript = masterObject.getCompareAlterSQL(compareObject); - if (!sqlScript.contains("there are no changes") && !sqlScript.contains("ALTER CONSTRAINTS")) { + if (!sqlScript.contains(SQLUtils.THERE_ARE_NO_CHANGES) && !sqlScript.equals(SQLUtils.ALTER_CONSTRAINTS)) { if (stubsOnAlter != null && stubsOnAlter.containsKey(type) && stubsOnAlter.get(type) != null) stubsOnAlter.get(type).add(compareObject); @@ -401,7 +401,7 @@ public void alterObjects(int type) { panel.addToLog("\t" + obj.getName()); isHeaderNeeded = true; counter[2]++; - } else if (sqlScript.contains("ALTER CONSTRAINTS")) { + } else if (sqlScript.equals(SQLUtils.ALTER_CONSTRAINTS)) { panel.addTreeComponent(ComparerDBPanel.ComparerTreeNode.ALTER, type, obj); panel.addComparedObject(new ComparedObject(type, masterObject, compareObject.getCreateSQLText(), masterObject.getCreateSQLText())); panel.addToLog("\t" + obj.getName()); @@ -675,7 +675,7 @@ public void setStubsNeed( private void addConstraintToScript(org.executequery.gui.browser.ColumnConstraint obj) { script.add("\n/* " + obj.getTable() + "." + obj.getName() + " */"); script.add("\nALTER TABLE " + obj.getTable() + "\n\tADD " + - SQLUtils.generateDefinitionColumnConstraint(obj, true, false, compareConnection, false) + ";\n"); + SQLUtils.generateDefinitionColumnConstraint(obj, true, false, compareConnection, true) + ";\n"); } private void dropConstraintToScript(org.executequery.gui.browser.ColumnConstraint obj) { @@ -870,7 +870,7 @@ private void alterListConstraints(int type) { AbstractDatabaseObject masterAbstractObject = (AbstractDatabaseObject) masterObject; loadingObjectsHelperMaster.preparingLoadForObjectCols(masterAbstractObject); if (Objects.equals(masterObject.getName(), compareObject.getName())) - if (!((AbstractDatabaseObject) masterObject).getCompareAlterSQL((AbstractDatabaseObject) compareObject).contains("there are no changes")) + if (!((AbstractDatabaseObject) masterObject).getCompareAlterSQL((AbstractDatabaseObject) compareObject).contains(SQLUtils.THERE_ARE_NO_CHANGES)) checkConstraintsPair(masterObject, compareObject, droppedConstraints); loadingObjectsHelperMaster.postProcessingLoadForObjectForCols(masterAbstractObject); diff --git a/src/org/underworldlabs/util/SQLUtils.java b/src/org/underworldlabs/util/SQLUtils.java index ed5bbbd07..4c67a5a2d 100644 --- a/src/org/underworldlabs/util/SQLUtils.java +++ b/src/org/underworldlabs/util/SQLUtils.java @@ -24,6 +24,8 @@ import static org.executequery.gui.table.CreateTableSQLSyntax.*; public final class SQLUtils { + public static final String THERE_ARE_NO_CHANGES = "/* there are no changes */\n"; + public static final String ALTER_CONSTRAINTS = "/* ALTER CONSTRAINTS */\n"; public static String generateCreateTable( String name, List columnDataList, List columnConstraintList, @@ -1040,7 +1042,7 @@ public static String generateAlterDomain(ColumnData thisDomainData, ColumnData d sb.append("NULL"); } - return !sb.toString().isEmpty() ? sb.toString() : "/* there are no changes */\n"; + return !sb.toString().isEmpty() ? sb.toString() : THERE_ARE_NO_CHANGES; } public static String generateAlterDomain(ColumnData columnData, String domainName) { @@ -1083,7 +1085,8 @@ public static String generateAlterDomain(ColumnData columnData, String domainNam sb.append("NULL"); } - return !sb.toString().isEmpty() ? sb.toString() : "/* there are no changes */\n"; + return !sb.toString().isEmpty() ? sb.toString() : THERE_ARE_NO_CHANGES; + } @@ -1186,19 +1189,25 @@ public static String generateAlterTable( for (org.executequery.databaseobjects.impl.ColumnConstraint comparingConstraint : comparingConstraints) - if (Objects.equals(thisConstraint.getName(), comparingConstraint.getName())) - if (thisConstraint.getType() != comparingConstraint.getType() - || thisConstraint.getColumnName() != comparingConstraint.getColumnName() - || thisConstraint.getCheck() != comparingConstraint.getCheck() - || thisConstraint.getReferencedTable() != comparingConstraint.getReferencedTable() - || !Objects.equals(thisConstraint.getColumnDisplayList(), comparingConstraint.getColumnDisplayList()) - || !Objects.equals(thisConstraint.getReferenceColumnDisplayList(), comparingConstraint.getReferenceColumnDisplayList()) - || thisConstraint.getUpdateRule() != comparingConstraint.getUpdateRule() - || thisConstraint.getDeleteRule() != comparingConstraint.getDeleteRule() - ) { + if (Objects.equals(thisConstraint.getName(), comparingConstraint.getName())) { + boolean[] flags = new boolean[8]; + flags[0] = thisConstraint.getType() != comparingConstraint.getType(); + flags[1] = !Objects.equals(thisConstraint.getColumnName(), comparingConstraint.getColumnName()); + flags[2] = !Objects.equals(thisConstraint.getCheck(), comparingConstraint.getCheck()); + flags[3] = !Objects.equals(thisConstraint.getReferencedTable(), comparingConstraint.getReferencedTable()); + flags[4] = !Objects.equals(thisConstraint.getColumnDisplayList(), comparingConstraint.getColumnDisplayList()); + flags[5] = !Objects.equals(thisConstraint.getReferenceColumnDisplayList(), comparingConstraint.getReferenceColumnDisplayList()); + flags[6] = !Objects.equals(thisConstraint.getUpdateRule(), comparingConstraint.getUpdateRule()); + flags[7] = !Objects.equals(thisConstraint.getDeleteRule(), comparingConstraint.getDeleteRule()); + boolean notEquals = false; + for (boolean flag : flags) { + notEquals = notEquals || flag; + } + if (notEquals) { alterConstraints = true; break; } + } } //check for DROP CONSTRAINT @@ -1266,9 +1275,9 @@ public static String generateAlterTable( if (sb.toString().isEmpty()) if (alterConstraints) - return "/* ALTER CONSTRAINTS */\n"; + return ALTER_CONSTRAINTS; else - return "/* there are no changes */\n"; + return THERE_ARE_NO_CHANGES; return sb.toString(); } @@ -1292,7 +1301,7 @@ public static String generateAlterException( } } - return sb.toString().trim().isEmpty() ? "/* there are no changes */\n" : sb.toString(); + return sb.toString().trim().isEmpty() ? THERE_ARE_NO_CHANGES : sb.toString(); } public static String generateAlterSequence( @@ -1310,7 +1319,7 @@ public static String generateAlterSequence( } if (noChangesCheckString.contentEquals(sb)) - return "/* there are no changes */\n"; + return THERE_ARE_NO_CHANGES; return sb.append(";\n").toString(); } @@ -1344,7 +1353,7 @@ public static String generateAlterUDF( } } - return sb.toString().isEmpty() ? "/* there are no changes */\n" : sb.toString(); + return sb.toString().isEmpty() ? THERE_ARE_NO_CHANGES : sb.toString(); } public static String generateAlterIndex( @@ -1391,7 +1400,7 @@ public static String generateAlterIndex( } } - return sb.toString().isEmpty() ? "/* there are no changes */\n" : sb.toString(); + return sb.toString().isEmpty() ? THERE_ARE_NO_CHANGES : sb.toString(); } public static String generateAlterUser(DefaultDatabaseUser thisUser, DefaultDatabaseUser compareUser, boolean setComment) { @@ -1447,7 +1456,7 @@ public static String generateAlterUser(DefaultDatabaseUser thisUser, DefaultData sb.append(generateComment(thisUser.getName(), "USER", compareUser.getRemarks(), thisUser.getPlugin(), ";", false, thisUser.getHost().getDatabaseConnection())); } - return !sb.toString().isEmpty() ? sb.toString() : "/* there are no changes */\n"; + return !sb.toString().isEmpty() ? sb.toString() : THERE_ARE_NO_CHANGES; } @@ -1480,7 +1489,7 @@ public static String generateAlterTablespace(DefaultDatabaseTablespace thisTable )); } - return sb.toString().isEmpty() ? "/* there are no changes */\n" : sb.toString(); + return sb.toString().isEmpty() ? THERE_ARE_NO_CHANGES : sb.toString(); } public static String generateAlterTablespace(String name, String file, String comment, boolean commentNeed, DatabaseConnection dc) { @@ -2061,7 +2070,7 @@ public static String generateAlterJob(DefaultDatabaseJob thisJob, DefaultDatabas sb.append("^").append(generateComment(thisJob.getName(), "JOB", compareJob.getRemarks(), "", false, thisJob.getHost().getDatabaseConnection())); if (noChangesCheckString.contentEquals(sb)) - return "/* there are no changes */\n"; + return THERE_ARE_NO_CHANGES; return sb.append("^\nSET TERM ;^\n").toString(); } From dc838e202c7b09017ddfb4427c4ca375dff2e8df Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Fri, 23 Aug 2024 10:56:42 +0300 Subject: [PATCH 088/141] Revert "Fix remove empty row when there are no any variables or cursors in the corresponding tables (RS-187856)" This reverts commit 66339f2ee11cb80f48f4360f08e385c1c03b4299. --- .../gui/procedure/CreateProcedureFunctionPanel.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java index e89ce405d..c0dc14cc1 100644 --- a/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java +++ b/src/org/executequery/gui/procedure/CreateProcedureFunctionPanel.java @@ -310,6 +310,10 @@ private String extractProcedureBody(String sqlText) { private void loadVariables() { + // remove first empty row + variablesPanel.clearRows(); + cursorsPanel.clearRows(); + String fullProcedureBody = getFullSourceBody(); if (fullProcedureBody != null && !fullProcedureBody.isEmpty()) { From cd5fa2ccf4a905c784082347324201d98c4e0dcf Mon Sep 17 00:00:00 2001 From: "mikhail.kalyashin" Date: Mon, 26 Aug 2024 10:27:34 +0300 Subject: [PATCH 089/141] fix executing sql script without "set term" --- src/org/executequery/sql/QueryTokenizer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/org/executequery/sql/QueryTokenizer.java b/src/org/executequery/sql/QueryTokenizer.java index e1a29bc69..db69d62df 100644 --- a/src/org/executequery/sql/QueryTokenizer.java +++ b/src/org/executequery/sql/QueryTokenizer.java @@ -273,6 +273,10 @@ public void extractNotDelimiterTokens(String query) { declareBlockTokens.add(new Token(TokenTypes.DECLARE_BLOCK, startIndex, antlrToken.getStopIndex())); state = AS; } + if (antlrToken.getType() == SqlLexer.KEYWORD && antlrToken.getText().equalsIgnoreCase("as")) { + declareBlockTokens.add(new Token(TokenTypes.DECLARE_BLOCK, startIndex, antlrToken.getStopIndex())); + state = AS; + } } else if (state == BEGIN_END) { if (antlrToken.getType() == SqlLexer.KEYWORD) { if (antlrToken.getText().equalsIgnoreCase("begin")) { From 2a234f46a4553f631216c6977aae20788f5411dc Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Mon, 26 Aug 2024 09:57:58 +0300 Subject: [PATCH 090/141] Update confirm message for Query editor closing --- src/org/executequery/GUIUtilities.java | 4 ++++ .../executequery/gui/editor/QueryEditor.java | 12 ++++++++++-- .../localization/resources.properties | 3 ++- .../localization/resources_ru.properties | 3 ++- src/org/underworldlabs/swing/GUIUtils.java | 17 +++++++++++++++++ 5 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/org/executequery/GUIUtilities.java b/src/org/executequery/GUIUtilities.java index a933e3823..15bbf7bf9 100644 --- a/src/org/executequery/GUIUtilities.java +++ b/src/org/executequery/GUIUtilities.java @@ -1363,6 +1363,10 @@ public static int displayYesNoDialog(Object message, String title) { return GUIUtils.displayYesNoDialog(getInFocusDialogOrWindow(), message, title); } + public static int displayYesNoCancelDialog(Object message, String title) { + return GUIUtils.displayYesNoCancelDialog(getInFocusDialogOrWindow(), message, title); + } + public static int displayConfirmCancelDialog(Object message) { return GUIUtils.displayConfirmCancelDialog(getInFocusDialogOrWindow(), message); } diff --git a/src/org/executequery/gui/editor/QueryEditor.java b/src/org/executequery/gui/editor/QueryEditor.java index 531299a64..125a65d76 100644 --- a/src/org/executequery/gui/editor/QueryEditor.java +++ b/src/org/executequery/gui/editor/QueryEditor.java @@ -828,13 +828,21 @@ public boolean tabViewClosing() { return false; } + if (delegate.getIDTransaction() != -1) { - int result = GUIUtilities.displayConfirmCancelDialog(bundleString("requestTransactionMessage")); + + int result = GUIUtilities.displayYesNoCancelDialog( + bundleString("requestTransactionMessage"), + bundleString("requestTransactionTitle") + ); + if (result == JOptionPane.YES_OPTION) delegate.commit(false); else if (result == JOptionPane.NO_OPTION) delegate.rollback(false); - else return false; + else + return false; + return tabViewClosing(); } diff --git a/src/org/executequery/localization/resources.properties b/src/org/executequery/localization/resources.properties index 25838b635..b70cb40ec 100644 --- a/src/org/executequery/localization/resources.properties +++ b/src/org/executequery/localization/resources.properties @@ -1971,7 +1971,8 @@ QueryEditor.ShowTPP=Show TPP QueryEditor.TransactionIsolationLevel=Transaction isolation level: QueryEditor.autocommitEnable=Auto-commit is enabled QueryEditor.autocommitDisable=Auto-commit is disabled -QueryEditor.requestTransactionMessage=There is active transaction.You must commit or rollback it before closing form.\nFor commit click "yes", for rollback - "no". +QueryEditor.requestTransactionTitle=There is an active transaction +QueryEditor.requestTransactionMessage=Commit the active transaction before closing? QueryEditor.script=script QueryEditor.title=Query Editor QueryEditor.FileSavedTo=File saved to {0} diff --git a/src/org/executequery/localization/resources_ru.properties b/src/org/executequery/localization/resources_ru.properties index 698b0dece..e44404d6a 100644 --- a/src/org/executequery/localization/resources_ru.properties +++ b/src/org/executequery/localization/resources_ru.properties @@ -1971,7 +1971,8 @@ QueryEditor.ShowTPP=Показать параметры транзакции QueryEditor.TransactionIsolationLevel=Уровень изоляции транзакций: QueryEditor.autocommitEnable=Автофиксация включена QueryEditor.autocommitDisable=Автофиксация выключена -QueryEditor.requestTransactionMessage=Перед закрытием формы необходимо подтвердить или откатить активную транзакцию.\nДля подтверждения нажмите "да", для отката - "нет". +QueryEditor.requestTransactionTitle=Есть неподтвежденная транзакция +QueryEditor.requestTransactionMessage=Подтвердить активную транзакцию перед закрытием? QueryEditor.script=скрипт QueryEditor.title=Редактор запросов QueryEditor.FileSavedTo= Файл сохранен в {0} diff --git a/src/org/underworldlabs/swing/GUIUtils.java b/src/org/underworldlabs/swing/GUIUtils.java index c38578d5d..09d0c9422 100644 --- a/src/org/underworldlabs/swing/GUIUtils.java +++ b/src/org/underworldlabs/swing/GUIUtils.java @@ -507,6 +507,23 @@ public static final int displayYesNoDialog(Component parent, Object message, Str message, new Object[]{Bundles.getCommon("yes.button"), Bundles.getCommon("no.button")})); } + public static int displayYesNoCancelDialog(Component parent, Object message, String title) { + return formatDialogReturnValue(displayDialog( + parent, + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + false, + "OptionPane.questionIcon", + title, + message, + new Object[]{ + Bundles.getCommon("yes.button"), + Bundles.getCommon("no.button"), + Bundles.getCommon("cancel.button") + } + )); + } + public static final int displayConfirmCancelDialog(Component parent, Object message) { return formatDialogReturnValue(displayDialog(parent, JOptionPane.YES_NO_CANCEL_OPTION, From 80b55d217ec175ce69897d0e96061b7fcdf130c4 Mon Sep 17 00:00:00 2001 From: "aleksey.kozlov" Date: Fri, 9 Aug 2024 17:23:05 +0300 Subject: [PATCH 091/141] Add fbclient libs for RDB 3, 4, 5 --- .gitignore | 2 + modules/plugins/fbclient-3/pom.xml | 37 ++++++++++++ .../resources/linux-x86-64/libfbclient.so | Bin 0 -> 2177112 bytes .../main/resources/win32-x86-64/fbclient.dll | Bin 0 -> 2244096 bytes .../src/main/resources/win32-x86/fbclient.dll | Bin 0 -> 1696256 bytes modules/plugins/fbclient-4/pom.xml | 37 ++++++++++++ .../resources/linux-x86-64/libfbclient.so | Bin 0 -> 4239040 bytes .../main/resources/win32-x86-64/fbclient.dll | Bin 0 -> 2998784 bytes modules/plugins/fbclient-5/pom.xml | 37 ++++++++++++ .../resources/linux-x86-64/libfbclient.so | Bin 0 -> 4239040 bytes .../main/resources/win32-x86-64/fbclient.dll | Bin 0 -> 2998784 bytes modules/plugins/fbplugin-impl/pom.xml | 28 ++------- modules/plugins/fbplugin-impl5/pom.xml | 28 ++------- modules/redexpert/pom.xml | 53 ++++++++++-------- pom.xml | 3 + .../datasource/SimpleDataSource.java | 37 ++++++------ src/org/executequery/jdbcdrivers-default.xml | 13 +++-- .../localization/resources.properties | 1 + .../localization/resources_ru.properties | 1 + .../util/DynamicLibraryLoader.java | 6 -- 20 files changed, 184 insertions(+), 99 deletions(-) create mode 100644 modules/plugins/fbclient-3/pom.xml create mode 100755 modules/plugins/fbclient-3/src/main/resources/linux-x86-64/libfbclient.so create mode 100755 modules/plugins/fbclient-3/src/main/resources/win32-x86-64/fbclient.dll create mode 100755 modules/plugins/fbclient-3/src/main/resources/win32-x86/fbclient.dll create mode 100644 modules/plugins/fbclient-4/pom.xml create mode 100644 modules/plugins/fbclient-4/src/main/resources/linux-x86-64/libfbclient.so create mode 100755 modules/plugins/fbclient-4/src/main/resources/win32-x86-64/fbclient.dll create mode 100644 modules/plugins/fbclient-5/pom.xml create mode 100644 modules/plugins/fbclient-5/src/main/resources/linux-x86-64/libfbclient.so create mode 100755 modules/plugins/fbclient-5/src/main/resources/win32-x86-64/fbclient.dll diff --git a/.gitignore b/.gitignore index e29a8c5b1..08e2afcd5 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,8 @@ lib/jaybird-full\.jar lib/jaybird-cryptoapi\.jar +lib/fbclient-3\.jar + lib/fbclient-4\.jar lib/fbclient-5\.jar diff --git a/modules/plugins/fbclient-3/pom.xml b/modules/plugins/fbclient-3/pom.xml new file mode 100644 index 000000000..527a68d83 --- /dev/null +++ b/modules/plugins/fbclient-3/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + + org.executequery + RedExpert-parent + 2024.07 + ../../../pom.xml + + + fbclient-3 + 3.0.15 + jar + + 2019 + + + mrotteveel + Mark Rotteveel + mark@lawinegevaar.nl + + Administrator + + + + + + Initial Developer's Public License Version 1.0 + https://firebirdsql.org/en/initial-developer-s-public-license-version-1-0/ + repo + + + + \ No newline at end of file diff --git a/modules/plugins/fbclient-3/src/main/resources/linux-x86-64/libfbclient.so b/modules/plugins/fbclient-3/src/main/resources/linux-x86-64/libfbclient.so new file mode 100755 index 0000000000000000000000000000000000000000..c522191e6459679c9c86a516fb579b27c76c175e GIT binary patch literal 2177112 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

bLi8?7w({T>c*6kW0L4@Up=x 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 z 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

    |J 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

    6NlvhCN@llWj5B91ZmbT82V9 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�j`v#pFT$KyZkie-6r{|?VShWr^&Bt zemWaa>Nv>C&@$Z60u7*kZmi zBSF65qP%&xgR_!6$r8R}Ne*L!kO6Zagp)WWsBt{Un?q-y2-*GC1Y>VMHF57NFxx$d; zcu>^u8#!t{bCc_+C9P@fsMVcWm)<4}%4bMC{7rJyf)egrfHG|a(kT9X11bCjaF1ZU zL9m9mr+n*@gO)iEGR)W$RwcUy@**+XYPI0r3C?5VcrgPTXMSMx`J87D#0yp(!G^^n ziZJ-~(i=J0G>MaZt^T-`d^x7t9I~L;+--iLMRlo&YEr-M}=6^9JWXWc<-V!I77) z|BHnRMUO=i#v^Oyzi5{CyC@pbwfKZJBbU{domBTCOe-H@C9>rfGW-Uv1StGZRVT^f zio)Nrg-uCAT?9PgnCUI`CNjll1?`MQbDJE^=W}7(QV^E=q6+Bj%8`~5k@TTSrCuJVU z!hAX#pAqqXbrhnA&yHHgt3t>B?)8bZuIzyM84!+-co`l?-ZcJq?IU?ViZxe4kHgns zIt7^;darlj2H_*#_Bsw+$4C6axWY98c~mc;1penUT(VgT@q^eDKXJV?0zXgaP)PG# z36wE1%khjh!)+WRj|kPT!f6+%gcO`c7y(Z_Etl1TsYp7fnAHk3lJMd-Bc=4|fOAzK zYTPGMmj}210dR;U4e1M6aueJlOM6LMKq&3$Irb)c*{cSVEcprEk`mUQ95ZR$zWV3` zGLX~W<53&66WbE8w+N@-H{(5e8QM~A2_JZJ2Ujaoz9}Dz(W)TUyJ@i2JFcQ&m*`kW zP6TlxC}>x>3{z;rGs9*Zq`h#laG1|IB{cY|k~@vJE2NRUz?6Hk!$W)0;gX9yCHWe? zzCaJ^1inPu10aESSK@7Rh`Z}Y59X?T>^?Ue@5+#MlN6{+SKDEObc*F^DoxreF#Fc% z8=bOm6fvf58O~7_=HO^_jSoy9#rBxC>|wR)21K!{4YW=3)dez9VLg7kGZTJ$X5%+t zmE?3UGy`eH=9s)f>zbUr!u0ip1?xwi9LL{rzuJZ^;1kpoZhF8bk3pIZuu_Oqo=Q}n zBPE5_7-*_BH0reBjWikR@4$k+{w5~khWE|a^E^0?IAODP>!6@HaFXf-Xk3fYy~w%& zlqu%O9vn8wLHiTbc!*b{WTbLu9Rp`rX2 zw8w!BR?A+0FtlZNF!%TIi+GxSQMCCl!I@%~2%7hH7;ZMhgw^G8*sVfGpCem1Wr7AJtjrAIs9c(wfr0?Ih=55o z@Fv%W_6JVJum{#nBsDadXjfGCu~OW_1u;X#U)8L|yEUIs^qT{}w-kS8jE5Kak(Nei zNhtxgsF$vHB1dR@k@nAktm;o=bxU+u9wuNbL`O+}Y3)!&J`O_Z{CJo&hOQhq2<*xO zeuJ$h{x0iJv zr{&?N5I2R1ItmXwo>vi<(@UWv^dbyAM`h;66ssqCEEBHs4VGhRtPQ&zm7Evdkh!vy zcfL7CBDbh}ak&$v1rB;5{vlqVZ8MYSc;_zl;VV?IeDnN+j!6072G$EW>If$)$s4qSh@|=

    *0z2J$i8v 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%0D1M`VPAf#37>@pN*TNa^Fo*GE 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�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�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

    Wnoo?bz=d*- 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 u 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 Z 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 Rv7)w%bS+^6H^5=={{hWIU;h9A literal 0 HcmV?d00001 diff --git a/modules/plugins/fbclient-3/src/main/resources/win32-x86-64/fbclient.dll b/modules/plugins/fbclient-3/src/main/resources/win32-x86-64/fbclient.dll new file mode 100755 index 0000000000000000000000000000000000000000..0b93ccab1711d2e62fd4064017509a24005d47c0 GIT binary patch literal 2244096 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ⅆ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

    ufV5PLF_tLQpre#-f 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