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

com.quinsoft.zeidon.dbhandler.SqliteJdbcHandler Maven / Gradle / Ivy

There is a newer version: 2.2.0
Show newest version
/**
    This file is part of the Zeidon Java Object Engine (Zeidon JOE).

    Zeidon JOE is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Zeidon JOE 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 Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with Zeidon JOE.  If not, see .

    Copyright 2009-2015 QuinSoft
 */
package com.quinsoft.zeidon.dbhandler;

import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.lang3.StringUtils;
import org.sqlite.SQLiteConfig;
import org.sqlite.SQLiteOpenMode;

import com.quinsoft.zeidon.AbstractOptionsConfiguration;
import com.quinsoft.zeidon.Application;
import com.quinsoft.zeidon.Task;

/**
 * JDBC handler for mysql that uses "lock table" to lock the genkey table.
 *
 * @author dg
 *
 */
public class SqliteJdbcHandler extends JdbcHandler
{

    public SqliteJdbcHandler(Task task, AbstractOptionsConfiguration options )
    {
        super( task, options );
    }

    /**
     * Indicate that we always want to add the value of the generated key to the
     * insert statement.  This should result in a value of NULL.  Sqlite requires
     * genkeys (i.e. columns that are specified as INTEGER PRIMARY KEY) be set
     * to NULL for insert statements.
     *
     * NOTE: was needed for older Sqlite.  Does not appear to be needed anymore
     * so for now we're returning false (2018-02-17).
     */
    @Override
    protected boolean addGeneratedKeyForInsert()
    {
        return false;
    }

    @Override
    protected void initializeBasicDataSource( BasicDataSource dataSource,
                                              Task task,
                                              Application application)
    {
        String openModes = getConfigValue( "OpenModes" );
        if ( ! StringUtils.isBlank( openModes ) )
        {
            SQLiteConfig config = new SQLiteConfig();
            String[] modes = openModes.split( "," );
            for ( String mode : modes )
                config.setOpenMode(SQLiteOpenMode.valueOf( mode.trim().toUpperCase() ) );

            Properties props = config.toProperties();
            task.log().info( "Sqlite: setting open modes = %s", props );

            for ( Object prop : props.keySet() )
                dataSource.addConnectionProperty( prop.toString(), props.getProperty( prop.toString() ) );
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy