All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sourceforge.squirrel_sql.client.session.ISession Maven / Gradle / Ivy

package net.sourceforge.squirrel_sql.client.session;
/*
 * Copyright (C) 2001-2004 Colin Bell
 * [email protected]
 *
 * Modifications Copyright (C) 2003-2004 Jason Height
 *
 * 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.SQLException;

import javax.swing.Action;
import javax.swing.JComponent;

import net.sourceforge.squirrel_sql.client.IApplication;
import net.sourceforge.squirrel_sql.client.gui.db.ISQLAliasExt;
import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.ISessionWidget;
import net.sourceforge.squirrel_sql.client.gui.session.MainPanel;
import net.sourceforge.squirrel_sql.client.gui.session.SessionInternalFrame;
import net.sourceforge.squirrel_sql.client.gui.session.SessionPanel;
import net.sourceforge.squirrel_sql.client.plugin.IPlugin;
import net.sourceforge.squirrel_sql.client.session.mainpanel.IMainPanelTab;
import net.sourceforge.squirrel_sql.client.session.parser.IParserEventsProcessor;
import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties;
import net.sourceforge.squirrel_sql.fw.id.IHasIdentifier;
import net.sourceforge.squirrel_sql.fw.id.IIdentifier;
import net.sourceforge.squirrel_sql.fw.sql.IQueryTokenizer;
import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection;
import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData;
import net.sourceforge.squirrel_sql.fw.sql.ISQLDriver;
import net.sourceforge.squirrel_sql.fw.sql.SQLConnection;
import net.sourceforge.squirrel_sql.fw.util.ExceptionFormatter;
import net.sourceforge.squirrel_sql.fw.util.IMessageHandler;

/**
 * The current session.
 */
public interface ISession extends IHasIdentifier
{

   public interface IMainPanelTabIndexes extends MainPanel.ITabIndexes
   {
      // Empty body.
   }

   /**
    * Retrieve whether this session has been closed.
    *
    * @return	true if session closed else false.
    */
   boolean isClosed();

   /**
    * Return the Application API object.
    *
    * @return the Application API object.
    */
   IApplication getApplication();

   /**
    * Return the current SQL connection object.
    *
    * @return the current SQL connection object.
    */
   ISQLConnection getSQLConnection();

   /**
    * Return the current SQL connection database metadata.
    *
    * @return the current SQL connection database metadata.
    */
   ISQLDatabaseMetaData getMetaData();
   
   /**
    * Return the driver used to connect to the database.
    *
    * @return the driver used to connect to the database.
    */
   ISQLDriver getDriver();

   /**
    * Return the alias used to connect to the database.
    *
    * @return the alias used to connect to the database.
    */
   ISQLAliasExt getAlias();

   /**
    * Return the properties for this session.
    *
    * @return the properties for this session.
    */
   SessionProperties getProperties();

    /**
    * Commit the current SQL session.
    */
   void commit();

   /**
    * Rollback the current SQL session.
    */
   void rollback();

   /**
    * Close this session.
    *
    * @throws	SQLException
    * 			Thrown if an error closing the SQL connection. The session
    * 			will still be closed even though the connection may not have
    *			been.
    */
   void close() throws SQLException;

   /**
    * Close the current connection to the database.
    *
    * @throws	SQLException	if an SQL error occurs.
    */
   void closeSQLConnection() throws SQLException;

   void setSessionInternalFrame(SessionInternalFrame sif);

   /**
    * Reconnect to the database.
    */
   void reconnect();

   Object getPluginObject(IPlugin plugin, String key);
   Object putPluginObject(IPlugin plugin, String key, Object obj);
   void removePluginObject(IPlugin plugin, String key);

   void setMessageHandler(IMessageHandler handler);

   SessionPanel getSessionSheet();

   SessionInternalFrame getSessionInternalFrame();

// JASON:
//	SQLFilterClauses getSQLFilterClauses();

   /**
    * Retrieve the schema information object for this session.
    */
   net.sourceforge.squirrel_sql.client.session.schemainfo.SchemaInfo getSchemaInfo();

   /**
    * Select a tab in the main tabbed pane.
    *
    * @param	tabIndex	The tab to select. @see #IMainTabIndexes
    *
    * @throws	IllegalArgumentException
    *			Thrown if an invalid tabIndex passed.
    */
   void selectMainTab(int tabIndex) throws IllegalArgumentException;

   public int getSelectedMainTabIndex();


   /**
    * Add a tab to the main tabbed panel.
    *
    * @param	tab	 The tab to be added.
    * 
    * @return the index of the new tab that was added.
    *
    * @throws	IllegalArgumentException
    *			Thrown if a null IMainPanelTab passed.
    */
   int addMainTab(IMainPanelTab tab);

   /**
    * Add component to the session sheets status bar.
    *
    * @param	comp	Component to add.
    */
   void addToStatusBar(JComponent comp);

   /**
    * Remove component to the session sheets status bar.
    *
    * @param	comp	Component to remove.
    */
   void removeFromStatusBar(JComponent comp);

   /**
    * Add a listener to this session
    *
    * @param	lis		The listener to add.
    *
    * @throws	IllegalArgumentException
    * 			Thrown if a null listener passed.
    */
// JASON: Removed as part of patch
//	void addSessionListener(ISessionListener lis);

