package br.uff.ic.gems.peixeespadacliente.action;
import br.uff.ic.gems.peixeespadacliente.model.agent.LocalManagerAgent;
import br.uff.ic.oceano.core.exception.ServiceException;
import br.uff.ic.oceano.core.model.MetricQualityAttribute;
import br.uff.ic.oceano.peixeespada.model.Agent;
import java.util.List;
import translation.Translate;
/**
*
* @author Heliomar
*/
public class DoGetMetricsToQualityAttribute extends AbstractAction {
@Override
public LocalManagerAgent execute(LocalManagerAgent agentPeixeEspada) throws ServiceException {
Translate translate = Translate.getTranslate();
Agent orchestrator = agentPeixeEspada.getOrchestratorAgent();
agentPeixeEspada.appendMessage(translate.requestMetrics(
orchestrator.getQualityAttribute().getName()
));
orchestrator.setQualityAttribute(
clientService.getQualityAttributeWithMetricsAndFactors(agentPeixeEspada)
);
StringBuilder stringBuilderFormula = new StringBuilder(translate.formula());
StringBuilder stringBuilderMetricas = new StringBuilder(translate.metrics());
List<MetricQualityAttribute> metricQualityAttributes =
orchestrator.getQualityAttribute().getMetricQualityAttributes();
for (MetricQualityAttribute metricQualityAttribute : metricQualityAttributes) {
stringBuilderFormula
.append(metricQualityAttribute.getFactor() > 0 ? " + " : " - ")
.append(Math.abs(metricQualityAttribute.getFactor()))
.append(" * ")
.append(metricQualityAttribute.getMetric().getAcronym());
stringBuilderMetricas.append(translate.metricItem(
metricQualityAttribute.getMetric().getAcronym(),
metricQualityAttribute.getMetric().getName()
));
}
stringBuilderFormula.append(translate.formulaEnd());
agentPeixeEspada.appendMessage(stringBuilderMetricas.toString());
agentPeixeEspada.appendMessage(stringBuilderFormula.toString());
return agentPeixeEspada;
}
}