Package prefuse.data.column

Source Code of prefuse.data.column.BooleanColumn

package prefuse.data.column;

import java.util.BitSet;

import prefuse.data.DataReadOnlyException;
import prefuse.data.DataTypeException;

/**
* Column implementation storing boolean values. Uses a BitSet representation
* for space efficient storage.
*
* @author <a href="http://jheer.org">jeffrey heer</a>
*/
public class BooleanColumn extends AbstractColumn {

    private BitSet m_bits;   
    private int    m_size;
   
    /**
     * Create an empty BooleanColumn.
     */
    public BooleanColumn() {
        this(0, 10, false);
    }
   
    /**
     * Create a new BooleanColumn.
     * @param nrows the initial size of the column
     */
    public BooleanColumn(int nrows) {
        this(nrows, nrows, false);
    }

    /**
     * Create a new BooleanColumn.
     * @param nrows the initial size of the column
     * @param capacity the initial capacity of the column
     * @param defaultValue the default value for the column
     */
    public BooleanColumn(int nrows, int capacity, boolean defaultValue) {
        super(boolean.class, new Boolean(defaultValue));
        if ( capacity < nrows ) {
            throw new IllegalArgumentException(
                "Capacity value can not be less than the row count.");
        }
        m_bits = new BitSet(capacity);
        m_bits.set(0, capacity, defaultValue);
        m_size = nrows;
    }
   
    // ------------------------------------------------------------------------
    // Column Metadata
   
    /**
     * @see prefuse.data.column.Column#getRowCount()
     */
    public int getRowCount() {
        return m_size;
    }
   
    /**
     * @see prefuse.data.column.Column#setMaximumRow(int)
     */
    public void setMaximumRow(int nrows) {
        if ( nrows > m_size ) {
            m_bits.set(m_size, nrows,
                ((Boolean)m_defaultValue).booleanValue());
        }
        m_size = nrows;
    }

    // ------------------------------------------------------------------------
    // Data Access Methods   
   
    /**
     * @see prefuse.data.column.Column#get(int)
     */
    public Object get(int row) {
        return new Boolean(getBoolean(row));
    }

    /**
     * @see prefuse.data.column.Column#set(java.lang.Object, int)
     */
    public void set(Object val, int row) throws DataTypeException {
        if ( m_readOnly ) {
            throw new DataReadOnlyException();
        } else if ( val != null ) {
            if ( val instanceof Boolean ) {
                setBoolean(((Boolean)val).booleanValue(), row);
            } else if ( val instanceof String ) {
                setString((String)val, row);
            } else {
                throw new DataTypeException(val.getClass());
            }
        } else {
            throw new DataTypeException("Column does not accept null values");
        }
    }

    // ------------------------------------------------------------------------
    // Data Type Convenience Methods
   
    /**
     * @see prefuse.data.column.AbstractColumn#getBoolean(int)
     */
    public boolean getBoolean(int row) throws DataTypeException {
        if ( row < 0 || row > m_size ) {
            throw new IllegalArgumentException("Row index out of bounds: "+row);
        }
        return m_bits.get(row);
    }

    /**
     * @see prefuse.data.column.AbstractColumn#setBoolean(boolean, int)
     */
    public void setBoolean(boolean val, int row) throws DataTypeException {
        if ( m_readOnly ) {
            throw new DataReadOnlyException();
        } else if ( row < 0 || row >= m_size ) {
            throw new IllegalArgumentException("Row index out of bounds: "+row);
        }
        // get the previous value
        boolean prev = m_bits.get(row);
       
        // exit early if no change
        if ( prev == val ) return;
       
        // set the new value
        m_bits.set(row, val);
       
        // fire a change event
        fireColumnEvent(row, prev);
    }
   
//    /**
//     * @see prefuse.data.column.AbstractColumn#getString(int)
//     */
//    public String getString(int row) throws DataTypeException {
//        return String.valueOf(getBoolean(row));
//    }
//
//    /**
//     * @see prefuse.data.column.AbstractColumn#setString(java.lang.String, int)
//     */
//    public void setString(String val, int row) throws DataTypeException {
//        boolean b;
//        if ( "true".equalsIgnoreCase(val) ) {
//            b = true;
//        } else if ( "false".equalsIgnoreCase(val) ) {
//            b = false;
//        } else {
//            throw new IllegalArgumentException(
//                "Input string does not represent a boolean value.");
//        }
//        setBoolean(b, row);
//    }

} // end of class BooleanColumn
TOP

Related Classes of prefuse.data.column.BooleanColumn

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.