   /**
    * Remove a listener from this session
    *
    * @param	lis		The listener to remove.
    *
    * @throws	IllegalArgumentException
    * 			Thrown if a null listener passed.
    */
//	 JASON: Removed as part of patch
//	void removeSessionListener(ISessionListener lis);

   /**
    * Retrieve the descriptive title of this session.
    *
    * @return		The descriptive title of this session.
    */
   String getTitle();


   /**
    * Add the passed action to the toolbar of the sessions main window.
    *
    * @param	action	Action to be added.
    */
   void addToToolbar(Action action);

   public void addSeparatorToToolbar();

   /**
    * The code in any SQLEditor is parsed in the background. You may attach a listener to the ParserEventsProcessor
    * to get to know about the results of parsing. The events are passed synchron with the event queue
    * (via SwingUtils.invokeLater()). At the moment events are produced for errors in the SQLScript
    * which are highlighted in the syntax plugin and for aliases of table names which are used in the
    * code completion plugin.
    * 

* If you want the ParserEventsProcessor to produce further events feel free to contact [email protected]. */ IParserEventsProcessor getParserEventsProcessor(IIdentifier sqlEntryPanelIdentifier); void setActiveSessionWindow(ISessionWidget activeActiveSessionWindow); /** * Hint for plugins: * When ISessionPlugin.sessionStarted is called the active session window is * always the SessionInternalFrame which provides an SQLPanelAPI. This might help to simplyfy * the code in the sessionStarted() method of a plugin. */ ISessionWidget getActiveSessionWindow(); /** * Hint for plugins: * When ISessionPlugin.sessionStarted is called the active session window is * always the SessionInternalFrame which provides an SQLPanelAPI. This might help to simplyfy * the code in the sessionStarted() method of a plugin. * * @throws IllegalStateException if ActiveSessionWindow doesn't provide an SQLPanelAPI * for example if it is an ObjectTreeInternalFrame */ ISQLPanelAPI getSQLPanelAPIOfActiveSessionWindow(); /** * * Hint for plugins: * When ISessionPlugin.sessionStarted is called the active session window is * always the SessionInternalFrame which provides an SQLPanelAPI. This might help to simplyfy * the code in the sessionStarted() method of a plugin. * * @throws IllegalStateException if ActiveSessionWindow doesn't provide an IObjectTreeAPI * for example if it is an SQLInternalFrame */ IObjectTreeAPI getObjectTreeAPIOfActiveSessionWindow(); /** * @return Returns the _finishedLoading. */ public boolean isfinishedLoading(); /** * @param _finishedLoading The _finishedLoading to set. */ public void setPluginsfinishedLoading(boolean _finishedLoading); /** * Determine from the session whether or not it is ok to close it. It might * be the case that the session's SQLPanel has unsaved edits that require * the user's approval to discard. * * @return true if it's ok to close the session; false otherwise. */ public boolean confirmClose(); /** * Sets the IQueryTokenizer implementation to use for this session. * * @param tokenizer */ public void setQueryTokenizer(IQueryTokenizer tokenizer); /** * Returns the IQueryTokenizer implementation to use for tokenizing scripts * statements that should be sent to the server. * * @return an implementation of IQueryTokenizer */ IQueryTokenizer getQueryTokenizer(); /** * Sets the exception formatter to use when handling messages. * * @param formatter * the ExceptionFormatter */ void setExceptionFormatter(ExceptionFormatter formatter); /** * Returns the exception formatter to use when handling messages. * * @return the ExceptionFormatter */ ExceptionFormatter getExceptionFormatter(); /** * Facade method for ExceptionFormatter to allow callers to safely get a * formatted exception without forcing them to wrap it in a try/catch block * * @param t the exception to format * * @return the context of the exception, in default or custom format, * depending on whether or not a custom ExceptionFormatter was * installed. */ String formatException(Throwable t); // Facade methods for IMessageHandler. We don't want to allow code to // directly access an internal IMessageHandler, now that the IMessageHandler // interface requires an ExceptionFormatter to be injected for methods that // accept Exceptions. /** * Show a message describing the passed exception. This will apply * any custom formatting if an ExceptionFormatter has been set. * * @param th the exception to be shown */ void showMessage(Throwable th); /** * Show a message. * * @param msg * The message. */ void showMessage(String msg); /** * Show an error message describing the passed exception. This will apply * any custom formatting if an ExceptionFormatter has been set. * * @param th the exception to be shown */ void showErrorMessage(Throwable th); /** * Show an error message. The implementation of IMessageHandler * may or may not treat this differently to showMessage(String). * @param session the session that generated the exception. * @param th * Exception. */ void showErrorMessage(String msg); void showWarningMessage(String msg); /** * Create a new connection, which is not associated with the current session. * The new {@link SQLConnection} will is based on the same alias, user name and password of the current session. But it will be not associated with the session. * Please note, that a commit and roll back on the current session will not affect the new created connection. * The caller have to manage the connection by himself. Especially commit, roll back, close and so on. * @return A new connection for the alias of the current session. */ public SQLConnection createUnmanagedConnection(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy