3.2 Estrutura do método de comunicação entre o Evolution Miner e a Aplicação Cliente 25
aplicação cliente pode personalizar a busca por meio de cinco opções de filtragem: Por au-
tor(es), Data(s), Intervalos de tempo, Palavra(s) chave de commits e nomes e versões de
arquivos. Esses filtros podem ser usados separadamente ou combinados. Uma vez espe-
cificados as informações básicas de acesso, o Evolution Miner estabelece a comunicação,
através do JavaCVS
[
Jav
]
, com o repositório especificado, recupera filtra o que é de interesse
do cliente e retorna o que foi requisitado.
Uma vez que o extractor recebe as informações da aplicação cliente, ele repassa para o
JavaCVS, que recebe as mesmas informações providas pelo cliente, e se comunica com o
repositório especificado, conforme as setas 2 e 3 respectivamente. O repositório retorna para
o JavaCVS uma lista com metadados dos arquivos requisitados (seta 4), a envia, juntamente
com os dados de filtragem fornecidos pelo cliente, para o extrator (seta 5), que os envia para
a camada de Filtros onde são realizadas as filtragens (seta 6). A opção por trazer apenas
os metadados nesse instante é um diferencial da nossa ferramenta, uma vez que os arquivos
reias só são minerados quando se sabe o que, de fato será minerado.
Após a filtragem dos metadados, restam apenas aqueles referentes ao que foi especificado
como parâmetros na aplicação cliente. Uma vez que agora sabe-se, de fato, que arquivos
devem ser retornados, a camada de Filtros reenvia essas informações para o Extrator (seta
7), que repete o processo de comunicação com o JavaCVS (seta 8), que por sua vez requisita
do repositório apenas os arquivos que, de fato, são de interesse do cliente (seta 9). Vale citar
que nesse ponto o repositório retorna não mais metadados, mas uma lista com os arquivos de
fato (seta 10). essa lista é retornada para o extractor (seta 11), que a envia finalmente para a
aplicação cliente (seta 12).
3.2 Estrutura do método de comunicação entre o Evolution
Miner e a Aplicação Cliente
A comunicação entre a API e a aplicação cliente é feita através do método getVersions, que
recebe como parâmetros uma lista de retConfigs e outra lista com VCSConfigs e retorna
uma lista de RemoteFiles: List<RemoteFiles> getVersions (<VCSConfigs>, <Retrieve-
Configs>). De maneira detalhada, este método é estruturado da seguinte maneira: