package org.beanfuse.db.replication;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import org.beanfuse.db.dialect.Dialect;
import org.beanfuse.db.replication.impl.DatabaseReplicator;
import org.beanfuse.db.replication.impl.DefaultTableFilter;
import org.beanfuse.db.replication.wrappers.DatabaseWrapper;
import org.beanfuse.db.util.DataSourceUtil;
public class ReplicatorMain {
public static void main(String[] args) throws Exception {
final Properties props = new Properties();
try {
InputStream is = DataSourceUtil.class.getResourceAsStream("/replication.properties");
if (null == is) {
throw new RuntimeException("cannot find replication.properties");
}
props.load(is);
} catch (IOException e) {
throw new RuntimeException("cannot find database.properties");
}
DatabaseWrapper source = new DatabaseWrapper(props.getProperty("source.schema"));
source.connect(DataSourceUtil.getDataSource("source"), (Dialect) (Class.forName(props
.getProperty("source.dialect")).newInstance()));
DatabaseWrapper target = new DatabaseWrapper(props.getProperty("target.schema"));
target.connect(DataSourceUtil.getDataSource("target"), (Dialect) (Class.forName(props
.getProperty("target.dialect")).newInstance()));
Replicator replicator = new DatabaseReplicator(source, target);
Set<String> tables = (Set) source.getMetadata().getTables().keySet();
DefaultTableFilter filter = new DefaultTableFilter();
filter.addExclude("PUBLIC.DUAL");
filter.addInclude("SUES_NEW.PYJH_T");
replicator.addTables(filter.filter(tables));
replicator.start();
}
}