Revision: 6284
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6284&view=rev
Author: gerdwagner
Date: 2011-06-01 21:14:38 +0000 (Wed, 01 Jun 2011)
Log Message:
-----------
Query Builder clean up
Modified Paths:
--------------
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPanelController.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQueryOrderPanelCtrl.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/OrderCol.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QueryBuilderController.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QueryOrderTableModel.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/sqlgen/QueryBuilderSQLGenerator.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/sqlgen/SelectClauseGenerator.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/GraphControllerXmlBean.java
trunk/sql12/plugins/graph/src/main/resources/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/I18NStrings.properties
Added Paths:
-----------
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQuerySelectPanelCtrl.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QuerySelectTableModel.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SelectCol.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SelectStructure.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumn.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsOrderPanel.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsPanelCtrl.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsTableModel.java
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/SelectStructureXmlBean.java
Removed Paths:
-------------
trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQueryOrderPanel.java
Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphController.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -133,15 +133,17 @@
boolean queryHideNoJoins = graphControllerXmlBean.isQueryHideNoJoins();
WhereTreeNodeStructure whereTreeNodeStructure = graphControllerXmlBean.getWhereTreeNodeStructure();
OrderStructureXmlBean orderStructure = graphControllerXmlBean.getOrderStructure();
- _panelController.initMode(modeIndex, zoomerXmlBean, printXmlBean, queryHideNoJoins, whereTreeNodeStructure, orderStructure);
+ SelectStructureXmlBean selectStructure = graphControllerXmlBean.getSelectStructure();
+ _panelController.initMode(modeIndex, zoomerXmlBean, printXmlBean, queryHideNoJoins, selectStructure, whereTreeNodeStructure, orderStructure);
+
_panelController.getDesktopController().setShowConstraintNames(graphControllerXmlBean.isShowConstraintNames());
_panelController.getDesktopController().setShowQualifiedTableNames(graphControllerXmlBean.isShowQualifiedTableNames());
}
else
{
_tabToWindowHandler.setTitle(_plugin.patchName(_tabToWindowHandler.getTitle(), _session));
- _panelController.initMode(Mode.DEFAULT, null, null, false, null, null);
+ _panelController.initMode(Mode.DEFAULT, null, null, false, null, null, null);
}
@@ -246,6 +248,7 @@
xmlBean.setQueryHideNoJoins(_panelController.getModeManager().isQueryHideNoJoins());
xmlBean.setWhereTreeNodeStructure(_panelController.getModeManager().getWhereTreeNodeStructure());
xmlBean.setOrderStructure(_panelController.getModeManager().getOrderStructure());
+ xmlBean.setSelectStructure(_panelController.getModeManager().getSelectStructure());
Vector<TableFrameController> tblCtrls = _tableFramesModel.getTblCtrls();
Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPanelController.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPanelController.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/GraphPanelController.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -4,6 +4,7 @@
import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.WhereTreeNodeStructure;
import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.OrderStructureXmlBean;
import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.PrintXmlBean;
+import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.SelectStructureXmlBean;
import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.ZoomerXmlBean;
import javax.swing.*;
@@ -99,12 +100,12 @@
return _graphPanel;
}
- public void initMode(Mode mode, ZoomerXmlBean zoomerXmlBean, PrintXmlBean printXmlBean, boolean queryHideNoJoins, WhereTreeNodeStructure whereTreeNodeStructure, OrderStructureXmlBean orderStructure)
+ public void initMode(Mode mode, ZoomerXmlBean zoomerXmlBean, PrintXmlBean printXmlBean, boolean queryHideNoJoins, SelectStructureXmlBean selectStructure, WhereTreeNodeStructure whereTreeNodeStructure, OrderStructureXmlBean orderStructure)
{
EdgesListener edgesListener = _graphDesktopController.createEdgesListener();
GraphDesktopPane desktopPane = _graphDesktopController.getDesktopPane();
- _modeManager.initMode(mode, zoomerXmlBean, printXmlBean, queryHideNoJoins, whereTreeNodeStructure, orderStructure, edgesListener, desktopPane);
+ _modeManager.initMode(mode, zoomerXmlBean, printXmlBean, queryHideNoJoins, selectStructure, whereTreeNodeStructure, orderStructure, edgesListener, desktopPane);
onModeChanged();
_modeManager.addModeManagerListener(new ModeManagerListener()
Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/ModeManager.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -5,6 +5,7 @@
import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.WhereTreeNodeStructure;
import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.OrderStructureXmlBean;
import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.PrintXmlBean;
+import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.SelectStructureXmlBean;
import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.ZoomerXmlBean;
import javax.swing.*;
@@ -123,7 +124,7 @@
return _mnuMode.getMode();
}
- public void initMode(Mode mode, ZoomerXmlBean zoomerXmlBean, PrintXmlBean printXmlBean, boolean queryHideNoJoins, WhereTreeNodeStructure whereTreeNodeStructure, OrderStructureXmlBean orderStructure, EdgesListener edgesListener, GraphDesktopPane desktopPane)
+ public void initMode(Mode mode, ZoomerXmlBean zoomerXmlBean, PrintXmlBean printXmlBean, boolean queryHideNoJoins, SelectStructureXmlBean selectStructure, WhereTreeNodeStructure whereTreeNodeStructure, OrderStructureXmlBean orderStructure, EdgesListener edgesListener, GraphDesktopPane desktopPane)
{
StartButtonHandler startButtonHandler;
GraphPluginResources rsrc = new GraphPluginResources(_plugin);
@@ -132,7 +133,7 @@
_zoomPrintController = new ZoomPrintController(zoomerXmlBean, printXmlBean, edgesListener, desktopPane, _session, _plugin, startButtonHandler);
startButtonHandler = new StartButtonHandler(_graphControllerFacade, rsrc);
- _queryBuilderController = new QueryBuilderController(_tableFramesModel, _graphControllerFacade, queryHideNoJoins, whereTreeNodeStructure, orderStructure, _session, _plugin, startButtonHandler);
+ _queryBuilderController = new QueryBuilderController(_tableFramesModel, _graphControllerFacade, queryHideNoJoins, selectStructure, whereTreeNodeStructure, orderStructure, _session, _plugin, startButtonHandler);
startButtonHandler = new StartButtonHandler(_graphControllerFacade, rsrc);
_defaultController = new DefaultController(startButtonHandler);
@@ -176,4 +177,9 @@
{
return _queryBuilderController.getOrderStructure();
}
+
+ public SelectStructureXmlBean getSelectStructure()
+ {
+ return _queryBuilderController.getSelectStructure();
+ }
}
Deleted: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQueryOrderPanel.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQueryOrderPanel.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQueryOrderPanel.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -1,59 +0,0 @@
-package net.sourceforge.squirrel_sql.plugins.graph.querybuilder;
-
-import net.sourceforge.squirrel_sql.fw.gui.SortableTable;
-import net.sourceforge.squirrel_sql.fw.gui.SortableTableModel;
-import net.sourceforge.squirrel_sql.fw.util.StringManager;
-import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
-import net.sourceforge.squirrel_sql.plugins.graph.HideDockButtonHandler;
-
-import javax.swing.*;
-import java.awt.*;
-
-public class GraphQueryOrderPanel extends JPanel
-{
- private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(GraphQueryOrderPanel.class);
-
- JTable tblOrder;
- JButton btnUp;
- JButton btnDown;
-
- public GraphQueryOrderPanel(HideDockButtonHandler hideDockButtonHandler)
- {
- setLayout(new BorderLayout());
- add(createButtonPanel(hideDockButtonHandler), BorderLayout.NORTH);
-
- tblOrder = new JTable();
- tblOrder.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
- tblOrder.getTableHeader().setResizingAllowed(true);
- tblOrder.getTableHeader().setReorderingAllowed(false);
- tblOrder.setAutoCreateColumnsFromModel(false);
- tblOrder.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
- add(new JScrollPane(tblOrder), BorderLayout.CENTER);
- }
-
- private JPanel createButtonPanel(HideDockButtonHandler hideDockButtonHandler)
- {
- JPanel ret = new JPanel(new GridBagLayout());
-
- GridBagConstraints gbc;
-
- gbc = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
- ret.add(hideDockButtonHandler.getHideButton(),gbc);
-
- gbc = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
- ret.add(new JLabel(s_stringMgr.getString("graph.GraphQueryOrderPanel.orderLabel")),gbc);
-
- gbc = new GridBagConstraints(2,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
- btnUp = new JButton(s_stringMgr.getString("graph.GraphQueryOrderPanel.moveUp"));
- ret.add(btnUp,gbc);
-
- gbc = new GridBagConstraints(3,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
- btnDown = new JButton(s_stringMgr.getString("graph.GraphQueryOrderPanel.moveDown"));
- ret.add(btnDown,gbc);
-
- gbc = new GridBagConstraints(4,0,1,1,1,1,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5,5,5,5),0,0);
- ret.add(new JPanel(), gbc);
-
- return ret;
- }
-}
Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQueryOrderPanelCtrl.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQueryOrderPanelCtrl.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQueryOrderPanelCtrl.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -1,55 +1,39 @@
package net.sourceforge.squirrel_sql.plugins.graph.querybuilder;
-import net.sourceforge.squirrel_sql.fw.gui.SortableTable;
-import net.sourceforge.squirrel_sql.fw.gui.SortableTableModel;
+import net.sourceforge.squirrel_sql.fw.util.StringManager;
+import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.plugins.graph.*;
import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.OrderStructureXmlBean;
import javax.swing.*;
-import javax.swing.table.TableModel;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
import java.util.ArrayList;
public class GraphQueryOrderPanelCtrl
{
- private GraphQueryOrderPanel _panel;
+ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(GraphQueryOrderPanelCtrl.class);
- public GraphQueryOrderPanelCtrl(HideDockButtonHandler hideDockButtonHandler, OrderStructureXmlBean orderStructure)
- {
- _panel = new GraphQueryOrderPanel(hideDockButtonHandler);
- QueryOrderTableModel tableModel = new QueryOrderTableModel(orderStructure);
- _panel.tblOrder.setModel(tableModel);
- _panel.tblOrder.setColumnModel(tableModel.getColumnModel());
+ private SortedColumnsPanelCtrl _delegate;
- _panel.btnUp.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent e)
- {
- onMoveUp();
- }
- });
- _panel.btnDown.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent e)
- {
- onMoveDown();
- }
- });
+ public GraphQueryOrderPanelCtrl(HideDockButtonHandler hideDockButtonHandler, OrderStructureXmlBean orderStructure)
+ {
+ _delegate = new SortedColumnsPanelCtrl(hideDockButtonHandler, new QueryOrderTableModel(orderStructure), s_stringMgr.getString("graph.GraphQueryOrderPanel.orderLabel"));
}
public JPanel getGraphQueryOrderPanel()
{
- return _panel;
+ return _delegate.getSortedColumnsPanel();
}
public OrderStructure syncOrderCols(TableFramesModel tableFramesModel)
{
- ArrayList<OrderCol> newOrderCols = new ArrayList<OrderCol>();
+ return new OrderStructure((OrderCol[]) _delegate.syncSortedColumns(OrderCol.class, getOrderedCols(tableFramesModel)));
+ }
+ private ArrayList<SortedColumn> getOrderedCols(TableFramesModel tableFramesModel)
+ {
+ ArrayList<SortedColumn> newOrderCols = new ArrayList<SortedColumn>();
+
for (TableFrameController tfc : tableFramesModel.getTblCtrls())
{
for (ColumnInfo columnInfo : tfc.getColumnInfos())
@@ -60,65 +44,12 @@
}
}
}
-
- QueryOrderTableModel tableModel = (QueryOrderTableModel) _panel.tblOrder.getModel();
- tableModel.updateOrderCols(newOrderCols);
-
- return new OrderStructure(tableModel.getOrderCols());
+ return newOrderCols;
}
- private void onMoveUp()
- {
- int[] selRows = _panel.tblOrder.getSelectedRows();
-
- if (null == selRows || 0 == selRows.length)
- {
- return;
- }
-
- QueryOrderTableModel model = (QueryOrderTableModel) _panel.tblOrder.getModel();
- int[] newSelRows = model.moveUp(selRows);
-
-
- DefaultListSelectionModel selectionModel = (DefaultListSelectionModel) _panel.tblOrder.getSelectionModel();
- selectionModel.clearSelection();
-
- for (int newSelRow : newSelRows)
- {
- selectionModel.addSelectionInterval(newSelRow, newSelRow);
- }
- _panel.tblOrder.scrollRectToVisible(_panel.tblOrder.getCellRect(newSelRows[0], 0, false));
- }
-
- private void onMoveDown()
- {
- int[] selRows = _panel.tblOrder.getSelectedRows();
-
- if (null == selRows || 0 == selRows.length)
- {
- return;
- }
-
- QueryOrderTableModel model = (QueryOrderTableModel) _panel.tblOrder.getModel();
- int[] newSelRows = model.moveDown(selRows);
-
-
-
- DefaultListSelectionModel selectionModel = (DefaultListSelectionModel) _panel.tblOrder.getSelectionModel();
- selectionModel.clearSelection();
-
- for (int newSelRow : newSelRows)
- {
- selectionModel.addSelectionInterval(newSelRow, newSelRow);
- }
- _panel.tblOrder.scrollRectToVisible(_panel.tblOrder.getCellRect(newSelRows[newSelRows.length-1], 0, false));
-
- }
-
public OrderStructureXmlBean getOrderStructure()
{
- QueryOrderTableModel model = (QueryOrderTableModel) _panel.tblOrder.getModel();
- return new OrderStructureXmlBean(model.getOrderCols());
+ return new OrderStructureXmlBean((OrderCol[]) _delegate.getSortedColumns(OrderCol.class));
}
}
Copied: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQuerySelectPanelCtrl.java (from rev 6276, trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQueryOrderPanelCtrl.java)
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQuerySelectPanelCtrl.java (rev 0)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQuerySelectPanelCtrl.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -0,0 +1,60 @@
+package net.sourceforge.squirrel_sql.plugins.graph.querybuilder;
+
+import net.sourceforge.squirrel_sql.fw.util.StringManager;
+import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
+import net.sourceforge.squirrel_sql.plugins.graph.ColumnInfo;
+import net.sourceforge.squirrel_sql.plugins.graph.HideDockButtonHandler;
+import net.sourceforge.squirrel_sql.plugins.graph.TableFrameController;
+import net.sourceforge.squirrel_sql.plugins.graph.TableFramesModel;
+import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.OrderStructureXmlBean;
+import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.SelectStructureXmlBean;
+
+import javax.swing.*;
+import java.util.ArrayList;
+
+public class GraphQuerySelectPanelCtrl
+{
+ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(GraphQuerySelectPanelCtrl.class);
+
+ private SortedColumnsPanelCtrl _delegate;
+
+
+ public GraphQuerySelectPanelCtrl(HideDockButtonHandler hideDockButtonHandler, SelectStructureXmlBean selectStructure)
+ {
+ _delegate = new SortedColumnsPanelCtrl(hideDockButtonHandler, new QuerySelectTableModel(selectStructure), s_stringMgr.getString("graph.GraphQueryOrderPanel.selectLabel"));
+ }
+
+ public JPanel getGraphQueryOrderPanel()
+ {
+ return _delegate.getSortedColumnsPanel();
+ }
+
+ public SelectStructure syncSelectCols(TableFramesModel tableFramesModel)
+ {
+ return new SelectStructure((SelectCol[]) _delegate.syncSortedColumns(SelectCol.class, getSelectCols(tableFramesModel)));
+ }
+
+ private ArrayList<SortedColumn> getSelectCols(TableFramesModel tableFramesModel)
+ {
+ ArrayList<SortedColumn> newOrderCols = new ArrayList<SortedColumn>();
+
+ for (TableFrameController tfc : tableFramesModel.getTblCtrls())
+ {
+ for (ColumnInfo columnInfo : tfc.getColumnInfos())
+ {
+ if(columnInfo.getQueryData().isInSelectClause())
+ {
+ newOrderCols.add(new SelectCol(tfc.getTableInfo().getSimpleName(), columnInfo));
+ }
+ }
+ }
+ return newOrderCols;
+ }
+
+
+
+ public SelectStructureXmlBean getSelectStructure()
+ {
+ return new SelectStructureXmlBean((SelectCol[]) _delegate.getSortedColumns(SelectCol.class));
+ }
+}
Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/OrderCol.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/OrderCol.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/OrderCol.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -3,7 +3,7 @@
import net.sourceforge.squirrel_sql.plugins.graph.AggregateFunctions;
import net.sourceforge.squirrel_sql.plugins.graph.ColumnInfo;
-public class OrderCol
+public class OrderCol implements SortedColumn
{
private String _qualifiedCol;
private boolean _ascending;
Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QueryBuilderController.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QueryBuilderController.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QueryBuilderController.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -8,6 +8,7 @@
import net.sourceforge.squirrel_sql.plugins.graph.*;
import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.sqlgen.QueryBuilderSQLGenerator;
import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.OrderStructureXmlBean;
+import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.SelectStructureXmlBean;
import javax.swing.*;
import java.awt.*;
@@ -19,32 +20,36 @@
{
private static final String PREF_KEY_SQL_DOCK_HEIGHT = "Squirrel.graph.sqldock.height";
private static final String PREF_KEY_RESULT_DOCK_HEIGHT = "Squirrel.graph.resultdock.height";
+ private static final String PREF_KEY_SELECT_DOCK_HEIGHT = "Squirrel.graph.selectdock.height";
+ private static final String PREF_KEY_WHERE_DOCK_HEIGHT = "Squirrel.graph.wheredock.height";
private static final String PREF_KEY_ORDER_DOCK_HEIGHT = "Squirrel.graph.orderdock.height";
- private static final String PREF_KEY_WHERE_DOCK_HEIGHT = "Squirrel.graph.wheredock.height";
private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(QueryBuilderController.class);
private JPanel _panel;
private JToggleButton _btnSQL;
private JToggleButton _btnResult;
+ private JToggleButton _btnSelect;
private JToggleButton _btnOrder;
private JToggleButton _btnWhere;
private TrippleStateCheckBox _chkHideNoJoins;
private GraphDockHandle _sqlDockHandle;
private GraphDockHandle _resultDockHandle;
+ private GraphDockHandle _selectDockHandle;
+ private GraphDockHandle _whereDockHandle;
private GraphDockHandle _orderDockHandle;
- private GraphDockHandle _whereDockHandle;
private TableFramesModel _tableFramesModel;
private GraphControllerFacade _graphControllerFacade;
private ISession _session;
private GraphQuerySQLPanelCtrl _graphQuerySQLPanelCtrl;
private GraphQueryResultPanelCtrl _graphQueryResultPanelCtrl;
+ private GraphQuerySelectPanelCtrl _graphQuerySelectPanelCtrl;
private GraphQueryOrderPanelCtrl _graphQueryOrderPanelCtrl;
private GraphQueryWherePanelCtrl _graphQueryWherePanelCtrl;
private SessionAdapter _sessionAdapter;
private GraphDockHandleAdmin _graphDockHandleAdmin;
- public QueryBuilderController(TableFramesModel tableFramesModel, GraphControllerFacade graphControllerFacade, boolean queryHideNoJoins, WhereTreeNodeStructure whereTreeNodeStructure, OrderStructureXmlBean orderStructure, ISession session, GraphPlugin plugin, StartButtonHandler startButtonHandler)
+ public QueryBuilderController(TableFramesModel tableFramesModel, GraphControllerFacade graphControllerFacade, boolean queryHideNoJoins, SelectStructureXmlBean selectStructure, WhereTreeNodeStructure whereTreeNodeStructure, OrderStructureXmlBean orderStructure, ISession session, GraphPlugin plugin, StartButtonHandler startButtonHandler)
{
_tableFramesModel = tableFramesModel;
_graphControllerFacade = graphControllerFacade;
@@ -66,24 +71,29 @@
_panel.add(_btnResult, gbc);
gbc = new GridBagConstraints(3,0,1,1,0,0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(0,0,0,5),0,0);
- _btnOrder = new JToggleButton(s_stringMgr.getString("QueryBuilderController.Order"));
- _panel.add(_btnOrder, gbc);
+ _btnSelect = new JToggleButton(s_stringMgr.getString("QueryBuilderController.Select"));
+ _panel.add(_btnSelect, gbc);
gbc = new GridBagConstraints(4,0,1,1,0,0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(0,0,0,5),0,0);
_btnWhere = new JToggleButton(s_stringMgr.getString("QueryBuilderController.Where"));
_panel.add(_btnWhere, gbc);
gbc = new GridBagConstraints(5,0,1,1,0,0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(0,0,0,5),0,0);
+ _btnOrder = new JToggleButton(s_stringMgr.getString("QueryBuilderController.Order"));
+ _panel.add(_btnOrder, gbc);
+
+ gbc = new GridBagConstraints(6,0,1,1,0,0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(0,0,0,5),0,0);
_chkHideNoJoins = new TrippleStateCheckBox(s_stringMgr.getString("QueryBuilderController.HideNoJoins"));
_panel.add(_chkHideNoJoins, gbc);
_chkHideNoJoins.setSelected(queryHideNoJoins);
- gbc = new GridBagConstraints(6,0,1,1,1,1, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(0,0,0,5),0,0);
+ gbc = new GridBagConstraints(7,0,1,1,1,1, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(0,0,0,5),0,0);
_panel.add(new JPanel(), gbc);
GraphPluginResources rsrc = new GraphPluginResources(plugin);
_graphQuerySQLPanelCtrl = new GraphQuerySQLPanelCtrl(_session, new HideDockButtonHandler(_btnSQL, rsrc), createSQLSyncListener());
_graphQueryResultPanelCtrl = new GraphQueryResultPanelCtrl(_session, new HideDockButtonHandler(_btnResult, rsrc), createResultSyncListener());
+ _graphQuerySelectPanelCtrl = new GraphQuerySelectPanelCtrl(new HideDockButtonHandler(_btnSelect, rsrc), selectStructure);
_graphQueryOrderPanelCtrl = new GraphQueryOrderPanelCtrl(new HideDockButtonHandler(_btnOrder, rsrc), orderStructure);
_graphQueryWherePanelCtrl = new GraphQueryWherePanelCtrl(_session, new HideDockButtonHandler(_btnWhere, rsrc), rsrc, whereTreeNodeStructure);
@@ -164,6 +174,10 @@
{
syncResult();
}
+ else if(_selectDockHandle.isShowing())
+ {
+ _graphQuerySelectPanelCtrl.syncSelectCols(_tableFramesModel);
+ }
else if(_whereDockHandle.isShowing())
{
_graphQueryWherePanelCtrl.syncWhereCols(_tableFramesModel);
@@ -186,16 +200,18 @@
private void syncResult()
{
- OrderStructure orderStructure = _graphQueryOrderPanelCtrl.syncOrderCols(_tableFramesModel);
+ SelectStructure selS = _graphQuerySelectPanelCtrl.syncSelectCols(_tableFramesModel);
WhereTreeNodeStructure wts = _graphQueryWherePanelCtrl.syncWhereCols(_tableFramesModel);
- _graphQueryResultPanelCtrl.execSQL(new QueryBuilderSQLGenerator(_session).generateSQL(_tableFramesModel, wts, orderStructure));
+ OrderStructure os = _graphQueryOrderPanelCtrl.syncOrderCols(_tableFramesModel);
+ _graphQueryResultPanelCtrl.execSQL(new QueryBuilderSQLGenerator(_session).generateSQL(_tableFramesModel, wts, os, selS));
}
private void syncSql()
{
- OrderStructure orderStructure = _graphQueryOrderPanelCtrl.syncOrderCols(_tableFramesModel);
+ SelectStructure selS = _graphQuerySelectPanelCtrl.syncSelectCols(_tableFramesModel);
WhereTreeNodeStructure wts = _graphQueryWherePanelCtrl.syncWhereCols(_tableFramesModel);
- _graphQuerySQLPanelCtrl.setSQL(new QueryBuilderSQLGenerator(_session).generateSQL(_tableFramesModel, wts, orderStructure));
+ OrderStructure os = _graphQueryOrderPanelCtrl.syncOrderCols(_tableFramesModel);
+ _graphQuerySQLPanelCtrl.setSQL(new QueryBuilderSQLGenerator(_session).generateSQL(_tableFramesModel, wts, os, selS));
}
@@ -218,13 +234,19 @@
_resultDockHandle = new GraphDockHandle(_graphControllerFacade, _graphQueryResultPanelCtrl.getGraphQueryResultPanel(), resHeight);
_graphDockHandleAdmin.add(_resultDockHandle, _btnResult);
+ int selectHeight = Preferences.userRoot().getInt(PREF_KEY_ORDER_DOCK_HEIGHT, 250);
+ _selectDockHandle = new GraphDockHandle(_graphControllerFacade, _graphQuerySelectPanelCtrl.getGraphQueryOrderPanel(), selectHeight);
+ _graphDockHandleAdmin.add(_selectDockHandle, _btnSelect);
+
+
+ int whereHeight = Preferences.userRoot().getInt(PREF_KEY_WHERE_DOCK_HEIGHT, 250);
+ _whereDockHandle = new GraphDockHandle(_graphControllerFacade, _graphQueryWherePanelCtrl.getGraphQueryWherePanel(), whereHeight);
+ _graphDockHandleAdmin.add(_whereDockHandle, _btnWhere);
+
int orderHeight = Preferences.userRoot().getInt(PREF_KEY_ORDER_DOCK_HEIGHT, 250);
_orderDockHandle = new GraphDockHandle(_graphControllerFacade, _graphQueryOrderPanelCtrl.getGraphQueryOrderPanel(), orderHeight);
_graphDockHandleAdmin.add(_orderDockHandle, _btnOrder);
- int whereHeight = Preferences.userRoot().getInt(PREF_KEY_WHERE_DOCK_HEIGHT, 250);
- _whereDockHandle = new GraphDockHandle(_graphControllerFacade, _graphQueryWherePanelCtrl.getGraphQueryWherePanel(), whereHeight);
- _graphDockHandleAdmin.add(_whereDockHandle, _btnWhere);
}
private void onSessionClosing()
@@ -265,4 +287,9 @@
{
return _graphQueryOrderPanelCtrl.getOrderStructure();
}
+
+ public SelectStructureXmlBean getSelectStructure()
+ {
+ return _graphQuerySelectPanelCtrl.getSelectStructure();
+ }
}
Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QueryOrderTableModel.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QueryOrderTableModel.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QueryOrderTableModel.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -7,14 +7,12 @@
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
-import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.*;
-public class QueryOrderTableModel extends DefaultTableModel
+public class QueryOrderTableModel extends SortedColumnsTableModel<OrderCol>
{
private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(QueryOrderTableModel.class);
- private ArrayList<OrderCol> _orderCols = new ArrayList<OrderCol>();
private DefaultTableColumnModel _colModel;
public QueryOrderTableModel(OrderStructureXmlBean orderStructure)
@@ -52,36 +50,24 @@
if(null != orderStructure)
{
- _orderCols.addAll(Arrays.asList(orderStructure.getOrderCols()));
+ addCols(Arrays.asList(orderStructure.getOrderCols()));
}
}
-
@Override
public Object getValueAt(int row, int column)
{
if(0 == column)
{
- return _orderCols.get(row).getQualifiedCol();
+ return getSortedCol(row).getQualifiedCol();
}
else
{
- return _orderCols.get(row).isAscending();
+ return getSortedCol(row).isAscending();
}
}
- @Override
- public int getRowCount()
- {
- if(null == _orderCols)
- {
- // This if is here because the method is called from the base class constructor.
- return 0;
- }
- return _orderCols.size();
- }
-
@Override
public boolean isCellEditable(int row, int column)
{
@@ -95,110 +81,17 @@
return 2;
}
- public void updateOrderCols(ArrayList<OrderCol> newOrderCols)
+ protected void updateCol(OrderCol toBeUpdated, OrderCol update)
{
- ArrayList<OrderCol> toRemove = new ArrayList<OrderCol>();
- ArrayList<OrderCol> toAdd = new ArrayList<OrderCol>();
-
- for (OrderCol newOrderCol : newOrderCols)
- {
- boolean found = false;
- for (OrderCol orderCol : _orderCols)
- {
- if(orderCol.equals(newOrderCol))
- {
- updateCol(orderCol, newOrderCol);
- found = true;
- break;
- }
- }
-
- if(false == found)
- {
- toAdd.add(newOrderCol);
- }
- }
-
- for (OrderCol orderCol : _orderCols)
- {
- boolean found = false;
- for (OrderCol newOrderCol : newOrderCols)
- {
- if(orderCol.equals(newOrderCol))
- {
- updateCol(orderCol, newOrderCol);
- found = true;
- break;
- }
- }
-
- if(false == found)
- {
- toRemove.add(orderCol);
- }
- }
-
- _orderCols.removeAll(toRemove);
- _orderCols.addAll(toAdd);
-
- fireTableDataChanged();
- }
-
- private void updateCol(OrderCol toBeUpdated, OrderCol update)
- {
toBeUpdated.setAscending(update.isAscending());
toBeUpdated.setAggregated(update.isAggregated());
}
+
public TableColumnModel getColumnModel()
{
return _colModel;
}
- public int[] moveUp(int[] selRows)
- {
- for (int i : selRows)
- {
- if (0 == i)
- {
- return selRows;
- }
- }
- int[] newSelRows = new int[selRows.length];
- for (int i = 0; i < selRows.length; ++i)
- {
- OrderCol col = _orderCols.remove(selRows[i]);
- newSelRows[i] = selRows[i] - 1;
- _orderCols.add(newSelRows[i], col);
- }
-
- return newSelRows;
- }
-
- public int[] moveDown(int[] selRows)
- {
- for (int i : selRows)
- {
- if (_orderCols.size() - 1 == i)
- {
- return selRows;
- }
- }
-
- int[] newSelIx = new int[selRows.length];
- for (int i = selRows.length - 1; i >= 0; --i)
- {
- OrderCol col = (OrderCol) _orderCols.remove(selRows[i]);
- newSelIx[i] = selRows[i] + 1;
- _orderCols.add(newSelIx[i], col);
- }
-
- return newSelIx;
- }
-
- public OrderCol[] getOrderCols()
- {
- return _orderCols.toArray(new OrderCol[_orderCols.size()]);
- }
}
Copied: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QuerySelectTableModel.java (from rev 6276, trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QueryOrderTableModel.java)
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QuerySelectTableModel.java (rev 0)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/QuerySelectTableModel.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -0,0 +1,70 @@
+package net.sourceforge.squirrel_sql.plugins.graph.querybuilder;
+
+import net.sourceforge.squirrel_sql.fw.util.StringManager;
+import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
+import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.OrderStructureXmlBean;
+import net.sourceforge.squirrel_sql.plugins.graph.xmlbeans.SelectStructureXmlBean;
+
+import javax.swing.*;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+import java.awt.*;
+import java.util.Arrays;
+
+public class QuerySelectTableModel extends SortedColumnsTableModel<SelectCol>
+{
+ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(QuerySelectTableModel.class);
+
+ private DefaultTableColumnModel _colModel;
+
+ public QuerySelectTableModel(SelectStructureXmlBean selecStructure)
+ {
+ _colModel = new DefaultTableColumnModel();
+
+ TableColumn col;
+
+ col = new TableColumn(0);
+ col.setHeaderValue(s_stringMgr.getString("graph.QueryOrderTableModel.Column"));
+ col.setPreferredWidth(250);
+ _colModel.addColumn(col);
+
+ if(null != selecStructure)
+ {
+ addCols(Arrays.asList(selecStructure.getSelectCols()));
+ }
+ }
+
+ @Override
+ public Object getValueAt(int row, int column)
+ {
+ return getSortedCol(row).getQualifiedCol();
+ }
+
+
+ @Override
+ public boolean isCellEditable(int row, int column)
+ {
+ return false;
+ }
+
+
+ @Override
+ public int getColumnCount()
+ {
+ return 1;
+ }
+
+ protected void updateCol(SelectCol toBeUpdated, SelectCol update)
+ {
+ }
+
+
+ public TableColumnModel getColumnModel()
+ {
+ return _colModel;
+ }
+
+
+}
Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SelectCol.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SelectCol.java (rev 0)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SelectCol.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -0,0 +1,54 @@
+package net.sourceforge.squirrel_sql.plugins.graph.querybuilder;
+
+import net.sourceforge.squirrel_sql.plugins.graph.ColumnInfo;
+
+public class SelectCol implements SortedColumn
+{
+ private String _qualifiedCol;
+
+
+ /**
+ * Needed for XML deserialization.
+ */
+ public SelectCol()
+ {
+ }
+
+ public SelectCol(String simpleTableName, ColumnInfo columnInfo)
+ {
+ _qualifiedCol = simpleTableName + "." + columnInfo.getColumnName();
+
+ }
+
+ public String getQualifiedCol()
+ {
+ return _qualifiedCol;
+ }
+
+
+ /**
+ * Needed for XML deserialization.
+ */
+ public void setQualifiedCol(String qualifiedCol)
+ {
+ _qualifiedCol = qualifiedCol;
+ }
+
+
+ @Override
+ public int hashCode()
+ {
+ return _qualifiedCol.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if(false == obj instanceof SelectCol )
+ {
+ return false;
+ }
+
+ return _qualifiedCol.equals(((SelectCol)obj)._qualifiedCol);
+ }
+}
Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SelectStructure.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SelectStructure.java (rev 0)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SelectStructure.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -0,0 +1,18 @@
+package net.sourceforge.squirrel_sql.plugins.graph.querybuilder;
+
+import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.sqlgen.SelectClauseRes;
+
+public class SelectStructure
+{
+ private SelectCol[] _selectCols;
+
+ public SelectStructure(SelectCol[] selectCols)
+ {
+ _selectCols = selectCols;
+ }
+
+ public SelectCol[] getSelectCols()
+ {
+ return _selectCols;
+ }
+}
Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumn.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumn.java (rev 0)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumn.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -0,0 +1,7 @@
+package net.sourceforge.squirrel_sql.plugins.graph.querybuilder;
+
+import net.sourceforge.squirrel_sql.plugins.graph.ColumnInfo;
+
+public interface SortedColumn
+{
+}
Copied: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsOrderPanel.java (from rev 6276, trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/GraphQueryOrderPanel.java)
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsOrderPanel.java (rev 0)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsOrderPanel.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -0,0 +1,57 @@
+package net.sourceforge.squirrel_sql.plugins.graph.querybuilder;
+
+import net.sourceforge.squirrel_sql.fw.util.StringManager;
+import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
+import net.sourceforge.squirrel_sql.plugins.graph.HideDockButtonHandler;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class SortedColumnsOrderPanel extends JPanel
+{
+ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(SortedColumnsOrderPanel.class);
+
+ JTable tblOrder;
+ JButton btnUp;
+ JButton btnDown;
+
+ public SortedColumnsOrderPanel(HideDockButtonHandler hideDockButtonHandler, String labelText)
+ {
+ setLayout(new BorderLayout());
+ add(createButtonPanel(hideDockButtonHandler, labelText), BorderLayout.NORTH);
+
+ tblOrder = new JTable();
+ tblOrder.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ tblOrder.getTableHeader().setResizingAllowed(true);
+ tblOrder.getTableHeader().setReorderingAllowed(false);
+ tblOrder.setAutoCreateColumnsFromModel(false);
+ tblOrder.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+ add(new JScrollPane(tblOrder), BorderLayout.CENTER);
+ }
+
+ private JPanel createButtonPanel(HideDockButtonHandler hideDockButtonHandler, String labelText)
+ {
+ JPanel ret = new JPanel(new GridBagLayout());
+
+ GridBagConstraints gbc;
+
+ gbc = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
+ ret.add(hideDockButtonHandler.getHideButton(),gbc);
+
+ gbc = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
+ ret.add(new JLabel(labelText),gbc);
+
+ gbc = new GridBagConstraints(2,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
+ btnUp = new JButton(s_stringMgr.getString("graph.GraphQueryOrderPanel.moveUp"));
+ ret.add(btnUp,gbc);
+
+ gbc = new GridBagConstraints(3,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
+ btnDown = new JButton(s_stringMgr.getString("graph.GraphQueryOrderPanel.moveDown"));
+ ret.add(btnDown,gbc);
+
+ gbc = new GridBagConstraints(4,0,1,1,1,1,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5,5,5,5),0,0);
+ ret.add(new JPanel(), gbc);
+
+ return ret;
+ }
+}
Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsPanelCtrl.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsPanelCtrl.java (rev 0)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsPanelCtrl.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -0,0 +1,111 @@
+package net.sourceforge.squirrel_sql.plugins.graph.querybuilder;
+
+import net.sourceforge.squirrel_sql.plugins.graph.ColumnInfo;
+import net.sourceforge.squirrel_sql.plugins.graph.HideDockButtonHandler;
+import net.sourceforge.squirrel_sql.plugins.graph.TableFrameController;
+import net.sourceforge.squirrel_sql.plugins.graph.TableFramesModel;
+
+import javax.swing.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+
+public class SortedColumnsPanelCtrl
+{
+
+ private SortedColumnsOrderPanel _panel;
+
+ public SortedColumnsPanelCtrl(HideDockButtonHandler hideDockButtonHandler, SortedColumnsTableModel sortedColumnsTableModel, String labelText)
+ {
+ _panel = new SortedColumnsOrderPanel(hideDockButtonHandler, labelText);
+ SortedColumnsTableModel tableModel = sortedColumnsTableModel;
+ _panel.tblOrder.setModel(tableModel);
+ _panel.tblOrder.setColumnModel(tableModel.getColumnModel());
+
+ _panel.btnUp.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ onMoveUp();
+ }
+ });
+
+ _panel.btnDown.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ onMoveDown();
+ }
+ });
+ }
+
+ public JPanel getSortedColumnsPanel()
+ {
+ return _panel;
+ }
+
+ public SortedColumn[] syncSortedColumns(Class<? extends SortedColumn> clazz, ArrayList<SortedColumn> sortedCols)
+ {
+
+ SortedColumnsTableModel tableModel = (SortedColumnsTableModel) _panel.tblOrder.getModel();
+ tableModel.updateOrderCols(sortedCols);
+ return tableModel.getSortedCols(clazz);
+ }
+
+ private void onMoveUp()
+ {
+ int[] selRows = _panel.tblOrder.getSelectedRows();
+
+ if (null == selRows || 0 == selRows.length)
+ {
+ return;
+ }
+
+ SortedColumnsTableModel model = (SortedColumnsTableModel) _panel.tblOrder.getModel();
+ int[] newSelRows = model.moveUp(selRows);
+
+
+ DefaultListSelectionModel selectionModel = (DefaultListSelectionModel) _panel.tblOrder.getSelectionModel();
+ selectionModel.clearSelection();
+
+ for (int newSelRow : newSelRows)
+ {
+ selectionModel.addSelectionInterval(newSelRow, newSelRow);
+ }
+ _panel.tblOrder.scrollRectToVisible(_panel.tblOrder.getCellRect(newSelRows[0], 0, false));
+ }
+
+ private void onMoveDown()
+ {
+ int[] selRows = _panel.tblOrder.getSelectedRows();
+
+ if (null == selRows || 0 == selRows.length)
+ {
+ return;
+ }
+
+ SortedColumnsTableModel model = (SortedColumnsTableModel) _panel.tblOrder.getModel();
+ int[] newSelRows = model.moveDown(selRows);
+
+
+
+ DefaultListSelectionModel selectionModel = (DefaultListSelectionModel) _panel.tblOrder.getSelectionModel();
+ selectionModel.clearSelection();
+
+ for (int newSelRow : newSelRows)
+ {
+ selectionModel.addSelectionInterval(newSelRow, newSelRow);
+ }
+ _panel.tblOrder.scrollRectToVisible(_panel.tblOrder.getCellRect(newSelRows[newSelRows.length-1], 0, false));
+
+ }
+
+ public SortedColumn[] getSortedColumns(Class<? extends SortedColumn> clazz)
+ {
+ SortedColumnsTableModel tableModel = (SortedColumnsTableModel) _panel.tblOrder.getModel();
+ return tableModel.getSortedCols(clazz);
+ }
+
+}
Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsTableModel.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsTableModel.java (rev 0)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/SortedColumnsTableModel.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -0,0 +1,139 @@
+package net.sourceforge.squirrel_sql.plugins.graph.querybuilder;
+
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumnModel;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public abstract class SortedColumnsTableModel <T extends SortedColumn> extends DefaultTableModel
+{
+
+ private ArrayList<T> _sortedCols = new ArrayList<T>();
+
+
+ public void updateOrderCols(ArrayList<T> newSortedCols)
+ {
+ ArrayList<T> toRemove = new ArrayList<T>();
+ ArrayList<T> toAdd = new ArrayList<T>();
+
+ for (T newSortedCol : newSortedCols)
+ {
+ boolean found = false;
+ for (T sortedCol : _sortedCols)
+ {
+ if(sortedCol.equals(newSortedCol))
+ {
+ updateCol(sortedCol, newSortedCol);
+ found = true;
+ break;
+ }
+ }
+
+ if(false == found)
+ {
+ toAdd.add(newSortedCol);
+ }
+ }
+
+ for (T sortedCol : _sortedCols)
+ {
+ boolean found = false;
+ for (T newOrderCol : newSortedCols)
+ {
+ if(sortedCol.equals(newOrderCol))
+ {
+ updateCol(sortedCol, newOrderCol);
+ found = true;
+ break;
+ }
+ }
+
+ if(false == found)
+ {
+ toRemove.add(sortedCol);
+ }
+ }
+
+ _sortedCols.removeAll(toRemove);
+ _sortedCols.addAll(toAdd);
+
+ fireTableDataChanged();
+ }
+
+ protected abstract void updateCol(T toBeUpdated, T update);
+
+
+ public int[] moveUp(int[] selRows)
+ {
+ for (int i : selRows)
+ {
+ if (0 == i)
+ {
+ return selRows;
+ }
+ }
+
+ int[] newSelRows = new int[selRows.length];
+ for (int i = 0; i < selRows.length; ++i)
+ {
+ T col = _sortedCols.remove(selRows[i]);
+ newSelRows[i] = selRows[i] - 1;
+ _sortedCols.add(newSelRows[i], col);
+ }
+
+ return newSelRows;
+ }
+
+ public int[] moveDown(int[] selRows)
+ {
+ for (int i : selRows)
+ {
+ if (_sortedCols.size() - 1 == i)
+ {
+ return selRows;
+ }
+ }
+
+ int[] newSelIx = new int[selRows.length];
+ for (int i = selRows.length - 1; i >= 0; --i)
+ {
+ T col = _sortedCols.remove(selRows[i]);
+ newSelIx[i] = selRows[i] + 1;
+ _sortedCols.add(newSelIx[i], col);
+ }
+
+ return newSelIx;
+ }
+
+ public T[] getSortedCols(Class<? extends T> c)
+ {
+ return _sortedCols.toArray((T[])Array.newInstance(c,0));
+ }
+
+ protected void addCols(List<T> orderCols)
+ {
+ _sortedCols.addAll(orderCols);
+ }
+
+ protected T getSortedCol(int ix)
+ {
+ return _sortedCols.get(ix);
+ }
+
+ @Override
+ public int getRowCount()
+ {
+ if(null == _sortedCols)
+ {
+ // This if is here because the method is called from the base class constructor.
+ return 0;
+ }
+
+ return _sortedCols.size();
+ }
+
+
+ public abstract TableColumnModel getColumnModel();
+}
Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/sqlgen/QueryBuilderSQLGenerator.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/sqlgen/QueryBuilderSQLGenerator.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/sqlgen/QueryBuilderSQLGenerator.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -6,6 +6,7 @@
import net.sourceforge.squirrel_sql.plugins.graph.TableFramesModel;
import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.OrderCol;
import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.OrderStructure;
+import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.SelectStructure;
import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.WhereTreeNodeStructure;
public class QueryBuilderSQLGenerator
@@ -17,7 +18,7 @@
_session = session;
}
- public String generateSQL(TableFramesModel tableFramesModel, WhereTreeNodeStructure wts, OrderStructure orderStructure)
+ public String generateSQL(TableFramesModel tableFramesModel, WhereTreeNodeStructure wts, OrderStructure orderStructure, SelectStructure selS)
{
FromClauseRes fromClause = new FromClauseGenerator().createFrom(tableFramesModel);
@@ -27,7 +28,7 @@
}
- SelectClauseRes selectClause = new SelectClauseGenerator().createSelectClause(fromClause);
+ SelectClauseRes selectClause = new SelectClauseGenerator().createSelectClause(fromClause, selS);
if(null == selectClause)
{
Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/sqlgen/SelectClauseGenerator.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/sqlgen/SelectClauseGenerator.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/querybuilder/sqlgen/SelectClauseGenerator.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -3,22 +3,22 @@
import net.sourceforge.squirrel_sql.plugins.graph.AggregateFunctions;
import net.sourceforge.squirrel_sql.plugins.graph.ColumnInfo;
import net.sourceforge.squirrel_sql.plugins.graph.TableFrameController;
+import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.SelectCol;
+import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.SelectStructure;
import java.util.ArrayList;
+import java.util.HashMap;
public class SelectClauseGenerator
{
- public SelectClauseRes createSelectClause(FromClauseRes fromClause)
+ public SelectClauseRes createSelectClause(FromClauseRes fromClause, SelectStructure selS)
{
- StringBuffer select = new StringBuffer("SELECT ");
- StringBuffer groupBy = new StringBuffer("GROUP BY ");
-
boolean colAdded = false;
boolean hasAggFct = false;
boolean groupByHasCols = false;
- ArrayList<String> qualifiedColsOrderedAsTheyAppearInSelect = new ArrayList<String>();
-
+ HashMap<String, String> selectFieldsByQualifiedCol = new HashMap<String, String>();
+ HashMap<String, String> groupByFieldsByQualifiedCol = new HashMap<String, String>();
for (TableFrameController tfc : fromClause.getTables())
{
for (ColumnInfo columnInfo : tfc.getColumnInfos())
@@ -31,17 +31,15 @@
if (AggregateFunctions.NONE == af)
{
- String s = qualifiedCol + ",";
- select.append(s);
- groupBy.append(s);
+ selectFieldsByQualifiedCol.put(qualifiedCol, qualifiedCol);
+ groupByFieldsByQualifiedCol.put(qualifiedCol, qualifiedCol);
groupByHasCols = true;
}
else
{
- select.append(af.getSQL() + "(" + qualifiedCol + "),");
+ selectFieldsByQualifiedCol.put(qualifiedCol, af.getSQL() + "(" + qualifiedCol + ")");
hasAggFct = true;
}
- qualifiedColsOrderedAsTheyAppearInSelect.add(qualifiedCol);
colAdded = true;
}
}
@@ -52,16 +50,49 @@
return null;
}
- select.setLength(select.length() - 1); // cut off the last comma.
+ ArrayList<String> qualifiedColsOrderedAsTheyAppearInSelect = new ArrayList<String>();
+ StringBuffer selectClause = new StringBuffer("SELECT ");
+ StringBuffer groupByClause = new StringBuffer("GROUP BY ");
+
+ for (SelectCol selectCol : selS.getSelectCols())
+ {
+ String selectField = selectFieldsByQualifiedCol.remove(selectCol.getQualifiedCol());
+
+ if (null != selectField)
+ {
+ selectClause.append(selectField).append(",");
+ }
+ qualifiedColsOrderedAsTheyAppearInSelect.add(selectCol.getQualifiedCol());
+
+ String groupByField = groupByFieldsByQualifiedCol.remove(selectCol.getQualifiedCol());
+ if (null != groupByField)
+ {
+ groupByClause.append(groupByField).append(",");
+ }
+ }
+
+
+ if(0 < selectFieldsByQualifiedCol.size())
+ {
+ throw new IllegalStateException("Not all select fields appeard in SelectStructure");
+ }
+
+ if(0 < groupByFieldsByQualifiedCol.size())
+ {
+ throw new IllegalStateException("Not all group by fields appeard in SelectStructure");
+ }
+
+ selectClause.setLength(selectClause.length() - 1); // cut off the last comma.
+
if(hasAggFct && groupByHasCols)
{
- groupBy.setLength(groupBy.length() - 1); // cut off the last comma.
- return new SelectClauseRes(select, groupBy, qualifiedColsOrderedAsTheyAppearInSelect);
+ groupByClause.setLength(groupByClause.length() - 1); // cut off the last comma.
+ return new SelectClauseRes(selectClause, groupByClause, qualifiedColsOrderedAsTheyAppearInSelect);
}
else
{
- return new SelectClauseRes(select, qualifiedColsOrderedAsTheyAppearInSelect);
+ return new SelectClauseRes(selectClause, qualifiedColsOrderedAsTheyAppearInSelect);
}
}
}
Modified: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/GraphControllerXmlBean.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/GraphControllerXmlBean.java 2011-06-01 19:01:24 UTC (rev 6283)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/GraphControllerXmlBean.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -16,6 +16,7 @@
private boolean _32Converted;
private WhereTreeNodeStructure _whereTreeNodeStructure;
private OrderStructureXmlBean _orderStructure;
+ private SelectStructureXmlBean _selectStructure;
public String getTitle()
@@ -127,4 +128,15 @@
{
return _orderStructure;
}
+
+
+ public SelectStructureXmlBean getSelectStructure()
+ {
+ return _selectStructure;
+ }
+
+ public void setSelectStructure(SelectStructureXmlBean selectStructure)
+ {
+ _selectStructure = selectStructure;
+ }
}
Added: trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/SelectStructureXmlBean.java
===================================================================
--- trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/SelectStructureXmlBean.java (rev 0)
+++ trunk/sql12/plugins/graph/src/main/java/net/sourceforge/squirrel_sql/plugins/graph/xmlbeans/SelectStructureXmlBean.java 2011-06-01 21:14:38 UTC (rev 6284)
@@ -0,0 +1,33 @@
+package net.sourceforge.squirrel_sql.plugins.graph.xmlbeans;
+
+import net.sourceforge.squirrel_sql.plugins.graph.querybuilder.SelectCol;
+
+p...
[truncated message content] |