/* Copyright (c) 2001-2009, The HSQL Development Group * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of the HSQL Development Group nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG, * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.hsqldb.result; /* * Execute properties for SELECT statements. * * @author Fred Toussi (fredt@users dot sourceforge.net) * @version 1.9.0 * @since 1.9.0 */ public class ResultProperties { // final static int idx_returnable = 0; final static int idx_holdable = 1; final static int idx_scrollable = 2; final static int idx_updatable = 3; final static int idx_sensitive = 4; // public static final int defaultPropsValue = 0; public static final int updatablePropsValue = 1 << idx_updatable; // uses SQL constants - no JDBC public static int getProperties(int sensitive, int updatable, int scrollable, int holdable, int returnable) { int combined = (sensitive << idx_sensitive) | (updatable << idx_updatable) | (scrollable << idx_scrollable) | (holdable << idx_holdable) | (returnable << idx_returnable); return combined; } public static int getJDBCHoldability(int props) { return isHoldable(props) ? ResultConstants.HOLD_CURSORS_OVER_COMMIT : ResultConstants.CLOSE_CURSORS_AT_COMMIT; } public static int getJDBCConcurrency(int props) { return isReadOnly(props) ? ResultConstants.CONCUR_READ_ONLY : ResultConstants.CONCUR_UPDATABLE; } public static int getJDBCScrollability(int props) { return isScrollable(props) ? ResultConstants.TYPE_SCROLL_INSENSITIVE : ResultConstants.TYPE_FORWARD_ONLY; } public static int getValueForJDBC(int type, int concurrency, int holdability) { int scrollable = type == ResultConstants.TYPE_FORWARD_ONLY ? 0 : 1; int updatable = concurrency == ResultConstants.CONCUR_UPDATABLE ? 1 : 0; int holdable = holdability == ResultConstants.HOLD_CURSORS_OVER_COMMIT ? 1 : 0; int prop = (updatable << idx_updatable) | (scrollable << idx_scrollable) | (holdable << idx_holdable); return prop; } public static boolean isUpdatable(int props) { return (props & (1 << idx_updatable)) == 0 ? false : true; } public static boolean isScrollable(int props) { return (props & (1 << idx_scrollable)) == 0 ? false : true; } public static boolean isHoldable(int props) { return (props & (1 << idx_holdable)) == 0 ? false : true; } public static boolean isSensitive(int props) { return (props & (1 << idx_sensitive)) == 0 ? false : true; } public static boolean isReadOnly(int props) { return (props & (1 << idx_updatable)) == 0 ? true : false; } public static int addUpdatable(int props, boolean flag) { return flag ? props | ((1) << idx_updatable) : props & (~(1 << idx_updatable)); } public static int addHoldable(int props, boolean flag) { return flag ? props | ((1) << idx_holdable) : props & (~(1 << idx_holdable)); } public static int addScrollable(int props, boolean flag) { return flag ? props | ((1) << idx_scrollable) : props & (~(1 << idx_scrollable)); } }