Tribo do C.I.

Só mais um blog de informática (só que não)

Criando uma ConnectionFactory java com Xml

dezembro 6th, 2012

A maioria das aplicações trabalha com persistência de dados, ou seja, é necessário Gravar, Recuperar, Alterar e Deletar dados em algum Banco de Dados. Para essas 4 operações básicas é usada a sigla CRUD (Create, Read, Update, Delete) e é necessário uma conexão com o banco de dados para realizá-las. Para isso, é sempre criada uma classe com método(s) de Fábrica de Conexão (Connection Factory) e o código para isso fica parecido com o código mostrado na imagem abaixo:

Connection Factory

Os dados necessários para uma conexão com o banco são:

  • Usuário;
  • Senha;
  • URL de conexão;
  • Banco de Dados;

Porém, no exemplo da imagem acima, essas configurações ficam amarradas ao código, sendo necessário reescrever a classe e recompilar o programa a cada vez que qualquer um desses dados é alterado. Então a melhor sugestão seria criar um arquivo de configuração externo ao programa que mantem esses dados. Para isso utilizaremos dos recursos das classes: java.util.Properties, java.io.FileInputStreamjava.io.FileOutputStream.

Primeiro, criaremos uma classe que cuidará dessa parte, podemos nomeá-la JdbcConnection:

public class JdbcConnection {
private String user;
private String passwd;
private String url;
private String database;
//Criar getters e setters
}

Como o arquivo de configuração ainda não existe, teremos que criar, dentro da classe JdbcConnection um método para criação do arquivo Xml utilizando um objeto Properties:

    public void setProps(){
        Properties props = new Properties();

        props.setProperty("jdbc.user", "postgres");
        props.setProperty("jdbc.passwd", "senha");
        props.setProperty("jdbc.url", "jdbc:postgresql://localhost:5433");
        props.setProperty("jdbc.dataBase","banco");

        try {
            FileOutputStream fos = new FileOutputStream("config.xml");
            props.storeToXML(fos, "FILE JDBC PROPERTIES:","ISO-8859-1");
            fos.close();

        }catch (IOException e){
            System.out.println(e.getMessage());
        }

    }

Assim, será criado um arquivo parecido com esse:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>FILE JDBC PROPERTIES:</comment>
<entry key="jdbc.passwd">error#404</entry>
<entry key="jdbc.url">jdbc:postgresql://localhost:5433</entry>
<entry key="jdbc.user">postgres</entry>
<entry key="jdbc.dataBase">ponto</entry>
</properties>

Através das informações contidas nesse arquivo, iremos preencher os atributos de um objeto JdbcConnection, e para isso criamos o método abaixo:

    public void getProps (){
        Properties props = new Properties();

        try {
            //Setamos o arquivo que será lido
            FileInputStream fis = new FileInputStream("config.xml");
            //método load faz a leitura através do objeto fis
            props.loadFromXML(fis);
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
        //Captura o valor da propriedade, através do nome da propriedade(Key)
        this.setUser(props.getProperty("jdbc.user"));
        this.setPasswd(props.getProperty("jdbc.passwd"));
        this.setUrl(props.getProperty("jdbc.url"));
        this.setDatabase(props.getProperty("jdbc.dataBase"));

    }

E para finalizar, o nosso método de Conexão ficaria mais ou menos dessa forma:

    public static Connection getConnection(){
        Connection con = null;
        try {
            JdbcConnection jdbc = new JdbcConnection();
            jdbc.getProps();
            if (jdbc.getUrl() == null) {
                jdbc.setProps();
                jdbc.getProps();
            }

            con = (Connection) DriverManager.getConnection(jdbc.getUrl() + "/" + jdbc.getDatabase(), jdbc.getUser(), jdbc.getPasswd());
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return con;
    }

Note que é preciso testar se o arquivo existe, para que os atributos do objeto jdbc não venham vazios. A maneira mais prática e didática que veio na minha mente foi testar se algum dos atributos ainda está nulo mesmo depois da chamada jdbc.getProps(); e, caso esteja nulo, chamo jdbc.setProps(); com as configurações “amarradas” no código-fonte do seu sistema. Porém, depois do arquivo gerado é possível alterar sem problemas.

e2fsck returned with 4 no Fedora

outubro 22nd, 2012

O Fedora é louco! Direto dá uns pau sem noção e você fica até sem entender. Tirando isso é a melhor distribuição para o usuário final, na minha opinião. Bem, em um desses pau muito louco, quando você liga o computador, o Fedora inicia com um erro chamado: E2FSCK RETURNED WITH 4. Simplesmente ele te ‘empurra’ para o shell esperando que você o concerte.

Resolvendo o problema:

1- digite o comando: blkid

2-O shell irá listar para você os blocos dos sistemas de arquivos.

3-Veja qual é o caminho para o Logical Volume “_Fedora-X-XXX-“. Geralmente o caminho é este: /dev/mapper/vg-lv_root

4-Agora é só recuperar o sistema com o comando: fsck -yf /dev/mapper/vg-lv_root

Pronto, agora é só reinciar o computador e ver se deu certo. Se não, tente rodar o comando fsck na partição em que está instalado o Fedora. Tipo assim: fsck /dev/XXXX

Ah, se o seu sistema continuar dando problemas periodicamente com as partições ou sistemas de arquivos, é melhor dar uma verificada se o seu Hd não está danificado, hein… 😉

VirtualBox não abre no meu linux, e agora?

outubro 19th, 2012

Esses dias eu tentei abrir o Virtualbox no Linux e me deparei com um erro que dizia mais ou menos isso:

# VirtualBox
VirtualBox: supR3HardenedMainGetTrustedMain: dlopen(“/usr/lib/virtualbox/VirtualBox.so”,) failed: /lib/libQtOpenGL.so.4: undefined symbol: _ZNK14QWidgetPrivate17hasHeightForWidthEv

Resolvendo o problema:

1- Pode ser problemas de permissões no arquivo Virtualbox.so. Tente alterar as permissões que na maioria das vezes já resolve o problema. O arquivo fica na pasta: /usr/lib/virtualbox/

2- Se você usa um eToken, e o instalou no seu Linux, talvez ele crie alguns links do libQt na sua pasta de bibliotecas. Remova os links e tente abrir novamente o VirtualBox.
Geralmente os links simbólicos são criados na pasta: /usr/lib/eToken/

3- Se nenhuma das opções acima funcionou, tente resolver o problema reinstalando o Virtualbox e/ou o qt-x11.

😉

Tribo do C.I.

Tribo do C.I.

Só mais um blog de informática (só que não)