Package com.dci.intellij.dbn.editor.data.filter

Source Code of com.dci.intellij.dbn.editor.data.filter.DatasetBasicFilterCondition

package com.dci.intellij.dbn.editor.data.filter;

import com.dci.intellij.dbn.common.locale.options.RegionalSettings;
import com.dci.intellij.dbn.common.options.Configuration;
import com.dci.intellij.dbn.common.util.StringUtil;
import com.dci.intellij.dbn.connection.ConnectionHandler;
import com.dci.intellij.dbn.data.type.DBDataType;
import com.dci.intellij.dbn.data.type.GenericDataType;
import com.dci.intellij.dbn.database.DatabaseMetadataInterface;
import com.dci.intellij.dbn.editor.data.filter.ui.DatasetBasicFilterConditionForm;
import com.dci.intellij.dbn.object.DBColumn;
import com.dci.intellij.dbn.object.DBDataset;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.WriteExternalException;
import org.jdom.Element;

import java.text.ParseException;
import java.util.Date;

public class DatasetBasicFilterCondition extends Configuration<DatasetBasicFilterConditionForm> {

    private DatasetBasicFilter filter;
    private String columnName = "";
    private String operator = "";
    private String value = "";
    private boolean active = true;

    public DatasetBasicFilterCondition(DatasetBasicFilter filter){
        this.filter = filter;
    }

    public DatasetBasicFilterCondition(DatasetBasicFilter filter, String columnName, Object value, ConditionOperator operator, boolean active) {
        this.filter = filter;
        this.columnName = columnName;
        this.operator = operator.getText();
        this.value = value == null ? "" : value.toString();
        this.active = active;
    }

    public DatasetBasicFilterCondition(DatasetBasicFilter filter, String columnName, Object value, ConditionOperator operator) {
        this.filter = filter;
        this.columnName = columnName;
        this.operator = operator == null ? (value == null || value.toString().trim().length() == 0 ? ConditionOperator.IS_NULL.getText() : ConditionOperator.EQUAL.getText()) : operator.getText();
        this.value = value == null ? "" : value.toString();
        this.active = true;
    }

    public DatasetBasicFilter getFilter() {
        return filter;
    }

    public String getDisplayName() {
        return null;
    }

    public String getColumnName() {
        return columnName;
    }

    public void setColumnName(String columnName) {
        this.columnName = columnName;
    }

    public String getOperator() {
        return operator;
    }

    public void setOperator(String operator) {
        this.operator = operator;
    }

    public String getValue() {
        return value;
    }

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

    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }

    public void appendConditionString(StringBuilder buffer, DBDataset dataset) {
        DatasetBasicFilterConditionForm editorForm = getSettingsEditor();

        ConditionOperator conditionOperator = null;
        String columnName = this.columnName;
        String operator = this.operator;
        String value = this.value;

        if (editorForm != null && !editorForm.isDisposed()) {
            conditionOperator = editorForm.getSelectedOperator();
            DBColumn selectedColumn = editorForm.getSelectedColumn();
            if (selectedColumn != null) {
                columnName = selectedColumn.getName();
                operator = conditionOperator == null ? " " : conditionOperator.getText();
                value = editorForm.getValue();
            }
        }

        DBColumn column = dataset.getColumn(columnName);

        if (conditionOperator != null &&
                conditionOperator.getValuePrefix() != null &&
                conditionOperator.getValuePostfix() != null) {
            value = conditionOperator.getValuePrefix() + value + conditionOperator.getValuePostfix();
        }
        else if (StringUtil.isNotEmptyOrSpaces(value)) {
            DBDataType dataType = column == null ? null : column.getDataType();
            if (dataType != null && dataType.isNative()) {
                ConnectionHandler connectionHandler = dataset.getConnectionHandler();
                RegionalSettings regionalSettings = RegionalSettings.getInstance(connectionHandler.getProject());
                GenericDataType genericDataType = dataType.getNativeDataType().getBasicDataType();
                if (genericDataType == GenericDataType.LITERAL) {
                    value = com.intellij.openapi.util.text.StringUtil.replace(value, "'", "''");
                    value = "'" + value + "'";
                } else if (genericDataType == GenericDataType.DATE_TIME) {
                    DatabaseMetadataInterface metadataInterface = connectionHandler.getInterfaceProvider().getMetadataInterface();
                    try {
                        Date date = regionalSettings.getFormatter().parseDateTime(value);
                        value = metadataInterface.createDateString(date);
                    } catch (ParseException e) {
                        try {
                            Date date = regionalSettings.getFormatter().parseDate(value);
                            value = metadataInterface.createDateString(date);
                        } catch (ParseException e1) {
                            // value can be something like "sysdate" => not parseable
                            //e1.printStackTrace();
                        }
                    }
                } else if (genericDataType == GenericDataType.NUMERIC) {
                    /*try {
                        regionalSettings.getFormatter().parseNumber(value);
                    } catch (ParseException e) {
                        e.printStackTrace();

                    }*/
                }
            }
        }
        buffer.append(column == null ? columnName : column.getQuotedName(false));
        buffer.append(" ");
        buffer.append(operator);
        buffer.append(" ");
        buffer.append(value);
    }

   /****************************************************
    *                   Configuration                  *
    ****************************************************/
    public DatasetBasicFilterConditionForm createConfigurationEditor() {
        DBDataset dataset = filter.lookupDataset();
        return new DatasetBasicFilterConditionForm(dataset, this);
    }

    public void readConfiguration(Element element) throws InvalidDataException {
       columnName = element.getAttributeValue("column");
       operator = element.getAttributeValue("operator");
       value = element.getAttributeValue("value");
       active = Boolean.parseBoolean(element.getAttributeValue("active"));
    }

    public void writeConfiguration(Element element) throws WriteExternalException {
        element.setAttribute("column", columnName);
        element.setAttribute("operator", operator);
        element.setAttribute("value", value);
        element.setAttribute("active", Boolean.toString(active));
    }
}
TOP

Related Classes of com.dci.intellij.dbn.editor.data.filter.DatasetBasicFilterCondition

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.