package org.kevoree.library.databaseChannel;
import net.sf.hajdbc.SimpleDatabaseClusterConfigurationFactory;
import net.sf.hajdbc.SynchronizationStrategy;
import net.sf.hajdbc.cache.DatabaseMetaDataCacheFactoryEnum;
import net.sf.hajdbc.dialect.DialectFactoryEnum;
import net.sf.hajdbc.sql.DataSource;
import net.sf.hajdbc.sql.DataSourceDatabase;
import net.sf.hajdbc.sql.DataSourceDatabaseClusterConfiguration;
import net.sf.hajdbc.state.simple.SimpleStateManagerFactory;
import net.sf.hajdbc.sync.FullSynchronizationStrategy;
import org.daum.hajdbc.UrlDataSource;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
/**
* Created by jed
* User: jedartois@gmail.com
* Date: 09/05/12
* Time: 16:30
*/
public class Tester {
public static void main(String test[]) {
DataSourceDatabase db1 = new DataSourceDatabase();
db1.setId("node0");
db1.setName(UrlDataSource.class.getName());
db1.setProperty("url", "jdbc:derby://127.0.0.1:1527/node0");
db1.setUser("daum");
db1.setPassword("daum");
DataSourceDatabase db2 = new DataSourceDatabase();
db2.setId("node1");
db2.setName(UrlDataSource.class.getName());
db2.setProperty("url", "jdbc:derby://127.0.0.1:1528/node1");
db2.setUser("daum");
db2.setPassword("daum");
List<DataSourceDatabase> dataSourceDatabases = new ArrayList<DataSourceDatabase>();
dataSourceDatabases.add(db1);
dataSourceDatabases.add(db2);
DataSourceDatabaseClusterConfiguration config = new DataSourceDatabaseClusterConfiguration();
config.setDatabases(dataSourceDatabases);
config.setDialectFactory(DialectFactoryEnum.DERBY);
config.setDatabaseMetaDataCacheFactory(DatabaseMetaDataCacheFactoryEnum.SHARED_EAGER);
/*
DefaultChannelProvider channel = new DefaultChannelProvider();
config.setDispatcherFactory(channel);
*/
HashMap<String,SynchronizationStrategy> t = new HashMap<String, SynchronizationStrategy>();
SynchronizationStrategy t2 = new FullSynchronizationStrategy();
t.put("jed",t2);
config.setSynchronizationStrategyMap(t);
config.setDefaultSynchronizationStrategy("jed");
SimpleStateManagerFactory state = new SimpleStateManagerFactory();
config.setStateManagerFactory(state);
final DataSource ds = new DataSource();
ds.setCluster("kevoreeCluster");
ds.setConfigurationFactory(new SimpleDatabaseClusterConfigurationFactory<javax.sql.DataSource, DataSourceDatabase>(config));
/*
try {
String createSQL1 = "DROP TABLE test";
Connection c1 = ds.getConnection("daum", "daum");
Statement s1 = c1.createStatement();
s1.execute(createSQL1);
s1.close();
} catch (Exception e) {
}
*/
/*
String createSQL = "CREATE TABLE test (id INTEGER NOT NULL, name VARCHAR(10) NOT NULL, PRIMARY KEY (id))";
try {
Connection c = ds.getConnection("daum","daum");
Statement s1 = c.createStatement();
s1.execute(createSQL);
s1.close();
} catch (Exception e) {
System.out.println("node 0");
}
*/
Connection db=null;
PreparedStatement ps=null;
try {
Statement stmt = null;
/*
db = ds.getConnection("daum", "daum");
stmt = db.createStatement();
stmt.execute("DELETE FROM test");
stmt.close(); */
Random rand = new Random();
int i =0;
while(i <50){
db = ds.getConnection("daum", "daum");
db.setAutoCommit(false);
ps = db.prepareStatement("INSERT INTO test (id, name) VALUES (?, ?)");
ps.setInt(1,rand.nextInt(9000000));
ps.setString(2, "1");
ps.addBatch();
ps.setInt(1, rand.nextInt(9000000));
ps.setString(2, "2");
ps.addBatch();
ps.executeBatch();
ps.close();
db.commit();
i++;
}
String selectSQL = "SELECT id, name FROM test";
try {
db = ds.getConnection("daum", "daum");
stmt = db.createStatement();
i=0;
ResultSet rs1 = stmt.executeQuery(selectSQL);
while(rs1.next())
{
// System.out.println("node 0 ->"+rs1.getInt(1)+" "+rs1.getString(2));
i++;
}
System.out.println("coutn = "+i);
} catch (Exception e) {
System.out.print(e.getCause());
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if(db != null)
db.close();
} catch (SQLException e) {
}
try {
if(ps !=null)
ps.close();
} catch (SQLException e) {
}
}
}
}