Package xbird.util.jdbc.handlers

Source Code of xbird.util.jdbc.handlers.MapHandler

/*
* @(#)$Id: MapHandler.java 3619 2008-03-26 07:23:03Z yui $
*
* Copyright 2006-2008 Makoto YUI
*
* Licensed 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.
*
* Contributors:
*     Makoto YUI - initial implementation
*/
package xbird.util.jdbc.handlers;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;

import xbird.util.jdbc.ResultSetHandler;

/**
*
* <DIV lang="en"></DIV>
* <DIV lang="ja"></DIV>
*
* @author Makoto YUI <yuin405+xbird@gmail.com>
*/
public class MapHandler implements ResultSetHandler {

    //--------------------------------------------
    // Constants

    private static final int DEFAULT_KEY_INDEX = 1;

    private static final int DEFAULT_VALUE_INDEX = 2;

    //--------------------------------------------
    // Instance variables

    protected final int keyIndex;

    protected final int valueIndex;

    protected int extraCapacity = 8;

    protected Map map = null;

    //--------------------------------------------

    public MapHandler(int extraCapacity) {
        this(DEFAULT_KEY_INDEX, DEFAULT_VALUE_INDEX, extraCapacity);
    }

    public MapHandler(int keyIndex, int valueIndex, int extraCapacity) {
        this.keyIndex = keyIndex;
        this.valueIndex = valueIndex;
        this.extraCapacity = extraCapacity;
    }

    public MapHandler(Map map) {
        this(map, DEFAULT_KEY_INDEX, DEFAULT_VALUE_INDEX);
    }

    public MapHandler(Map map, int keyIndex, int valueIndex) {
        this.keyIndex = keyIndex;
        this.valueIndex = valueIndex;
        this.map = map;
    }

    public Map handle(ResultSet rs) throws SQLException {
        Map retMap = this.map;
        if(rs.next()) {
            if(retMap == null) {
                final int columnSize = rs.getMetaData().getColumnCount();
                retMap = new HashMap(columnSize + extraCapacity);
            }
        } else {
            return Collections.EMPTY_MAP; // immutable
        }
        do {
            Object key = rs.getObject(keyIndex);
            if(key == null) { // sanity check
                throw new SQLException("key value is not found: " + keyIndex);
            }
            retMap.put(key, rs.getObject(valueIndex));
        } while(rs.next());
        return retMap;
    }

}
TOP

Related Classes of xbird.util.jdbc.handlers.MapHandler

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.