Package org.apache.isis.objectstore.sql.jdbc

Source Code of org.apache.isis.objectstore.sql.jdbc.JdbcResults

/*
*  Licensed to the Apache Software Foundation (ASF) under one
*  or more contributor license agreements.  See the NOTICE file
*  distributed with this work for additional information
*  regarding copyright ownership.  The ASF licenses this file
*  to you under the Apache License, Version 2.0 (the
*  "License"); you may not use this file except in compliance
*  with the License.  You may obtain a copy of the License at
*
*        http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing,
*  software distributed under the License is distributed on an
*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
*  KIND, either express or implied.  See the License for the
*  specific language governing permissions and limitations
*  under the License.
*/

package org.apache.isis.objectstore.sql.jdbc;

import java.io.InputStream;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.HashMap;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

import org.apache.isis.applib.value.Date;
import org.apache.isis.applib.value.Time;
import org.apache.isis.objectstore.sql.Defaults;
import org.apache.isis.objectstore.sql.Results;
import org.apache.isis.objectstore.sql.SqlObjectStoreException;

public class JdbcResults implements Results {
    ResultSet set;

    public JdbcResults(final CallableStatement statement) {
    }

    public JdbcResults(final ResultSet set) {
        this.set = set;
    }

    @Override
    public void close() {
        try {
            set.close();
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public int getInt(final String columnName) {
        try {
            return set.getInt(columnName);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public long getLong(final String columnName) {
        try {
            return set.getLong(columnName);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public String getString(final String columnName) {
        try {
            return set.getString(columnName);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public boolean next() {
        try {
            return set.next();
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public java.sql.Date getJavaDateOnly(final String columnName) {
        try {
            // 2010-03-05 = 1267747200000
            // 2010-04-08 = 1270684800000
            // This is really painful! Java refuses to create java.util.Date in
            // UTC!
            // It creates java.util.Dates in Local time-zone, but assumes the DB
            // date is UTC.
            final String string = set.getString(columnName);
            final DateTime utcDate = new DateTime(string, Defaults.getTimeZone());
            final java.sql.Date date = new java.sql.Date(utcDate.getMillis());
            return date;
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public java.sql.Time getJavaTimeOnly(final String columnName) {
        try {
            final String string = set.getString(columnName);

            final DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm:ss");

            final DateTime utcDate = formatter.withZone(Defaults.getTimeZone()).parseDateTime(string);
            final java.sql.Time time = new java.sql.Time(utcDate.getMillis());

            return time;
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public java.util.Date getJavaDateTime(final String columnName, final Calendar calendar) {
        try {
            return set.getDate(columnName, calendar);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public Object getObject(final String columnName) {
        try {
            return set.getObject(columnName);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public Date getDate(final String columnName) {
        try {
            // 2010-03-05 = 1267747200000
            // 2010-04-08 = 1270684800000
            // This is really painful! Java refuses to create java.util.Date in
            // UTC!
            // It creates java.util.Dates in Local time-zone, but assumes the DB
            // date is UTC.
            final String string = set.getString(columnName);
            final DateTime utcDate = new DateTime(string, Defaults.getTimeZone());
            return new Date(utcDate);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public Time getTime(final String columnName) {
        try {
            final String string = set.getString(columnName);
            final DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm:ss");
            final DateTimeZone defaultTimeZone = Defaults.getTimeZone();
            final DateTime utcDate = formatter.withZone(defaultTimeZone).parseDateTime(string);
            return new Time(utcDate);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public double getDouble(final String columnName) {
        try {
            return set.getDouble(columnName);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public Object getAsType(final String columnName, final Class<?> clazz) {
        try {
            final HashMap<String, Class<?>> map = new HashMap<String, Class<?>>();
            map.put("FLOAT", float.class);
            return set.getObject(columnName, map);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public Float getFloat(final String columnName) {
        try {
            return set.getFloat(columnName);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public Short getShort(final String columnName) {
        try {
            return set.getShort(columnName);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public Boolean getBoolean(final String columnName) {
        try {
            return set.getBoolean(columnName);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }

    @Override
    public InputStream getStream(String column) {
        try {
            return set.getBinaryStream(column);
        } catch (final SQLException e) {
            throw new SqlObjectStoreException(e);
        }
    }
}
TOP

Related Classes of org.apache.isis.objectstore.sql.jdbc.JdbcResults

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.