/buginf

API para integração de defeitos dos sistemas de bug tracking.

Primary LanguageJavaGNU Lesser General Public License v2.1LGPL-2.1

Projeto apresentado no FISL 17 no Workshop de Software Livre 2016

BugInf 1.0.0-snapshot

BugInf é uma API de código aberto (GNU LGPL) que auxilia na integração das informações de repositórios de sistemas de bugtracking.

Requisitos

Instalação

  • Executar o Elasticsearch e depois o Kibana .
  • Baixar os módulos do buginf para o diretório de sua preferência.
  • Abrir o console de comandos do windows/linux.
  • Navegar até o diretório onde foi baixado o projeto.
  • Navegar até o módulo bug-inf-parent.
  • Digitar o comando mvn clean compile assembly:single, este comando irá gerar o empacotamento dos módulos projeto no formato JAR, onde irá ser gerado um JAR para cada módulo do projeto.
  • Copie o JAR "buginf-api-1.0-SNAPSHOT-jar-with-dependencies" que foi gerado no diretório buginf-parent\buginf-api\target para uma nova pasta.
  • Para a mesma pasta que você copiou o JAR, copie o arquivo buginf-api.properties , este arquivo contem parâmetros de configuração da API que podem ser alterados.
  • Navegue para essa nova pasta onde estão o arquivo .JAR e o arquivo buginf-api.properties.
  • Altere o arquivo buginf-api.properties para mudar o repositório onde será feito a integração. Ex: bugtracking.name=REDMINE no momento só está implementado para repositórios do REDMINE(não alterar), bugtracking.url = http://www.redmine.org (Pode ser módificado para outro repositório redmine, porém alguns repositórios precisam da chave de acesso da API do repositório para retornar os dados, mas no momento o BugInf não contempla este cenário).
  • Digitar o comando java -jar buginf-api-1.0-SNAPSHOT-jar-with-dependencies.jar buginf-api.properties, este comando irá executar a integração das informações do repositório informado.
  • Após a execução da API ele irá criar um índice no elasticsearch chamado bug_inf_dashboard onde estão armazenadas as informações dos defeitos do repositório que foi escolhido.
  • A criação do dashboard no kibana pode ser criada a partir da documentação seguindo as métricas que constam na figura 4.

Quick Start

Neste tutorial será demonstrado como seria a extensão utilizando o sistema de bug tracking Bugzilla.

Passo 1º

Criar uma constante na Enum BugTrackingType que represente o sistema de bug tracking.

public enum BugTrackingType {
   BUGZILLA; // representa o sistema de bug tracking
} 

Passo 2º

Criar uma classe que implemente a interface BugTrackingService e implementar a lógica para recuperar as informações do bug tracking.

public class BugzillaServiceImpl implements BugTrackingService {
 // O - tipo generico que deve ser conforme foi implementado 
 private BugzillaDefeitoMapper<O, Defeito> bugzillaMapper;
 BugzillaServiceImpl(BugTrackingMapper<O, Defeito> bugzillaMapper) {
	
	this.bugzillaMapper = bugzillaMapper;
	
 }

  @Override
  public List<Projeto> recuperarTodosProjetos() {
     // implementar lógica 
  }
  @Override
  public List<Defeito> recuperarTodosDefeitosProjeto(final Projeto projeto) {
    // implementar lógica
  }
} 

Passo 3º

Adicionar na classe BugTrackingServiceFactory uma condicional que verifique qual o sistema de bug tracking e instancie o service do mesmo.

public class BugTrackingServiceFactory {

  	public static BugTrackingService getBugTrackingService(final BugTrackingType bugTrackingType) {
		switch (bugTrackingType) {
		case BUGZILLA:
			return new BugzillaServiceImpl(new BugzillaDefeitoMapper());
		}
		return null;
	}
} 

Passo 4º

Criar uma enum onde ira conter informações da api do Bugzilla, como podemos ver no exemplo abaixo:

public enum BugzillaConfig {
  
  URL("http://url.repositorio.com"); // URL do repositório que irá utilizar.
  
  
} 

Passo 5º

Classe utilizada para converter o Objeto da API do bugzilla para o POJO da aplicação O - deve se utilizar o tipo de objeto utilizado para representar o modelo de defeito na API do bugzilla Defeito - POJO utilizado pela API para representar o defeito

public class BugzillaDefeitoMapper implements BugTrackingMapper<O, Defeito> {
	  /**
	 * Responsavel por converter os objetos das API's do 
	 * sistema de bugtracking para o POJO da API BugInf
	 * @param origem
	 * @return destino
	 */
	 @Override
	public Defeito convert(O defeito) {
	  // implementar conversão para o objeto defeito da API
	}
  
} 

Passo 6º

E por último adicionar na classe BugInfClient o tipo do sistema de bug tracking que se quer integrar. Como pode ser visto no exemplo abaixo:

public class BugInfClient {
	
	public static void main(String[] args) {
		
		BugInfFacade bugInfFacade = new BugInfFacadeImpl(BugTrackingType.BUGZILLA);
		bugInfFacade.executarIntegracaoDefeitos();
		
	}

}