forked from Coded/SIPRP
git-svn-id: https://svn.coded.pt/svn/SIPRP@1521 bb69d46d-e84e-40c8-a05a-06db0d633741
parent
72a08143c3
commit
58e860b8be
@ -0,0 +1,121 @@
|
||||
/*
|
||||
* To change this template, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
|
||||
package db.providers;
|
||||
|
||||
import com.evolute.entity.evo.EvoDataProvider;
|
||||
import com.evolute.utils.Singleton;
|
||||
import com.evolute.utils.db.DBException;
|
||||
import com.evolute.utils.db.DBManager;
|
||||
import com.evolute.utils.db.Executer;
|
||||
import com.evolute.utils.db.JDBCManager;
|
||||
import com.evolute.utils.db.keyretrievers.PostgresqlAutoKeyRetriever;
|
||||
import com.evolute.utils.jdbc.DBStatementExecuter;
|
||||
import com.evolute.utils.jdbc.StatementExecuterFactory;
|
||||
import com.evolute.utils.sql.Insert;
|
||||
import com.evolute.utils.sql.SQLQuery;
|
||||
import com.evolute.utils.strings.UnicodeChecker;
|
||||
import db.Db;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author dneves
|
||||
*/
|
||||
public class EvoBaseProvider
|
||||
{
|
||||
private static EvoBaseProvider INSTANCE = null;
|
||||
|
||||
private EvoDataProvider providerInterface;
|
||||
private DBManager dbManager;
|
||||
|
||||
private static final String DB_URL_FULL = "db.url.full";
|
||||
|
||||
private EvoBaseProvider() throws DBException
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
public static synchronized EvoBaseProvider getInstance() throws DBException
|
||||
{
|
||||
if ( INSTANCE == null )
|
||||
{
|
||||
INSTANCE = new EvoBaseProvider();
|
||||
}
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
private void init() throws DBException
|
||||
{
|
||||
System.out.println( "EvoBaseProvider . init() : " );
|
||||
|
||||
Db db = new Db();
|
||||
String server = db.getServer();
|
||||
Integer port = db.getPort();
|
||||
String dbname = db.getDb_name();
|
||||
String username = db.getUser();
|
||||
String password = db.getPass();
|
||||
|
||||
System.out.println( "\t" + server + " : " + port + " : " + dbname + " : " + username + " : " + password );
|
||||
|
||||
init( server, port, dbname, username, password );
|
||||
}
|
||||
|
||||
private void init( String dbServer, Integer dbPort, String dbName, String dbUsername, String dbPassword )
|
||||
throws DBException
|
||||
{
|
||||
String dbUrl = "jdbc:postgresql://" + dbServer + ":" + dbPort + "/" + dbName + "?prepareThreshold=2";
|
||||
Singleton.setInstance( DB_URL_FULL, dbUrl );
|
||||
|
||||
createDBManager( dbUsername, dbPassword );
|
||||
initProviderConnection( dbUsername, dbPassword );
|
||||
}
|
||||
|
||||
private void createDBManager( String username, String password )
|
||||
throws DBException
|
||||
{
|
||||
if( dbManager != null )
|
||||
{
|
||||
dbManager.close();
|
||||
}
|
||||
String dbUrl = ( String ) Singleton.getInstance( DB_URL_FULL );
|
||||
DBManager manager = new JDBCManager( dbUrl, username, password , 14, 7, 7, new SQLQuery[] { } );
|
||||
StatementExecuterFactory.initialize( new DBStatementExecuter( manager.getSharedExecuter( EvoBaseProvider.class ) ) );
|
||||
UnicodeChecker.setUseDoubleSlash( true );
|
||||
Insert.setDefaultKeyRetriever( PostgresqlAutoKeyRetriever.RETRIEVER );
|
||||
dbManager = manager;
|
||||
Singleton.setInstance( Singleton.DEFAULT_DBMANAGER, dbManager );
|
||||
}
|
||||
|
||||
private void initProviderConnection( String username, String password )
|
||||
{
|
||||
String dbUrl = ( String ) Singleton.getInstance( DB_URL_FULL );
|
||||
providerInterface = EvoProviderFactory.createInstance( dbUrl, username, password );
|
||||
}
|
||||
|
||||
public EvoDataProvider getProvider()
|
||||
{
|
||||
return providerInterface;
|
||||
}
|
||||
|
||||
public DBManager getDbManager()
|
||||
{
|
||||
return dbManager;
|
||||
}
|
||||
|
||||
public Executer getExecuter() throws DBException
|
||||
{
|
||||
return getExecuter( this );
|
||||
}
|
||||
|
||||
private Executer getExecuter( Object clazz ) throws DBException
|
||||
{
|
||||
if ( getDbManager() == null )
|
||||
{
|
||||
init();
|
||||
}
|
||||
DBManager dbm = ( DBManager ) Singleton.getInstance( Singleton.DEFAULT_DBMANAGER );
|
||||
return dbm.getSharedExecuter( clazz );
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package db.providers;
|
||||
|
||||
import com.evolute.entity.ProviderRegistry;
|
||||
import com.evolute.entity.evo.EvoDataProvider;
|
||||
import com.evolute.entity.evo.EvoDataProviderFactory;
|
||||
import com.evolute.entity.utils.ConnectionIdentity;
|
||||
import com.evolute.utils.Singleton;
|
||||
|
||||
|
||||
public class EvoProviderFactory
|
||||
{
|
||||
public static EvoDataProvider createInstance( String url, String user, String password )
|
||||
{
|
||||
ProviderRegistry.registerDefaultProviderFactory( new EvoDataProviderFactory() );
|
||||
ConnectionIdentity conn = new ConnectionIdentity( url, user );
|
||||
ProviderRegistry.registerDefaultConnection( conn );
|
||||
EvoDataProvider provider = ( EvoDataProvider ) ProviderRegistry.getDefaultProvider( conn );
|
||||
provider.setIsUsingCache( Boolean.FALSE );
|
||||
Singleton.setInstance( Singleton.DEFAULT_OBJECT_PROVIDER, provider );
|
||||
conn.setPassword( password );
|
||||
return provider;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue