Thread: [Squirrel-sql-commits] sql12/plugins/mssql/src/net/sourceforge/squirrel_sql/plugins/mssql/action Gen
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
Update of /cvsroot/squirrel-sql/sql12/plugins/mssql/src/net/sourceforge/squirrel_sql/plugins/mssql/action In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18097/plugins/mssql/src/net/sourceforge/squirrel_sql/plugins/mssql/action Added Files: GenerateSqlAction.java GenerateSqlCommand.java IndexDefragAction.java IndexDefragCommand.java ScriptProcedureAction.java ScriptProcedureCommand.java ShowStatisticsAction.java ShowStatisticsCommand.java ShrinkDatabaseAction.java ShrinkDatabaseCommand.java TruncateLogAction.java TruncateLogCommand.java UpdateStatisticsAction.java UpdateStatisticsCommand.java Log Message: First upload of Ryan Walbergs MSSQL plugin --- NEW FILE: IndexDefragAction.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.awt.event.ActionEvent; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.action.SquirrelAction; import net.sourceforge.squirrel_sql.client.plugin.IPlugin; import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.action.ISessionAction; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.ObjectTreeNode; import net.sourceforge.squirrel_sql.fw.gui.Dialogs; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; import net.sourceforge.squirrel_sql.fw.util.Resources; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class IndexDefragAction extends SquirrelAction implements ISessionAction { private ISession _session; private final MssqlPlugin _plugin; private final ITableInfo _tableInfo; private final String _indexName; public IndexDefragAction(IApplication app, Resources rsrc, MssqlPlugin plugin, ITableInfo tableInfo, String indexName) { super(app, rsrc); /* the constructor above sets this from resources, but we'll override it with * the name of the index. */ putValue(javax.swing.Action.NAME,indexName); _plugin = plugin; _tableInfo = tableInfo; _indexName = indexName; } public void actionPerformed(ActionEvent evt) { if (_session != null) new IndexDefragCommand(_session, _plugin, _tableInfo, _indexName).execute(); } public void setSession(ISession session) { _session = session; } } --- NEW FILE: GenerateSqlAction.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.awt.event.ActionEvent; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.action.SquirrelAction; import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.action.ISessionAction; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; import net.sourceforge.squirrel_sql.fw.util.Resources; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class GenerateSqlAction extends SquirrelAction implements ISessionAction { private ISession _session; private final MssqlPlugin _plugin; public GenerateSqlAction(IApplication app, Resources rsrc, MssqlPlugin plugin) { super(app, rsrc); _plugin = plugin; } public void actionPerformed(ActionEvent evt) { if (_session != null) { IObjectTreeAPI treeAPI = _session.getObjectTreeAPI(_plugin); IDatabaseObjectInfo[] dbObjs = treeAPI.getSelectedDatabaseObjects(); try { new GenerateSqlCommand(_session, _plugin, dbObjs).execute(); } catch (Throwable th) { _session.getMessageHandler().showErrorMessage(th); } } } public void setSession(ISession session) { _session = session; } } --- NEW FILE: UpdateStatisticsCommand.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; import net.sourceforge.squirrel_sql.fw.util.ICommand; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class UpdateStatisticsCommand implements ICommand { private ISession _session; private final MssqlPlugin _plugin; public UpdateStatisticsCommand(ISession session, MssqlPlugin plugin) { super(); if (session == null) throw new IllegalArgumentException("ISession == null"); _session = session; _plugin = plugin; } public void execute() { final String sqlSep = _session.getProperties().getSQLStatementSeparator(); final IObjectTreeAPI api = _session.getObjectTreeAPI(_plugin); final IDatabaseObjectInfo[] dbObjs = api.getSelectedDatabaseObjects(); // Get the names of all the selected tables in a comma separated list, final StringBuffer cmd = new StringBuffer(512); for (int i = 0; i < dbObjs.length; ++i) { cmd.append("UPDATE STATISTICS " + dbObjs[i].getSimpleName() + " WITH FULLSCAN, ALL"); cmd.append(" " + sqlSep + " \n"); } if (cmd != null && cmd.length() > 0) { _session.getSQLPanelAPI(_plugin).appendSQLScript(cmd.toString(), true); _session.getSQLPanelAPI(_plugin).executeCurrentSQL(); _session.selectMainTab(ISession.IMainPanelTabIndexes.SQL_TAB); } } } --- NEW FILE: ShrinkDatabaseCommand.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.util.ICommand; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class ShrinkDatabaseCommand implements ICommand { private ISession _session; private final MssqlPlugin _plugin; private final IDatabaseObjectInfo[] _dbs; public ShrinkDatabaseCommand(ISession session, MssqlPlugin plugin, IDatabaseObjectInfo[] dbs) { super(); if (session == null) throw new IllegalArgumentException("ISession == null"); if (dbs == null) throw new IllegalArgumentException("Databases array is null"); _session = session; _plugin = plugin; _dbs = dbs; } public void execute() { if (_dbs.length > 0) { final String sqlSep = _session.getProperties().getSQLStatementSeparator(); final StringBuffer buf = new StringBuffer(); for (int i = 0; i < _dbs.length; i++) { final IDatabaseObjectInfo ti = _dbs[i]; buf.append("DBCC SHRINKDATABASE(" + ti.getSimpleName() + ",TRUNCATEONLY)"); buf.append(" " + sqlSep + " \n"); } _session.getSQLPanelAPI(_plugin).appendSQLScript(buf.toString(), true); _session.getSQLPanelAPI(_plugin).executeCurrentSQL(); } } } --- NEW FILE: ShowStatisticsCommand.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; import net.sourceforge.squirrel_sql.fw.util.ICommand; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class ShowStatisticsCommand implements ICommand { private ISession _session; private final MssqlPlugin _plugin; private final ITableInfo _tableInfo; private final String _indexName; public ShowStatisticsCommand(ISession session, MssqlPlugin plugin, ITableInfo tableInfo, String indexName) { super(); if (session == null) throw new IllegalArgumentException("ISession == null"); if (tableInfo == null) throw new IllegalArgumentException("ITableInfo == null"); _session = session; _plugin = plugin; _tableInfo = tableInfo; _indexName = indexName; } public void execute() { StringBuffer sqlBuffer = new StringBuffer(); final String sqlSep = _session.getProperties().getSQLStatementSeparator(); sqlBuffer.append("DBCC SHOW_STATISTICS(" + _tableInfo.getSimpleName() + "," + _indexName + ")"); sqlBuffer.append(" " + sqlSep + " \n"); _session.getSQLPanelAPI(_plugin).appendSQLScript(sqlBuffer.toString(), true); _session.getSQLPanelAPI(_plugin).executeCurrentSQL(); _session.selectMainTab(ISession.IMainPanelTabIndexes.SQL_TAB); } } --- NEW FILE: ScriptProcedureAction.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.awt.event.ActionEvent; import java.util.ArrayList; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.action.SquirrelAction; import net.sourceforge.squirrel_sql.client.plugin.IPlugin; import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.action.ISessionAction; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.ObjectTreeNode; import net.sourceforge.squirrel_sql.fw.gui.Dialogs; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.util.Resources; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class ScriptProcedureAction extends SquirrelAction implements ISessionAction { private ISession _session; private final MssqlPlugin _plugin; public ScriptProcedureAction(IApplication app, Resources rsrc, MssqlPlugin plugin) { super(app, rsrc); _plugin = plugin; } public void actionPerformed(ActionEvent evt) { if (_session != null) { IPlugin plugin = _session.getApplication().getDummyAppPlugin(); IObjectTreeAPI treeAPI = _session.getObjectTreeAPI(plugin); final IDatabaseObjectInfo[] dbObjs = treeAPI.getSelectedDatabaseObjects(); if (dbObjs.length > 0) { try { new ScriptProcedureCommand(_session, _plugin, dbObjs).execute(); } catch (Throwable th) { _session.getMessageHandler().showErrorMessage(th); } } } } public void setSession(ISession session) { _session = session; } } --- NEW FILE: TruncateLogCommand.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.util.ICommand; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class TruncateLogCommand implements ICommand { private ISession _session; private final MssqlPlugin _plugin; private final IDatabaseObjectInfo[] _dbs; public TruncateLogCommand(ISession session, MssqlPlugin plugin, IDatabaseObjectInfo[] dbs) { super(); if (session == null) throw new IllegalArgumentException("ISession == null"); if (dbs == null) throw new IllegalArgumentException("Databases array is null"); _session = session; _plugin = plugin; _dbs = dbs; } public void execute() { if (_dbs.length > 0) { final String sqlSep = _session.getProperties().getSQLStatementSeparator(); final StringBuffer buf = new StringBuffer(); for (int i = 0; i < _dbs.length; i++) { final IDatabaseObjectInfo ti = _dbs[i]; buf.append("BACKUP LOG " + ti.getSimpleName() + " WITH TRUNCATE_ONLY"); buf.append(" " + sqlSep + " \n"); } _session.getSQLPanelAPI(_plugin).appendSQLScript(buf.toString(), true); _session.getSQLPanelAPI(_plugin).executeCurrentSQL(); } } } --- NEW FILE: ShowStatisticsAction.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.awt.event.ActionEvent; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.action.SquirrelAction; import net.sourceforge.squirrel_sql.client.plugin.IPlugin; import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.action.ISessionAction; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.ObjectTreeNode; import net.sourceforge.squirrel_sql.fw.gui.Dialogs; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; import net.sourceforge.squirrel_sql.fw.util.Resources; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class ShowStatisticsAction extends SquirrelAction implements ISessionAction { private ISession _session; private final MssqlPlugin _plugin; private final ITableInfo _tableInfo; private final String _indexName; public ShowStatisticsAction(IApplication app, Resources rsrc, MssqlPlugin plugin, ITableInfo tableInfo, String indexName) { super(app, rsrc); /* the constructor above sets this from resources, but we'll override it with * the name of the index. */ putValue(javax.swing.Action.NAME,indexName); _plugin = plugin; _tableInfo = tableInfo; _indexName = indexName; } public void actionPerformed(ActionEvent evt) { if (_session != null) new ShowStatisticsCommand(_session, _plugin, _tableInfo, _indexName).execute(); } public void setSession(ISession session) { _session = session; } } --- NEW FILE: ScriptProcedureCommand.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.WrappedSQLException; import net.sourceforge.squirrel_sql.fw.util.BaseException; import net.sourceforge.squirrel_sql.fw.util.ICommand; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; import net.sourceforge.squirrel_sql.plugins.mssql.util.MssqlIntrospector; public class ScriptProcedureCommand implements ICommand { private ISession _session; private final MssqlPlugin _plugin; private final IDatabaseObjectInfo[] _dbObjs; public ScriptProcedureCommand(ISession session, MssqlPlugin plugin, IDatabaseObjectInfo[] dbObjs) { super(); if (session == null) throw new IllegalArgumentException("ISession == null"); if (dbObjs == null) throw new IllegalArgumentException("IDatabaseObjectInfo array is null"); _session = session; _plugin = plugin; _dbObjs = dbObjs; } public void execute() throws BaseException { try { if (_dbObjs.length > 0) { Connection conn = _session.getSQLConnection().getConnection(); final String sqlSep = _session.getProperties().getSQLStatementSeparator(); final StringBuffer buf = new StringBuffer(); for (int i = 0; i < _dbObjs.length; i++) { final IDatabaseObjectInfo ti = _dbObjs[i]; /* TODO: what I really want to do here is get the SQL script and replace * "CREATE PROCEDURE" with "ALTER PROCEDURE", then put that in the SQL pane * and *NOT* execute it. */ /* NOTE: a procedure may also be a UDF! */ if (!conn.getCatalog().equals(ti.getCatalogName())) conn.setCatalog(ti.getCatalogName()); buf.append(MssqlIntrospector.getHelpTextForObject(MssqlIntrospector.getFixedVersionedObjectName(ti.getSimpleName()),conn)); buf.append("\nGO\n\n"); } _session.getSQLPanelAPI(_plugin).appendSQLScript(buf.toString()); _session.selectMainTab(ISession.IMainPanelTabIndexes.SQL_TAB); } } catch (java.sql.SQLException ex) { ex.printStackTrace(); throw new WrappedSQLException(ex); } } } --- NEW FILE: UpdateStatisticsAction.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.awt.event.ActionEvent; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.action.SquirrelAction; import net.sourceforge.squirrel_sql.client.plugin.IPlugin; import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.action.ISessionAction; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.ObjectTreeNode; import net.sourceforge.squirrel_sql.fw.gui.Dialogs; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; import net.sourceforge.squirrel_sql.fw.util.Resources; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class UpdateStatisticsAction extends SquirrelAction implements ISessionAction { private ISession _session; private final MssqlPlugin _plugin; public UpdateStatisticsAction(IApplication app, Resources rsrc, MssqlPlugin plugin) { super(app, rsrc); _plugin = plugin; } public void actionPerformed(ActionEvent evt) { if (_session != null) new UpdateStatisticsCommand(_session, _plugin).execute(); } public void setSession(ISession session) { _session = session; } } --- NEW FILE: ShrinkDatabaseAction.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.awt.event.ActionEvent; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.action.SquirrelAction; import net.sourceforge.squirrel_sql.client.plugin.IPlugin; import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.action.ISessionAction; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.ObjectTreeNode; import net.sourceforge.squirrel_sql.fw.gui.Dialogs; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.util.Resources; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class ShrinkDatabaseAction extends SquirrelAction implements ISessionAction { private ISession _session; private final MssqlPlugin _plugin; public ShrinkDatabaseAction(IApplication app, Resources rsrc, MssqlPlugin plugin) { super(app, rsrc); _plugin = plugin; } public void actionPerformed(ActionEvent evt) { if (_session != null) { IPlugin plugin = _session.getApplication().getDummyAppPlugin(); IObjectTreeAPI treeAPI = _session.getObjectTreeAPI(plugin); IDatabaseObjectInfo[] dbs = treeAPI.getSelectedDatabaseObjects(); ObjectTreeNode[] nodes = treeAPI.getSelectedNodes(); if (dbs.length > 0) new ShrinkDatabaseCommand(_session, _plugin, dbs).execute(); } } public void setSession(ISession session) { _session = session; } } --- NEW FILE: IndexDefragCommand.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; import net.sourceforge.squirrel_sql.fw.util.ICommand; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class IndexDefragCommand implements ICommand { private ISession _session; private final MssqlPlugin _plugin; private final ITableInfo _tableInfo; private final String _indexName; public IndexDefragCommand(ISession session, MssqlPlugin plugin, ITableInfo tableInfo, String indexName) { super(); if (session == null) throw new IllegalArgumentException("ISession == null"); if (tableInfo == null) throw new IllegalArgumentException("ITableInfo == null"); _session = session; _plugin = plugin; _tableInfo = tableInfo; _indexName = indexName; } public void execute() { StringBuffer sqlBuffer = new StringBuffer(); final String sqlSep = _session.getProperties().getSQLStatementSeparator(); sqlBuffer.append("DBCC INDEXDEFRAG(" + _tableInfo.getCatalogName() + "," + _tableInfo.getSimpleName() + "," + _indexName + ")"); sqlBuffer.append(" " + sqlSep + " \n"); _session.getSQLPanelAPI(_plugin).appendSQLScript(sqlBuffer.toString(), true); _session.getSQLPanelAPI(_plugin).executeCurrentSQL(); _session.selectMainTab(ISession.IMainPanelTabIndexes.SQL_TAB); } } --- NEW FILE: TruncateLogAction.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.awt.event.ActionEvent; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.action.SquirrelAction; import net.sourceforge.squirrel_sql.client.plugin.IPlugin; import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.client.session.action.ISessionAction; import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.ObjectTreeNode; import net.sourceforge.squirrel_sql.fw.gui.Dialogs; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.util.Resources; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; public class TruncateLogAction extends SquirrelAction implements ISessionAction { private ISession _session; private final MssqlPlugin _plugin; public TruncateLogAction(IApplication app, Resources rsrc, MssqlPlugin plugin) { super(app, rsrc); _plugin = plugin; } public void actionPerformed(ActionEvent evt) { if (_session != null) { IPlugin plugin = _session.getApplication().getDummyAppPlugin(); IObjectTreeAPI treeAPI = _session.getObjectTreeAPI(plugin); IDatabaseObjectInfo[] dbs = treeAPI.getSelectedDatabaseObjects(); ObjectTreeNode[] nodes = treeAPI.getSelectedNodes(); if (dbs.length > 0) new TruncateLogCommand(_session, _plugin, dbs).execute(); } } public void setSession(ISession session) { _session = session; } } --- NEW FILE: GenerateSqlCommand.java --- package net.sourceforge.squirrel_sql.plugins.mssql.action; /* * Copyright (C) 2004 Ryan Walberg <gen...@ya...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import javax.swing.JFileChooser; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.fw.gui.GUIUtils; import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo; import net.sourceforge.squirrel_sql.fw.sql.ITableInfo; import net.sourceforge.squirrel_sql.fw.sql.WrappedSQLException; import net.sourceforge.squirrel_sql.fw.util.BaseException; import net.sourceforge.squirrel_sql.fw.util.ICommand; import net.sourceforge.squirrel_sql.plugins.mssql.MssqlPlugin; import net.sourceforge.squirrel_sql.plugins.mssql.gui.GenerateSqlDialog; import net.sourceforge.squirrel_sql.plugins.mssql.util.ExtensionFilter; import net.sourceforge.squirrel_sql.plugins.mssql.util.MssqlIntrospector; public class GenerateSqlCommand implements ICommand { private ISession _session; private final MssqlPlugin _plugin; private final IDatabaseObjectInfo[] _dbObjs; public GenerateSqlCommand(ISession session, MssqlPlugin plugin, IDatabaseObjectInfo[] dbObjs) { super(); if (session == null) throw new IllegalArgumentException("ISession == null"); if (plugin == null) throw new IllegalArgumentException("MssqlPlugin == null"); if (dbObjs == null) throw new IllegalArgumentException("IDatabaseObjectInfo[] is null"); _session = session; _plugin = plugin; _dbObjs = dbObjs; } public void execute() throws BaseException { try { GenerateSqlDialog dlog = new GenerateSqlDialog(_session, _plugin, _dbObjs); dlog.pack(); GUIUtils.centerWithinParent(dlog); dlog.show(); JFileChooser fc = new JFileChooser(); if (dlog.getOneFile()) { ExtensionFilter ef = new ExtensionFilter(); ef.addExtension("SQL Scripts","sql"); ef.addExtension("Text Files","txt"); fc.setFileFilter(ef); } else fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if (fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) { FileWriter fw = null; if (dlog.getOneFile()) { fw = new FileWriter(fc.getSelectedFile(),false); if (dlog.getScriptDatabase()) fw.write(MssqlIntrospector.generateCreateDatabaseScript(_session.getSQLConnection().getCatalog(),_session.getSQLConnection())); if (dlog.getScriptUsersAndRoles()) fw.write(MssqlIntrospector.generateUsersAndRolesScript(_session.getSQLConnection().getCatalog(),_session.getSQLConnection())); } ArrayList objs = dlog.getSelectedItems(); for (int i = 0; i < objs.size(); i++) { IDatabaseObjectInfo oi = (IDatabaseObjectInfo) objs.get(i); if (!dlog.getOneFile()) fw = new FileWriter(fc.getSelectedFile() + java.io.File.separator + oi.getSimpleName() + ".txt",false); if (dlog.getGenerateDrop()) fw.write(MssqlIntrospector.generateDropScript(oi)); if (dlog.getGenerateCreate()) { String script = MssqlIntrospector.generateCreateScript(oi, _session.getSQLConnection(),dlog.getScriptConstraints()); fw.write(script); } if (dlog.getScriptIndexes()) { String script = MssqlIntrospector.generateCreateIndexesScript(oi, _session.getSQLConnection()); fw.write(script); } if (dlog.getScriptTriggers()) { String script = MssqlIntrospector.generateCreateTriggersScript(oi, _session.getSQLConnection()); fw.write(script); } if (dlog.getScriptPermissions()) { String script = MssqlIntrospector.generatePermissionsScript(oi, _session.getSQLConnection()); fw.write(script); } if (!dlog.getOneFile()) fw.close(); } if (dlog.getOneFile()) fw.close(); } } catch (SQLException ex) { ex.printStackTrace(); throw new WrappedSQLException(ex); } catch (IOException ex) { ex.printStackTrace(); _session.getApplication().showErrorDialog(ex.getMessage()); } } } |