package arida.ufc.br.moap.core.database.spi;
import arida.ufc.br.moap.core.datasource.spi.IDataSource;
import arida.ufc.br.moap.core.spi.IDataModel;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.log4j.Logger;
/**
*
* @author franzejr
*/
public abstract class AbstractDatabase implements IDataSource {
private static Logger logger = Logger.getLogger(AbstractDatabase.class);
protected static ConnectionProperty p;
protected static Connection connection;
protected static AbstractDatabase instance;
protected String user;
protected String password;
protected String url;
public AbstractDatabase(String user, String password, String url){
this.user = user;
this.password = password;
this.url = url;
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
public AbstractDatabase(){
p = null;
try {
p = ConnectionProperty.getInstance();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
connection = p.getConnection();
logger.info(ConnectionProperty.getString());
}
public Connection getConnection(){
return AbstractDatabase.connection;
}
/**
*
* Get an instance from a connection
* @return Instance
*/
public abstract AbstractDatabase getInstance();
public String toString() {
return ConnectionProperty.getString();
}
public abstract String getDriverClass();
/*
*
* //TODO
* Get the model detection automatically
*/
public abstract IDataModel retrieveInstances(String query, IDataModel model);
}