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

Source Code of com.dci.intellij.dbn.editor.data.model.DatasetEditorModelHeader

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

import com.dci.intellij.dbn.data.model.ColumnInfo;
import com.dci.intellij.dbn.data.model.DataModelHeader;
import com.dci.intellij.dbn.data.model.basic.BasicDataModelHeader;
import com.dci.intellij.dbn.editor.data.DatasetEditor;
import com.dci.intellij.dbn.editor.data.state.column.DatasetColumnSetup;
import com.dci.intellij.dbn.editor.data.state.column.DatasetColumnState;
import com.dci.intellij.dbn.object.DBColumn;
import com.dci.intellij.dbn.object.DBDataset;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Comparator;
import java.util.List;

public class DatasetEditorModelHeader extends BasicDataModelHeader implements DataModelHeader {
    public DatasetEditorModelHeader(DatasetEditor datasetEditor, ResultSet resultSet) throws SQLException {
        DBDataset dataset = datasetEditor.getDataset();
        if (dataset != null) {
            if (resultSet == null) {
                DatasetColumnSetup columnSetup = datasetEditor.getState().getColumnSetup();
                List<DatasetColumnState> columnStates = columnSetup.getColumnStates();
                if (columnStates.size() != dataset.getColumns().size()) {
                    columnSetup.init(dataset);
                }

                int index = 0;
                for (DatasetColumnState columnState : columnStates) {
                    DBColumn column = dataset.getColumn(columnState.getName());
                    ColumnInfo columnInfo = new DatasetEditorColumnInfo(column, index, column.getPosition());
                    addColumnInfo(columnInfo);
                    index++;
                }
            } else {
                ResultSetMetaData metaData = resultSet.getMetaData();
                int columnCount = metaData.getColumnCount();
                for (int i = 0; i < columnCount; i++) {
                    String name = metaData.getColumnName(i+1);
                    DBColumn column = dataset.getColumn(name);
                    ColumnInfo columnInfo = new DatasetEditorColumnInfo(column, i, i+1);
                    addColumnInfo(columnInfo);
                }
            }

        }
    }

    public int indexOfColumn(DBColumn column) {
        for (int i=0; i<getColumnCount(); i++) {
            ColumnInfo info = getColumnInfo(i);
            DatasetEditorColumnInfo columnInfo = (DatasetEditorColumnInfo) info;
            DBColumn col = columnInfo.getColumn();
            if (col != null && col.equals(column)) return i;
        }
        return -1;
    }

    private static final Comparator<DBColumn> COLUMN_POSITION_COMPARATOR = new Comparator<DBColumn>() {
        public int compare(DBColumn column1, DBColumn column2) {
            return column1.getPosition()-column2.getPosition();
        }
    };
}
TOP

Related Classes of com.dci.intellij.dbn.editor.data.model.DatasetEditorModelHeader

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.