package br.uff.ic.oceano.polvo.service;
import br.uff.ic.oceano.core.control.ApplicationConstants;
import br.uff.ic.oceano.core.exception.ServiceException;
import br.uff.ic.oceano.core.exception.VCSException;
import br.uff.ic.oceano.core.factory.MetricManagerFactory;
import br.uff.ic.oceano.core.factory.ObjectFactory;
import br.uff.ic.oceano.core.model.MetricValue;
import br.uff.ic.oceano.core.model.OceanoUser;
import br.uff.ic.oceano.core.model.SoftwareProject;
import br.uff.ic.oceano.core.model.ProjectUser;
import br.uff.ic.oceano.core.model.Revision;
import br.uff.ic.oceano.core.tools.metrics.service.MetricService;
import br.uff.ic.oceano.core.service.ProjectUserService;
import br.uff.ic.oceano.core.service.vcs.VCSService;
import br.uff.ic.oceano.core.tools.metrics.service.MeasurementService;
import java.util.Calendar;
/**
*
* @author Rafael
*/
public class PolvoMetricService extends MetricService {
private br.uff.ic.oceano.core.service.vcs.VCSService vCSService;
private ProjectUserService projectUserService;
@Override
public void setup(){
projectUserService = ObjectFactory.getObjectWithDataBaseDependencies(ProjectUserService.class);
}
public PolvoMetricService() {
super();
super.setup();
vCSService = ObjectFactory.getObjectWithDataBaseDependencies(VCSService.class);
}
public MetricValue extractMetricFromRevision(SoftwareProject project, OceanoUser oceanoUser) throws ServiceException {
System.out.println("Pegando usuário... ");
ProjectUser projectUser = projectUserService.getByProjectAndOceanoUser(project, oceanoUser);
System.out.println("Login: <" + projectUser.getLogin() + ">");
MetricValue metricValue = null;
String revisionsPath = null;
try {
System.out.println("project="+project.getConfigurationItem().getName());
Revision revision = vCSService.getRevision(project, projectUser, Calendar.getInstance());
revision.setProject(project);
revision.setLocalPath(ApplicationConstants.DIR_BASE_CHECKOUTS + revision.getProject().getConfigurationItem().getName().replaceAll(" ", "") + "-rDeltaMetricsBuilder");
vCSService.doCheckout(revision, projectUser, true);
revisionsPath = revision.getLocalPath();
System.out.println("revisionsPath = " + revisionsPath);
MetricManagerFactory metricManagerFactory = MetricManagerFactory.getInstance();
metricValue = MeasurementService.extractMetric(metricManagerFactory.getMetricManager(getMetric("Design Size In Classes")), revision);
System.out.println("metricValue="+metricValue.getDoubleValue());
} catch (VCSException ex) {
throw new ServiceException(ex);
}
return metricValue;
}
}