Vou explicar o caso concreto pra vocês:
A Classe pai a que me refiro é a seguinte:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* Provê a estrutura de fábrica de conexões.
*
* @author Enio Carvalho
* @version 1.0.0.1
*
*/
public abstract class ConnectionFactory implements IConnectionFactory {
@Override
public abstract String getDriver();
@Override
public abstract String getUrl();
@Override
public Connection getConnection() {
try {
Class.forName(getDriver());
if (getUser() != null) {
return DriverManager.getConnection(getUrl(), getUser(), getPwd());
} else {
return DriverManager.getConnection(getUrl());
}
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
@Override
public abstract String getSgdbName();
/**
* Armazena o usuário da conexão.
*/
private String user;
/**
* Devolve o usuário da conexão.
*
* @return retorna o usuario da conexão.
*/
public String getUser() {
return user;
}
/**
* Atribui um usuário a conexão.
*
* @param user
* usuário de banco.
*/
public void setUser(String user) {
this.user = user;
}
/**
* Armazena a senha da conexão.
*/
private String pwd;
/**
* Devolve a senha da conexão.
*
* @return retorna a senha da conexão.
*/
public String getPwd() {
return pwd;
}
/**
* Atribui uma senha à conexão.
*
* @param pwd
* Senha descriptografada.
* @see #setUser
*/
void setPwd(String pwd) {
this.pwd = pwd;
}
}
A classe filha que me refiro é mais ou menos a seguinte:
public class SqliteConnectionFactory extends ConnectionFactory {
@Override
public String getDriver() {
return "org.sqlite.JDBC";
}
@Override
public String getSgdbName() {
return "SQLite";
}
@Override
public String getUrl() {
return getDriver() + getDbFileName();
}
/**
* Seta o nome do arquivo que contém o database Sqlite.
*
* @param dbFileName
* Nome do arquivo que contém o database Sqlite.
*/
public void setDbFileName(String dbFileName) {
this.dbFileName = dbFileName;
}
/**
* Devolve o nome do arquivo que contém o database Sqlite.
*
* @return Retorna o nome do arquivo que contém o database Sqlite.
*/
public String getDbFileName() {
return dbFileName;
}
/**
* Armazena o nome do arquivo que contém o database Sqlite.
*/
private String dbFileName;
}
Todos os SGDBs que conheço utilizam autentucação. Entretanto, o SGDB (isto se podemos chamá-lo assim) SQLite não utiliza usuário ou senha. Pra quem não conhece, ele é um arquivo que tem a maioria das funcionalidades de um SGDB, cujo acesso às tabelas é permitido a quem tem acesso ao arquivo.
, Acho que o mais apropriado é que quem estivesse utilizando a classe filha, não visse os métodos getUser, setUser, getPwd e setPwd.
O que acham?
Peço por favor a ajuda de vocês.