001: package net.sourceforge.squirrel_sql.plugins.dbdiff.actions;
002:
003: /*
004: * Copyright (C) 2007 Rob Manning
005: * manningr@users.sourceforge.net
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License
009: * as published by the Free Software Foundation; either version 2
010: * of the License, or any later version.
011: *
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
015: * GNU General Public License for more details.
016: *
017: * You should have received a copy of the GNU General Public License
018: * along with this program; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
020: */
021: import java.awt.event.ActionEvent;
022:
023: import net.sourceforge.squirrel_sql.client.IApplication;
024: import net.sourceforge.squirrel_sql.client.action.SquirrelAction;
025: import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI;
026: import net.sourceforge.squirrel_sql.client.session.ISession;
027: import net.sourceforge.squirrel_sql.client.session.action.ISessionAction;
028: import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo;
029: import net.sourceforge.squirrel_sql.fw.util.Resources;
030: import net.sourceforge.squirrel_sql.fw.util.StringManager;
031: import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
032: import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
033: import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;
034: import net.sourceforge.squirrel_sql.plugins.dbdiff.SessionInfoProvider;
035: import net.sourceforge.squirrel_sql.plugins.dbdiff.commands.CompareCommand;
036:
037: public class CompareAction extends SquirrelAction implements
038: ISessionAction {
039:
040: /** Current plugin. */
041: private final SessionInfoProvider sessionInfoProv;
042:
043: /** The IApplication that we can use to display error dialogs */
044: private IApplication app = null;
045:
046: /** Logger for this class. */
047: private final static ILogger log = LoggerController
048: .createLogger(CompareAction.class);
049:
050: /** Internationalized strings for this class */
051: private static final StringManager s_stringMgr = StringManagerFactory
052: .getStringManager(CompareAction.class);
053:
054: /**
055: * Creates a new SQuirreL action that gets fired whenever the user chooses
056: * the paste operation.
057: *
058: * @param app
059: * @param rsrc
060: * @param plugin
061: */
062: public CompareAction(IApplication app, Resources rsrc,
063: SessionInfoProvider prov) {
064: super (app, rsrc);
065: this .app = app;
066: sessionInfoProv = prov;
067: }
068:
069: /* (non-Javadoc)
070: * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
071: */
072: public void actionPerformed(ActionEvent evt) {
073: ISession destSession = sessionInfoProv.getDiffDestSession();
074: IObjectTreeAPI api = destSession
075: .getObjectTreeAPIOfActiveSessionWindow();
076: if (api == null) {
077: return;
078: }
079: IDatabaseObjectInfo[] dbObjs = api.getSelectedDatabaseObjects();
080: sessionInfoProv.setDestSelectedDatabaseObjects(dbObjs);
081:
082: if (sessionInfoProv.getDiffSourceSession() == null) {
083: return;
084: }
085: if (!sourceDestSchemasDiffer()) {
086: // TODO: tell the user that the selected destination schema is
087: // the same as the source schema.
088: //monitor.showMessageDialog(...)
089: return;
090: }
091: new CompareCommand(sessionInfoProv).execute();
092: }
093:
094: /**
095: * Set the current session.
096: *
097: * @param session The current session.
098: */
099: public void setSession(ISession session) {
100: sessionInfoProv.setDestDiffSession(session);
101: }
102:
103: /**
104: * Returns a boolean value indicating whether or not the source and
105: * destination sessions refer to the same schema.
106: *
107: * @return
108: */
109: private boolean sourceDestSchemasDiffer() {
110: //ISession sourceSession = sessionInfoProv.getCopySourceSession();
111: //ISession destSession = sessionInfoProv.getCopyDestSession();
112:
113: // TODO: check to be sure that the source and destination schemas are
114: // different. Abort if they are the same and inform the user.
115:
116: return true;
117: }
118: }
|