/*
* Copyright (c) 2011 Patrick Meyer
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.itemanalysis.jmetrik.dao;
import com.itemanalysis.jmetrik.workspace.*;
import java.sql.Connection;
public class JmetrikDatabaseFactory {
private DatabaseType dbType = null;
public JmetrikDatabaseFactory(DatabaseType dbType){
this.dbType = dbType;
}
/**
* Returns a class for implementing specific database URLs.
*
* @return
*/
public DatabaseConnectionURL getDatabaseConnectionURL(){
switch (dbType) {
case APACHE_DERBY:
return new DerbyDatabaseConnectionURL();
case MYSQL:
break;
case MICROSOFT_SQL:
break;
}
return new DerbyDatabaseConnectionURL();//default
}
/**
* Returns a SwingWorker class for importing data
*
* @param conn
* @param command
* @return
*/
public DelimitedFileImporter getDelimitedFileImporter(Connection conn, ImportCommand command){
switch (dbType) {
case APACHE_DERBY:
return new DerbyDelimitedFileImporter(conn, command);
case MYSQL:
break;
case MICROSOFT_SQL:
break;
}
return new DerbyDelimitedFileImporter(conn, command);//default is APACHE_DERBY database
}
public DelimitedFileExporter getDelimitedFileExporter(Connection conn, ExportCommand command){
switch (dbType) {
case APACHE_DERBY:
return new DerbyDelimitedFileExporter(conn, command);
case MYSQL:
break;
case MICROSOFT_SQL:
break;
}
return new DerbyDelimitedFileExporter(conn, command);//default is APACHE_DERBY database
}
/**
* Database creators will probably only exist for Apache Derby.
* MySQL and other databases will likely already exist.
*
* @return
*/
public DatabaseCreator getDatabaseCreator(DatabaseCommand command){
switch (dbType) {
case APACHE_DERBY:
return new DerbyDatabaseCreator(command);
case MYSQL:
break;
case MICROSOFT_SQL:
break;
}
return new DerbyDatabaseCreator(command);//default is APACHE_DERBY database
}
/**
* Return a DatabaseDeleter for a given database system.
*
* @param command
* @return
*/
public DatabaseDeleter getDatabaseDeleter(DatabaseCommand command){
switch (dbType) {
case APACHE_DERBY:
return new DerbyDatabaseDeleter(command);
case MYSQL:
break;
case MICROSOFT_SQL:
break;
}
return new DerbyDatabaseDeleter(command);//default is APACHE_DERBY database
}
/**
* Return database access object.
*
*/
public DatabaseAccessObject getDatabaseAccessObject(){
switch (dbType) {
case APACHE_DERBY:
return new DerbyDatabaseAccessObject();
case MYSQL:
break;
case MICROSOFT_SQL:
break;
}
return new DerbyDatabaseAccessObject();//default is APACHE_DERBY database
}
public DatabaseTableDeleter getDatabaseTableDeleter(Connection conn, DatabaseAccessObject dao, DatabaseCommand command){
switch (dbType) {
case APACHE_DERBY:
return new DerbyDatabaseTableDeleter(conn, dao, command);
case MYSQL:
break;
case MICROSOFT_SQL:
break;
}
return new DerbyDatabaseTableDeleter(conn, dao, command);//default is APACHE_DERBY database
}
public DatabaseVariableDeleter getDatabaseVariableDeleter(Connection conn, DatabaseAccessObject dao, DeleteVariableCommand command){
switch (dbType) {
case APACHE_DERBY:
return new DerbyDatabaseVariableDeleter(conn, dao, command);
case MYSQL:
break;
case MICROSOFT_SQL:
break;
}
return new DerbyDatabaseVariableDeleter(conn, dao, command);//default is APACHE_DERBY database
}
public DatabaseVariableRenamer getDatabaseVariableRenamer(Connection conn, DatabaseAccessObject dao, RenameVariableCommand command){
switch (dbType) {
case APACHE_DERBY:
return new DerbyDatabaseVariableRenamer(conn, dao, command);
case MYSQL:
break;
case MICROSOFT_SQL:
break;
}
return new DerbyDatabaseVariableRenamer(conn, dao, command);//default is APACHE_DERBY database
}
}