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

cz.cvut.kbss.ontodriver.sesame.query.AskResultSet Maven / Gradle / Ivy

/**
 * Copyright (C) 2020 Czech Technical University in Prague
 *
 * 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 (at your option) 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 .
 */
package cz.cvut.kbss.ontodriver.sesame.query;

import cz.cvut.kbss.ontodriver.Statement;
import cz.cvut.kbss.ontodriver.exception.OntoDriverException;
import cz.cvut.kbss.ontodriver.sesame.exceptions.SesameDriverException;

public class AskResultSet extends AbstractResultSet {

    private final boolean result;

    public AskResultSet(boolean result, Statement statement) {
        super(statement);
        this.result = result;
    }

    @Override
    public int findColumn(String columnLabel) {
        return 0;
    }

    @Override
    public int getColumnCount() {
        return 1;
    }

    @Override
    public boolean isBound(int variableIndex) {
        // Return always true, as we do not care about index/name for ASK results
        return true;
    }

    @Override
    public boolean isBound(String variableName) {
        // Return always true, as we do not care about index/name for ASK results
        return true;
    }

    // We discard column index and column name, because in a boolean result, there is no such concept. Therefore,
    // the result is returned for any column index and column name.

    @Override
    public boolean getBoolean(int columnIndex) throws OntoDriverException {
        ensureState();
        return result;
    }

    private void ensureState() throws OntoDriverException {
        ensureOpen();
        if (!isFirst()) {
            throw new IllegalStateException("Must call next before getting the first value.");
        }
    }

    @Override
    public boolean getBoolean(String columnLabel) throws OntoDriverException {
        ensureState();
        return result;
    }

    @Override
    public byte getByte(int columnIndex) throws OntoDriverException {
        ensureState();
        throw unsupported("byte");
    }

    private static UnsupportedOperationException unsupported(String type) {
        return new UnsupportedOperationException("ASK query results cannot return " + type + "values.");
    }

    @Override
    public byte getByte(String columnLabel) throws OntoDriverException {
        ensureState();
        throw unsupported("byte");
    }

    @Override
    public double getDouble(int columnIndex) throws OntoDriverException {
        ensureState();
        throw unsupported("double");
    }

    @Override
    public double getDouble(String columnLabel) throws OntoDriverException {
        ensureState();
        throw unsupported("double");
    }

    @Override
    public float getFloat(int columnIndex) throws OntoDriverException {
        ensureState();
        throw unsupported("float");
    }

    @Override
    public float getFloat(String columnLabel) throws OntoDriverException {
        ensureState();
        throw unsupported("float");
    }

    @Override
    public int getInt(int columnIndex) throws OntoDriverException {
        ensureState();
        throw unsupported("int");
    }

    @Override
    public int getInt(String columnLabel) throws OntoDriverException {
        ensureState();
        throw unsupported("int");
    }

    @Override
    public long getLong(int columnIndex) throws OntoDriverException {
        ensureState();
        throw unsupported("long");
    }

    @Override
    public long getLong(String columnLabel) throws OntoDriverException {
        ensureState();
        throw unsupported("long");
    }

    @Override
    public Object getObject(int columnIndex) throws OntoDriverException {
        ensureState();
        return result;
    }

    @Override
    public Object getObject(String columnLabel) throws OntoDriverException {
        ensureState();
        return result;
    }

    @Override
    public  T getObject(int columnIndex, Class cls) throws OntoDriverException {
        ensureState();
        return toType(cls);
    }

    @Override
    public  T getObject(String columnLabel, Class cls) throws OntoDriverException {
        ensureState();
        return toType(cls);
    }

    private  T toType(Class type) throws OntoDriverException {
        if (type.isAssignableFrom(Boolean.class)) {
            return type.cast(result);
        }
        if (type.isAssignableFrom(String.class)) {
            return type.cast(getString(0));
        }
        throw new SesameDriverException("Unable to return boolean result as type " + type);
    }

    @Override
    public short getShort(int columnIndex) throws OntoDriverException {
        ensureState();
        throw unsupported("short");
    }

    @Override
    public short getShort(String columnLabel) throws OntoDriverException {
        ensureState();
        throw unsupported("short");
    }

    @Override
    public String getString(int columnIndex) throws OntoDriverException {
        ensureState();
        return Boolean.toString(result);
    }

    @Override
    public String getString(String columnLabel) throws OntoDriverException {
        ensureState();
        return Boolean.toString(result);
    }

    @Override
    public boolean hasNext() throws OntoDriverException {
        ensureOpen();
        return !isFirst();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy