Open the menu

    Source

    Um source é a representação de repositório de dados que possui um conjunto de campos. Ele determina o esquema dos dados e popula os controles, que são os componentes visuais das interfaces DOUI.

    O data provider é o responsável por obter dados junto a uma fonte de dados (por exemplo, uma tabela de banco de dados ou um arquivo texto) e popular um source.

    Portanto, todos os dados apresentandos nas interfaces DOUI são obtidos através de sources e data providers.

    Um source consiste em uma classe que estende a classe Source. Sua hierarquia é assim definida:

    1. A classe Source possui a implementação da infraestrutura de um source. É uma classe abstrata, ainda sem definição sobre como os dados são persistidos ou organizados;

    2. A classe TabularSource estende Source, acrescentando a lógica de que os dados estão organizados em uma forma tabular, em linhas e colunas, sendo que cada linha representa um dado e cada campo uma coluna. Há um campo que é a chave primária. O valor desse campo nunca repete e pode ser utilizado para identificar uma linha.

      Os dados desse tipo de source são armazenados em uma instância de TabularData.

      Esta classe também é abstrata, por não definir sobre como os dados são persistidos.

    3. A classe TableSource estende TabularSource, acrescentando a funcionalidade de poder mapear campos do source diretamente com colunas de uma tabela de uma base de dados. Deve-se especificar o atributo type com valor “table” na definição do source.

      Este tipo de source possui um IDataProvider, que é responsável em prover dados ao source. A implementação de IDataProvider default é um TableDataProvider, que lê os dados da tabela com o nome especificado no nó table dentro do source. As colunas lidas são conforme os identificadores dos campos, ou o atributo opcional columnName nos campos.

      É possível utilizar um DataProvider customizado. Para tal, na definição do source deve ser definido um dos elementos dataproviderClassName ou dataproviderScriptPath. Nesse caso, se o elemento dataproviderClassName for definido, ele deve conter o nome da classe que implementa o IDataProvider, já se for definido o elemento dataproviderScriptPath, este deve conter o caminho do arquivo de script que define a classe Java implementando o IDataProvider. Dessa forma, ao invés do TableSource utilizar sua forma padrão de leitura de dados, o IDataProvider especificado será chamado quando o source precisar ter seus dados lidos.

    O ciclo de vida de um source é:

    • Sua instância é construída;
    • Seu método loadData() é executado, onde seus dados são carregados.