org.executequery.gui.resultset.AbstractRecordDataItem.java Source code

Java tutorial

Introduction

Here is the source code for org.executequery.gui.resultset.AbstractRecordDataItem.java

Source

/*
 * AbstractRecordDataItem.java
 *
 * Copyright (C) 2002-2015 Takis Diakoumis
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 3
 * of the License, or any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 *
 */

package org.executequery.gui.resultset;

import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.executequery.databasemediators.SQLTypeObjectFactory;
import org.executequery.log.Log;
import org.underworldlabs.jdbc.DataSourceException;

/**
 * 
 * @author Takis Diakoumis
 * @version $Revision: 1487 $
 * @date $Date: 2015-08-23 22:21:42 +1000 (Sun, 23 Aug 2015) $
 */
public abstract class AbstractRecordDataItem implements RecordDataItem {

    private Object value;

    private String name;

    private int dataType;

    private String dataTypeName;

    private boolean changed;

    private static final SQLTypeObjectFactory TYPE_OBJECT_FACTORY = new SQLTypeObjectFactory();

    public AbstractRecordDataItem(String name, int dataType, String dataTypeName) {

        super();
        this.name = name;
        this.dataType = dataType;
        this.dataTypeName = dataTypeName;
    }

    public int length() {

        if (!isValueNull()) {

            return toString().length();

        } else {

            return 0;
        }
    }

    public String getDataTypeName() {
        return dataTypeName;
    }

    public int getDataType() {
        return dataType;
    }

    public Object getDisplayValue() {
        return getValue();
    }

    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

    public boolean valueContains(String pattern) {

        if (isLob() || isValueNull()) {

            return false;
        }
        return StringUtils.containsIgnoreCase(getValue().toString(), pattern);
    }

    public void valueChanged(Object newValue) {

        if (valuesEqual(this.value, newValue)) {

            return;
        }

        if (newValue != null && isStringLiteralNull(newValue)) {

            setValue(null);

        } else {

            setValue(newValue);
        }
        changed = true;
    }

    private boolean valuesEqual(Object firstValue, Object secondValue) {

        if (ObjectUtils.equals(firstValue, secondValue)) {

            return true;
        }

        if (firstValue != null && secondValue != null) {

            return firstValue.toString().equals(secondValue.toString());
        }

        return false;
    }

    private boolean isStringLiteralNull(Object newValue) {

        return newValue.toString().equalsIgnoreCase("NULL");
    }

    public boolean isValueNull() {
        return (value == null);
    }

    public String toString() {

        if (getValue() != null) {

            return getValue().toString();
        }

        return null;
    }

    public void setNull() {
        value = null;
    }

    public boolean isChanged() {
        return changed;
    }

    public String getName() {
        return name;
    }

    public boolean isSQLValueNull() {
        return isValueNull();// && StringUtils.isBlank(toString());
    }

    public Object getValueAsType() {

        if (isValueNull()) {

            return null;
        }
        return valueAsType(this.value);
    }

    protected Object valueAsType(Object value) {

        try {

            return TYPE_OBJECT_FACTORY.create(dataType, value);

        } catch (DataSourceException e) {

            Log.info("Unable to retrieve value as type for column [ " + name + " ]");
            return e.getMessage();

        }
    }

    public boolean isLob() {

        return false;
    }

}