All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kawanfw.sql.servlet.jdbc.metadata.resultset.ResultSetMetaDataBuilder Maven / Gradle / Ivy

/*
 * Copyright (c)2022 KawanSoft S.A.S. All rights reserved.
 * 
 * Use of this software is governed by the Business Source License included
 * in the LICENSE.TXT file in the project's root directory.
 *
 * Change Date: 2026-11-01
 *
 * On the date above, in accordance with the Business Source License, use
 * of this software will be governed by version 2.0 of the Apache License.
 */
package org.kawanfw.sql.servlet.jdbc.metadata.resultset;

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

import org.kawanfw.sql.jdbc.metadata.ResultSetMetaDataHolder;

/**
 * Builds the ResultSetMetaDataHolder.
 * @author Nicolas de Pomereu
 *
 */
public class ResultSetMetaDataBuilder {

    private ResultSet resultSet = null;

    private int columnCount;

    private List autoIncrement = new Vector();
    private List caseSensitive = new Vector();
    private List searchable = new Vector();
    private List currency = new Vector();
    private List nullable = new Vector();
    private List signed = new Vector();
    private List columnDisplaySize = new Vector();
    private List columnLabel = new Vector();
    private List columnName = new Vector();
    private List schemaName = new Vector();
    private List precision = new Vector();
    private List scale = new Vector();
    private List tableName = new Vector();
    private List catalogName = new Vector();
    private List columnType = new Vector();
    private List columnTypeName = new Vector();
    private List readOnly = new Vector();
    private List writable = new Vector();
    private List definitelyWritable = new Vector();
    private List columnClassName = new Vector();

    private ResultSetMetaDataHolder resultSetMetaDataHolder;

    public ResultSetMetaDataBuilder(ResultSet resultSet) throws SQLException {
	this.resultSet = resultSet;
	build();
    }

    /**
     * Fills the values to pass to ResultSetMetaDataHolder and builds the ResultSetMetaDataHolder
     * @throws SQLException
     */
    private void build() throws SQLException {
	ResultSetMetaData meta = resultSet.getMetaData();

	fillLists(meta);

	resultSetMetaDataHolder = new ResultSetMetaDataHolder();
	resultSetMetaDataHolder.setColumnCount(columnCount);
	resultSetMetaDataHolder.setAutoIncrement(autoIncrement);
	resultSetMetaDataHolder.setCaseSensitive(caseSensitive);
	resultSetMetaDataHolder.setSearchable(searchable);
	resultSetMetaDataHolder.setCurrency(currency);
	resultSetMetaDataHolder.setNullable(nullable);
	resultSetMetaDataHolder.setSigned(signed);
	resultSetMetaDataHolder.setColumnDisplaySize(columnDisplaySize);
	resultSetMetaDataHolder.setColumnLabel(columnLabel);
	resultSetMetaDataHolder.setColumnName(columnName);
	resultSetMetaDataHolder.setSchemaName(schemaName);
	resultSetMetaDataHolder.setPrecision(precision);
	resultSetMetaDataHolder.setScale(scale);
	resultSetMetaDataHolder.setTableName(tableName);
	resultSetMetaDataHolder.setCatalogName(catalogName);
	resultSetMetaDataHolder.setColumnType(columnType);
	resultSetMetaDataHolder.setColumnTypeName(columnTypeName);
	resultSetMetaDataHolder.setReadOnly(readOnly);
	resultSetMetaDataHolder.setWritable(writable);
	resultSetMetaDataHolder.setDefinitelyWritable(definitelyWritable);
	resultSetMetaDataHolder.setColumnClassName(columnClassName);
    }

    /**
     * Fill all the list values of the ResultSetDataMeta
     * @param meta
     * @throws SQLException
     */
    private void fillLists(ResultSetMetaData meta) throws SQLException {
	columnCount = meta.getColumnCount();

	// Loop on Columns
	for (int i = 1; i <= columnCount; i++) {
	    autoIncrement.add(meta.isAutoIncrement(i));
	    caseSensitive.add(meta.isCaseSensitive(i));
	    searchable.add(meta.isSearchable(i));
	    currency.add(meta.isCurrency(i));
	    nullable.add(meta.isNullable(i));
	    signed.add(meta.isSigned(i));
	    columnDisplaySize.add(meta.getColumnDisplaySize(i));
	    columnLabel.add(meta.getColumnLabel(i));
	    columnName.add(meta.getColumnName(i));
	    schemaName.add(meta.getSchemaName(i));
	    precision.add(meta.getPrecision(i));
	    scale.add(meta.getScale(i));
	    tableName.add(meta.getTableName(i));
	    catalogName.add(meta.getCatalogName(i));
	    columnType.add(meta.getColumnType(i));
	    columnTypeName.add(meta.getColumnTypeName(i));
	    readOnly.add(meta.isReadOnly(i));
	    writable.add(meta.isWritable(i));
	    definitelyWritable.add(meta.isDefinitelyWritable(i));
	    columnClassName.add(meta.getColumnClassName(i));
	}
    }

    public ResultSetMetaDataHolder getResultSetMetaDataHolder() {
        return resultSetMetaDataHolder;
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy