view src/main/java/nl/cwi/monetdb/embedded/mapping/AbstractResultTable.java @ 41:3a19ebf83af6 embedded

Arranged code in packages and starting tables integration.
author Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
date Mon, 07 Nov 2016 23:31:02 +0100 (2016-11-07)
parents
children dfea8468cd1a
line wrap: on
line source
package nl.cwi.monetdb.embedded.mapping;

import nl.cwi.monetdb.embedded.env.AbstractConnectionResult;
import nl.cwi.monetdb.embedded.env.MonetDBEmbeddedConnection;

/**
 * Base class for statement results with data
 *
 * @author <a href="mailto:pedro.ferreira@monetdbsolutions.com">Pedro Ferreira</a>
 */
public abstract class AbstractResultTable extends AbstractConnectionResult {

    public AbstractResultTable(MonetDBEmbeddedConnection connection) {
        super(connection);
    }

    /**
     * Returns an array of columns in the result set;
     *
     * @return An array of columns in the result set;
     */
    protected abstract AbstractColumn<?>[] getColumns();

    /**
     * Returns the number of columns in the result set.
     *
     * @return Number of columns
     */
    public abstract int getNumberOfColumns();

    /**
     * Returns the number of rows in the result set.
     *
     * @return Number of rows
     */
    public abstract int getNumberOfRows();

    /**
     * Get the columns names as a string array.
     *
     * @return The columns names array
     */
    public String[] getColumnNames() {
        int i = 0;
        String[] result = new String[this.getNumberOfColumns()];
        for(AbstractColumn col : this.getColumns()) {
            result[i] = col.getColumnName();
        }
        return result;
    }

    /**
     * Get the columns types as a string array.
     *
     * @return The columns types array
     */
    public String[] getColumnTypes() {
        int i = 0;
        String[] result = new String[this.getNumberOfColumns()];
        for(AbstractColumn col : this.getColumns()) {
            result[i] = col.getColumnType();
        }
        return result;
    }

    /**
     * Get the Java mappings as a MonetDBToJavaMapping array.
     *
     * @return The columns MonetDBToJavaMapping array
     */
    public MonetDBToJavaMapping[] getMappings() {
        int i = 0;
        MonetDBToJavaMapping[] result = new MonetDBToJavaMapping[this.getNumberOfColumns()];
        for(AbstractColumn col : this.getColumns()) {
            result[i] = col.getMapping();
        }
        return result;
    }

    /**
     * Get the columns digits as a int array.
     *
     * @return The columns digits array
     */
    public int[] getColumnDigits() {
        int i = 0;
        int[] result = new int[this.getNumberOfColumns()];
        for(AbstractColumn col : this.getColumns()) {
            result[i] = col.getColumnDigits();
        }
        return result;
    }

    /**
     * Get the columns scales as a int array.
     *
     * @return The columns scales array
     */
    public int[] getColumnScales() {
        int i = 0;
        int[] result = new int[this.getNumberOfColumns()];
        for(AbstractColumn col :this.getColumns()) {
            result[i] = col.getColumnScale();
        }
        return result;
    }
}