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

org.unlaxer.jaddress.dao.JyuusyoJPDomaSingletonConfig Maven / Gradle / Ivy

package org.unlaxer.jaddress.dao;

import java.nio.file.Path;

import javax.sql.DataSource;

import org.seasar.doma.SingletonConfig;
import org.seasar.doma.jdbc.Config;
import org.seasar.doma.jdbc.SimpleDataSource;
import org.seasar.doma.jdbc.dialect.Dialect;
import org.seasar.doma.jdbc.dialect.SqliteDialect;
import org.seasar.doma.jdbc.tx.LocalTransactionDataSource;
import org.seasar.doma.jdbc.tx.LocalTransactionManager;
import org.seasar.doma.jdbc.tx.TransactionManager;
import org.unlaxer.jaddress.UserHomeContext;

@SingletonConfig
public class JyuusyoJPDomaSingletonConfig implements Config {

    private static final JyuusyoJPDomaSingletonConfig CONFIG = new JyuusyoJPDomaSingletonConfig();

    private final Dialect dialect;

    private final LocalTransactionDataSource dataSource;

    private final TransactionManager transactionManager;
    
    private JyuusyoJPDomaSingletonConfig() {
    	this(UserHomeContext.getPathWithFolderAndFile("jyuusyojp","zenkoku.sqlite3"));
    }

    private JyuusyoJPDomaSingletonConfig(Path pathToSqlite) {
        dialect = new SqliteDialect();
        
		String dbUrl= "jdbc:sqlite:" + pathToSqlite.toString();
		
		SimpleDataSource simpleDataSource = new SimpleDataSource();
		
		simpleDataSource.setUrl(dbUrl);

        dataSource = new LocalTransactionDataSource(simpleDataSource);
        
        transactionManager = new LocalTransactionManager(
                dataSource.getLocalTransaction(getJdbcLogger()));
    }

    @Override
    public Dialect getDialect() {
        return dialect;
    }

    @Override
    public DataSource getDataSource() {
        return dataSource;
    }

    @Override
    public TransactionManager getTransactionManager() {
        return transactionManager;
    }

    public static JyuusyoJPDomaSingletonConfig singleton() {
        return CONFIG;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy