Revision: 5904
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=5904&view=rev
Author: gerdwagner
Date: 2010-09-30 21:12:27 +0000 (Thu, 30 Sep 2010)
Log Message:
-----------
Hibernate Plugin:
- New handling of limiting object count for HQL queries.
- Hibernate session can now be started in an external process.
This can keep SQuirreL from running into memory problems when working with the Hibernate Plugin.
See Hibernate configuration panel for details.
Modified Paths:
--------------
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HQLPanelController.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HibernateConnectionFactory.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HibernatePluginResources.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/configuration/ProcessDetails.java
trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/HibernatePluginResources.properties
trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/I18NStrings.properties
Added Paths:
-----------
trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/images/run.gif
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HQLPanelController.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HQLPanelController.java 2010-09-28 22:48:07 UTC (rev 5903)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HQLPanelController.java 2010-09-30 21:12:27 UTC (rev 5904)
@@ -25,14 +25,16 @@
private IHibernateTabController _hibernateTabController;
private ISession _sess;
+ private HibernatePluginResources _resource;
private HibernateConnection _con;
- private AbstractAction _convertToSQL;
+ private AbstractAction _runHQL;
private HQLEntryPanelManager _hqlEntryPanelManager;
public HQLPanelController(IHibernateTabController hibernateTabController, ISession sess, HibernatePluginResources resource)
{
_hibernateTabController = hibernateTabController;
_sess = sess;
+ _resource = resource;
_hqlEntryPanelManager = new HQLEntryPanelManager(_sess, resource, hibernateTabController.getHibernateConnectionProvider());
@@ -40,34 +42,38 @@
void initActions()
{
- _convertToSQL = new AbstractAction()
+ _runHQL = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
- onConvertToSQL();
+ onRunHQL();
}
};
- // i18n[hibernate.hqlToSqlLong=HQL to SQL]
- _convertToSQL.putValue(AbstractAction.NAME, s_stringMgr.getString("hibernate.hqlToSqlLong"));
- // i18n[hibernate.hqlToSqlShort=Convert HQL to SQL (ctrl + enter)]
- _convertToSQL.putValue(AbstractAction.SHORT_DESCRIPTION, s_stringMgr.getString("hibernate.hqlToSqlShort"));
+ _runHQL.putValue(AbstractAction.SMALL_ICON, _resource.getIcon(HibernatePluginResources.IKeys.RUN_IMAGE));
- _convertToSQL.setEnabled(false);
+ // i18n[hibernate.hqlToSqlLong=Run HQL]
+ _runHQL.putValue(AbstractAction.NAME, s_stringMgr.getString("hibernate.hqlToSqlLong"));
- _hibernateTabController.addToToolbar(_convertToSQL);
+ // i18n[hibernate.hqlToSqlShort=Run HQL (ctrl + enter)]
+ _runHQL.putValue(AbstractAction.SHORT_DESCRIPTION, s_stringMgr.getString("hibernate.hqlToSqlShort"));
+
+ _runHQL.setEnabled(false);
+
+ _hibernateTabController.addToToolbar(_runHQL);
+
KeyStroke ctrlEnter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, Event.CTRL_MASK);
- _hqlEntryPanelManager.registerKeyboardAction(_convertToSQL, ctrlEnter);
+ _hqlEntryPanelManager.registerKeyboardAction(_runHQL, ctrlEnter);
}
- private void onConvertToSQL()
+ private void onRunHQL()
{
try
{
- if (false == _convertToSQL.isEnabled())
+ if (false == _runHQL.isEnabled())
{
return;
}
@@ -158,11 +164,11 @@
if(null == _con)
{
- _convertToSQL.setEnabled(false);
+ _runHQL.setEnabled(false);
}
else
{
- _convertToSQL.setEnabled(true);
+ _runHQL.setEnabled(true);
}
}
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HibernateConnectionFactory.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HibernateConnectionFactory.java 2010-09-28 22:48:07 UTC (rev 5903)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HibernateConnectionFactory.java 2010-09-30 21:12:27 UTC (rev 5904)
@@ -9,6 +9,7 @@
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
+import java.util.ArrayList;
public class HibernateConnectionFactory
{
@@ -94,7 +95,7 @@
throws IOException
{
String command = cfg.getCommand().trim();
- Runtime.getRuntime().exec(command);
+ Runtime.getRuntime().exec(toCommandArray(command));
}
private static ServerMain attachToProcess(HibernateConfiguration cfg, IMessageHandler mh, boolean silent)
@@ -129,4 +130,68 @@
}
return stub;
}
+
+
+
+ private static String[] toCommandArray(String cmd)
+ {
+ ArrayList<String> ret = new ArrayList<String>();
+
+ boolean inQuotes = false;
+
+ int startPos = 0;
+ for(int i=0; i < cmd.length(); ++i)
+ {
+ char c = cmd.charAt(i);
+
+ if('"' == c)
+ {
+ inQuotes = !inQuotes;
+ }
+
+ if(inQuotes)
+ {
+ continue;
+ }
+
+ if(Character.isWhitespace(c))
+ {
+ String arrItem = cmd.substring(startPos, i).trim();
+ if (0 < arrItem.length())
+ {
+ ret.add(removeLeadingAndTrailingQuotes(arrItem));
+ }
+ startPos = i;
+ }
+ }
+
+ if(startPos < cmd.length() - 1)
+ {
+ String arrItem = cmd.substring(startPos, cmd.length()).trim();
+ if (0 < arrItem.length())
+ {
+ ret.add(removeLeadingAndTrailingQuotes(arrItem));
+ }
+ }
+
+ return ret.toArray(new String[ret.size()]);
+ }
+
+ private static String removeLeadingAndTrailingQuotes(String s)
+ {
+ String ret = s;
+
+ if(ret.startsWith("\""))
+ {
+ ret = ret.substring(1);
+ }
+
+ if(ret.endsWith("\""))
+ {
+ ret = ret.substring(0, ret.length()-1);
+ }
+
+ return ret;
+ }
+
}
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HibernatePluginResources.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HibernatePluginResources.java 2010-09-28 22:48:07 UTC (rev 5903)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/HibernatePluginResources.java 2010-09-30 21:12:27 UTC (rev 5904)
@@ -20,6 +20,7 @@
String HIBERNATE_IMAGE = "hibernate";
String PROPERTY_IMAGE = "property";
String CLOSE_IMAGE = "close";
+ String RUN_IMAGE = "run";
}
}
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/configuration/ProcessDetails.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/configuration/ProcessDetails.java 2010-09-28 22:48:07 UTC (rev 5903)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/configuration/ProcessDetails.java 2010-09-30 21:12:27 UTC (rev 5904)
@@ -41,19 +41,26 @@
private String createWindowsCommand(HibernatePlugin plugin)
{
- String java = System.getProperty("java.home") + File.separator + "bin" + File.separator + "javaw";
- String command = "" + java + " -cp " + plugin.getPluginJarFilePath() + File.pathSeparator + " " + ServerMainImpl.class.getName() + " " + ServerMain.PORT_PARAM_PREFIX + _port;
+ String java = "\"" + System.getProperty("java.home") + File.separator + "bin" + File.separator + "java\"";
+ String command = java + " -cp " + getPluginJarFilePath(plugin) + " " + ServerMainImpl.class.getName() + " " + ServerMain.PORT_PARAM_PREFIX + _port;
return command;
}
+
private String createLinuxCommand(HibernatePlugin plugin)
{
- String java = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
- String command = "" + java + " -cp " + plugin.getPluginJarFilePath() + File.pathSeparator + " " + ServerMainImpl.class.getName() + " " + ServerMain.PORT_PARAM_PREFIX + _port;
+ String java = "\"" + System.getProperty("java.home") + File.separator + "bin" + File.separator + "java\"";
+ String command = "" + java + " -cp " + getPluginJarFilePath(plugin) + " " + ServerMainImpl.class.getName() + " " + ServerMain.PORT_PARAM_PREFIX + _port;
return command;
}
+ private String getPluginJarFilePath(HibernatePlugin plugin)
+ {
+ return "\"" + plugin.getPluginJarFilePath() + "\"";
+ }
+
+
public void apply(HibernateConfiguration cfg)
{
cfg.setCommand(_command);
Modified: trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/HibernatePluginResources.properties
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/HibernatePluginResources.properties 2010-09-28 22:48:07 UTC (rev 5903)
+++ trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/HibernatePluginResources.properties 2010-09-30 21:12:27 UTC (rev 5904)
@@ -16,6 +16,7 @@
hibernate.image=hibernate.gif
property.image=property.gif
close.image=close.gif
+run.image=run.gif
########
# Configuration information for Actions.
Modified: trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/I18NStrings.properties
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/I18NStrings.properties 2010-09-28 22:48:07 UTC (rev 5903)
+++ trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/I18NStrings.properties 2010-09-30 21:12:27 UTC (rev 5904)
@@ -8,9 +8,9 @@
SQLPanelController.hqlToSqlSuccess=Generated {0} SQL(s) in {1} milliseconds.
-hibernate.hqlToSqlLong=HQL to SQL
+hibernate.hqlToSqlLong=Run HQL
-hibernate.hqlToSqlShort=Convert HQL to SQL (ctrl + enter)
+hibernate.hqlToSqlShort=Run HQL (ctrl + enter)
hibernate.HQLTabPanel.connect=Connect/disconnect selected configuration
Copied: trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/images/run.gif (from rev 5893, trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/images/eclipse/active/run_exc.gif)
===================================================================
(Binary files differ)
Property changes on: trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/images/run.gif
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ application/octet-stream
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|