Package net.sourceforge.squirrel_sql.client.gui.db.aliasproperties

Source Code of net.sourceforge.squirrel_sql.client.gui.db.aliasproperties.DriverPropertiesController

package net.sourceforge.squirrel_sql.client.gui.db.aliasproperties;

import net.sourceforge.squirrel_sql.client.IApplication;
import net.sourceforge.squirrel_sql.client.gui.db.SQLAlias;
import net.sourceforge.squirrel_sql.fw.gui.MultipleLineLabel;
import net.sourceforge.squirrel_sql.fw.id.IIdentifier;
import net.sourceforge.squirrel_sql.fw.sql.ISQLAlias;
import net.sourceforge.squirrel_sql.fw.sql.SQLDriverPropertyCollection;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;

import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.Driver;
import java.sql.DriverPropertyInfo;
import java.sql.SQLException;
import java.util.Properties;

/**
* This dialog allows the user to review and maintain
* the properties for a JDBC driver.
*
* @author <A HREF="mailto:colbell@users.sourceforge.net">Colin Bell</A>
*/
public class DriverPropertiesController implements IAliasPropertiesPanelController
{
   /**
    * Internationalized strings for this class.
    */
   private static final StringManager s_stringMgr =
      StringManagerFactory.getStringManager(DriverPropertiesController.class);

   private DriverPropertiesPanel _propsPnl;

   /**
    * The driver properties. This is only available once OK pressed.
    */
   private SQLDriverPropertyCollection _driverPropInfo;
   private ISQLAlias _alias;
   private IApplication _app;
   String _errMsg;
   private Color _origTblColor;

   public DriverPropertiesController(SQLAlias alias, IApplication app)
   {
      _alias = alias;
      _app = app;
      String aliasUrl = alias.getUrl();

      IIdentifier driverIdentifier = alias.getDriverIdentifier();
      if (driverIdentifier == null)
      {
         // I18n[DriverPropertiesController.noDriverSelected=No driver available in this Alias.\nCan not load driver properties tab.]
         _errMsg = s_stringMgr.getString("DriverPropertiesController.noDriverSelected");
         _app.getMessageHandler().showErrorMessage(_errMsg);
         return;
      }
      final Driver jdbcDriver = app.getSQLDriverManager().getJDBCDriver(driverIdentifier);
      if (jdbcDriver == null)
      {
         // I18n[DriverPropertiesController.loadingDriverFailed=Loading JDBC driver "{0}" failed.\nCan not load driver properties tab.]
         _errMsg = s_stringMgr.getString("DriverPropertiesController.loadingDriverFailed", app.getDataCache().getDriver(driverIdentifier).getName());
         _app.getMessageHandler().showErrorMessage(_errMsg);
         return;
      } else {
          try {
              if (!jdbcDriver.acceptsURL( aliasUrl )) {
                  String driverName =
                      app.getDataCache().getDriver(driverIdentifier).getName();
                  //I18n[DriverPropertiesController.invalidUrl=According to
                  //the driver "{0}", the url "{1}" is invalid.]
                  _errMsg =
                      s_stringMgr.getString(
                              "DriverPropertiesController.invalidUrl",
                              new String[] {driverName, aliasUrl});
                  _app.getMessageHandler().showErrorMessage(_errMsg);
                  return;
              }
          } catch (Exception e) {
              // I18n[DriverPropertiesController.loadingDriverFailed=Loading JDBC driver "{0}" failed.\nCan not load driver properties tab.]
              _errMsg = s_stringMgr.getString("DriverPropertiesController.loadingDriverFailed", app.getDataCache().getDriver(driverIdentifier).getName());
              _app.getMessageHandler().showErrorMessage(_errMsg);
              return;
          }
      }

      DriverPropertyInfo[] infoAr = new DriverPropertyInfo[0];
      try
      {
         infoAr = jdbcDriver.getPropertyInfo(alias.getUrl(), new Properties());
      }
      catch (Exception e)
      {
         // I18n[DriverPropertiesController.gettingDriverPropetiesFailed=Loading the properties from the JDBC driver failed.\nCan not load driver properties tab.]
         _errMsg = s_stringMgr.getString("DriverPropertiesController.gettingDriverPropetiesFailed");
         _app.getMessageHandler().showErrorMessage(_errMsg);
         //return;
      }

      SQLDriverPropertyCollection driverPropertiesClone = alias.getDriverPropertiesClone();
      driverPropertiesClone.applyDriverPropertynfo(infoAr);
      _propsPnl = new DriverPropertiesPanel(driverPropertiesClone);

      _propsPnl.chkUseDriverProperties.setSelected(alias.getUseDriverProperties());
      updateTableEnabled();

      _propsPnl.chkUseDriverProperties.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent e)
         {
            updateTableEnabled();
         }
      });


   }

   private void updateTableEnabled()
   {
      if(null == _origTblColor)
      {
         _origTblColor = _propsPnl.tbl.getForeground();
      }

      _propsPnl.tbl.setEnabled(_propsPnl.chkUseDriverProperties.isSelected());

      if(_propsPnl.chkUseDriverProperties.isSelected())
      {
         _propsPnl.tbl.setForeground(_origTblColor);
      }
      else
      {
         _propsPnl.tbl.setForeground(Color.lightGray);
      }
   }

   /**
    * Retrieve the database driver properties. This is only valid if the
    * OK button was pressed.
    *
    * @return the database driver properties.
    */
   public SQLDriverPropertyCollection getSQLDriverPropertyCollection()
   {
      return _driverPropInfo;
   }

   public Component getPanelComponent()
   {
      if(null == _propsPnl)
      {
         return new MultipleLineLabel(_errMsg);
      }
      else
      {
         return _propsPnl;
      }
   }


   public void applyChanges()
   {
      if (null != _propsPnl)
      {
         _alias.setDriverProperties(_propsPnl.getSQLDriverProperties());
         _alias.setUseDriverProperties(_propsPnl.chkUseDriverProperties.isSelected());
      }
   }


   public String getTitle()
   {
      //i18n[DriverPropertiesController.title=DriverProperties]
      return s_stringMgr.getString("DriverPropertiesController.title");
   }

   public String getHint()
   {
      //i18n[DriverPropertiesController.Hint=DriverProperties]
      return s_stringMgr.getString("DriverPropertiesController.title");
   }

}
TOP

Related Classes of net.sourceforge.squirrel_sql.client.gui.db.aliasproperties.DriverPropertiesController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.