package br.uff.ic.gems.peixeespadacliente.action; import br.uff.ic.gems.peixeespadacliente.model.agent.LocalManagerAgent; import br.uff.ic.gems.peixeespadacliente.symptom.Symptom; import br.uff.ic.oceano.core.exception.ServiceException; import br.uff.ic.oceano.core.exception.VCSException; /** * * @author Heliomar, João Felipe */ public class DoAskOrchestratorAgentAboutBranchAndCommit extends AbstractAction { private Symptom symptom; public DoAskOrchestratorAgentAboutBranchAndCommit(Symptom symptom) { this.symptom = symptom; } @Override public LocalManagerAgent execute(LocalManagerAgent agentPeixeEspada) throws ServiceException { if (!agentPeixeEspada.hasBranch()) { // cria um branch, comita nele e avisa o agente Orquestrador clientService.createBranchToSucessRefactoringAndInformOrchestradorAgent(agentPeixeEspada, symptom.getRefactoringTool().toString()); agentPeixeEspada.setHasBranch(true); } else { try { // commita no local onde está (possivelmente em um branch) agentPeixeEspada.getProjectVCS().doCommit("positive changes in work agent project, refactoring: " + symptom.getRefactoringTool().getClass().getSimpleName()); } catch (VCSException ex) { throw new ServiceException(ex); } // avisa o caso de sucesso ou não alteracao do atributo de qualidade ao agente orquestrador if (agentPeixeEspada.hasImproved() == null) { clientService.sendMessageToNotImproveNorWorseRefactoring(agentPeixeEspada, symptom); } else if (agentPeixeEspada.hasImproved()) { clientService.sendMessageToSucessRefactoring(agentPeixeEspada, symptom); } } return agentPeixeEspada; } }