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

Source Code of net.sourceforge.squirrel_sql.client.gui.db.aliasproperties.DriverPropertiesTableModel$IColumnIndexes

package net.sourceforge.squirrel_sql.client.gui.db.aliasproperties;
/*
* Copyright (C) 2002-2003 Colin Bell
* colbell@users.sourceforge.net
*
* 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.DriverPropertyInfo;

import javax.swing.table.AbstractTableModel;

import net.sourceforge.squirrel_sql.fw.sql.SQLDriverProperty;
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 net.sourceforge.squirrel_sql.fw.util.log.ILogger;
import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;

class DriverPropertiesTableModel extends AbstractTableModel
{
    private static final long serialVersionUID = 1L;

    /** Internationalized strings for this class. */
  private static final StringManager s_stringMgr =
    StringManagerFactory.getStringManager(DriverPropertiesTableModel.class);

  interface IColumnIndexes
  {
    int IDX_NAME = 0;
    int IDX_SPECIFY = 1;
    int IDX_VALUE = 2;
    int IDX_REQUIRED = 3;
    int IDX_DESCRIPTION = 4;
  }

  /** Number of columns in model. */
  private static final int COLUMN_COUNT = 5;

  /** Logger for this class. */
  private static final ILogger s_log =
    LoggerController.createLogger(DriverPropertiesTableModel.class);

  transient private SQLDriverPropertyCollection _props = new SQLDriverPropertyCollection();

  DriverPropertiesTableModel(SQLDriverPropertyCollection props)
  {
    super();
    if (props == null)
    {
      throw new IllegalArgumentException("SQLDriverPropertyCollection[] == null");
    }

    load(props);
  }

  public Object getValueAt(int row, int col)
  {
    final SQLDriverProperty sdp = _props.getDriverProperty(row);
    switch (col)
    {
      case IColumnIndexes.IDX_NAME:
        return sdp.getName();

      case IColumnIndexes.IDX_SPECIFY:
        return Boolean.valueOf(sdp.isSpecified());

      case IColumnIndexes.IDX_VALUE:
        return sdp.getValue();

      case IColumnIndexes.IDX_REQUIRED:
      {
        // Use valueof when min supported JDK is 1.4
        //return Boolean.valueOf(_props[row].required);
        DriverPropertyInfo dpi = sdp.getDriverPropertyInfo();
        if (dpi != null)
        {
          return Boolean.valueOf(dpi.required);
        }
        return Boolean.FALSE;
      }

      case IColumnIndexes.IDX_DESCRIPTION:
      {
        DriverPropertyInfo dpi = sdp.getDriverPropertyInfo();
        if (dpi != null)
        {
          return dpi.description;
        }
        return s_stringMgr.getString("DriverPropertiesTableModel.unknown");
      }

      default:
        s_log.error("Invalid column index: " + col);
        return "???????";
    }
  }

  public int getRowCount()
  {
    return _props.size();
  }

  public int getColumnCount()
  {
    return COLUMN_COUNT;
  }

  public Class<?> getColumnClass(int col)
  {
    switch (col)
    {
      case IColumnIndexes.IDX_NAME:
        return String.class;
      case IColumnIndexes.IDX_SPECIFY:
        return Boolean.class;
      case IColumnIndexes.IDX_VALUE:
        return String.class;
      case IColumnIndexes.IDX_REQUIRED:
//        return Boolean.class;  // Don't show checkbox for
        return Object.class// output only field.
      case IColumnIndexes.IDX_DESCRIPTION:
        return String.class;
      default:
        s_log.error("Invalid column index: " + col);
        return Object.class;
    }
  }

  public boolean isCellEditable(int row, int col)
  {
    return col == IColumnIndexes.IDX_SPECIFY || col == IColumnIndexes.IDX_VALUE;
  }

  public void setValueAt(Object value, int row, int col)
  {
    if (col == IColumnIndexes.IDX_VALUE)
    {
      final SQLDriverProperty sdp = _props.getDriverProperty(row);
      sdp.setValue(value.toString());
    }
    else if (col == IColumnIndexes.IDX_SPECIFY)
    {
      final SQLDriverProperty sdp = _props.getDriverProperty(row);
      Boolean bool = Boolean.valueOf(value.toString());
      sdp.setIsSpecified(bool.booleanValue());
    }
    else
    {
      throw new IllegalStateException("Can only edit value/specify column. Trying to edit " + col);
    }
  }

  /**
   * Adds a row to the driver properties table with the specified name, value and description.
   *
   * @param name the name of the driver property.
   * @param value the value of the driver property.
   * @param description a description of the driver property.
   */
  public void addRow(String name, String value, String description) {
    DriverPropertyInfo propInfo = new DriverPropertyInfo(name, value);
    propInfo.description = description;
    SQLDriverProperty newProp = new SQLDriverProperty(propInfo);
    _props.addDriverProperty(newProp);
    fireTableDataChanged();
  }
 
  /**
   * Removes the row which contains the specified name value in it's property name column.
   *
   * @param name the name of the driver property.
   */
  public void removeRow(String name) {
    _props.removeDriverProperty(name);
    fireTableDataChanged();
  }
 
  SQLDriverPropertyCollection getSQLDriverProperties()
  {
    return _props;
  }

  private final void load(SQLDriverPropertyCollection props)
  {
    final int origSize = getRowCount();
    if (origSize > 0)
    {
      fireTableRowsDeleted(0, origSize - 1);
    }

    _props = props;
    final int newSize = getRowCount();
    if (newSize > 0)
    {
      fireTableRowsInserted(0, newSize - 1);
    }
  }
}
TOP

Related Classes of net.sourceforge.squirrel_sql.client.gui.db.aliasproperties.DriverPropertiesTableModel$IColumnIndexes

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.