/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.uff.ic.oceano;
import br.uff.ic.oceano.core.dao.OceanoUserDao;
import br.uff.ic.oceano.core.dao.impl.OceanoUserDaoImpl;
import br.uff.ic.oceano.core.exception.ObjetoNaoEncontradoException;
import br.uff.ic.oceano.core.factory.ObjectFactory;
import br.uff.ic.oceano.core.model.OceanoUser;
import br.uff.ic.oceano.core.model.ProjectUser;
import br.uff.ic.oceano.core.model.Revision;
import br.uff.ic.oceano.core.model.SoftwareProject;
import br.uff.ic.oceano.core.model.transiente.Language;
import br.uff.ic.oceano.core.service.ProjectUserService;
import br.uff.ic.oceano.core.service.SoftwareProjectService;
import br.uff.ic.oceano.core.service.vcs.VCSService;
import br.uff.ic.oceano.util.SystemUtil;
import br.uff.ic.oceano.util.file.FileUtils;
import br.uff.ic.oceano.util.file.PathUtil;
import java.util.Calendar;
import static org.testng.Assert.assertNotNull;
/**
*
* @author Daniel
*/
public class CppProjectsHelper {
public static final String EASYCOUNT_C = "/src/easycount.c";
private Revision easyCountRevision;
private Revision neopzRevision;
public CppProjectsHelper() {
SoftwareProject softwareProject = new SoftwareProject();
softwareProject.setMavenProject(false);
softwareProject.setLanguage(Language.CPP);
//Where tests are running
String basePath = "./target/test-classes/CPP/";
basePath = PathUtil.getAbsolutePathFromRelativetoCurrentPath(basePath);
this.easyCountRevision = new Revision();
this.easyCountRevision.setLocalPath(basePath + "EasyCount/");
this.easyCountRevision.setProject(softwareProject);
this.easyCountRevision.setNumber(1L);
this.easyCountRevision.setCommitDate(Calendar.getInstance());
softwareProject = new SoftwareProject();
softwareProject.setMavenProject(false);
softwareProject.setLanguage(Language.CPP);
softwareProject.setRepositoryUrl("http://neopz.googlecode.com/svn/trunk");
this.neopzRevision = new Revision();
this.neopzRevision.setLocalPath(basePath + "neopz/");
this.neopzRevision.setProject(softwareProject);
this.neopzRevision.setNumber(1L);
this.neopzRevision.setCommitDate(Calendar.getInstance());
}
/**
* @return the revision
*/
public Revision getEasyCountRevision() {
return easyCountRevision;
}
/**
* @param revision the revision to set
*/
public void setEasyCountRevision(Revision revision) {
this.easyCountRevision = revision;
}
/**
* @return the neopzRevision
*/
public Revision getNeopzRevision() {
return neopzRevision;
}
/**
* @param neopzRevision the neopzRevision to set
*/
public void setNeopzRevision(Revision neopzRevision) {
this.neopzRevision = neopzRevision;
}
/**
*
* @return NeoPZ project
* @throws ObjetoNaoEncontradoException
*/
public SoftwareProject getDBNeoPZProject() throws ObjetoNaoEncontradoException {
SoftwareProjectService projectService = ObjectFactory.getObjectWithDataBaseDependencies(SoftwareProjectService.class);
assertNotNull(projectService);
SoftwareProject neopz = null;
try {
//neoPZ local
neopz = projectService.getById(12l);
} catch (ObjetoNaoEncontradoException ex) {
neopz = projectService.getById(11l); //neopz web
}
return neopz;
}
public Revision checkoutNeoPzRevision(long revNumber) throws Exception {
OceanoUserDao oceanoUserDao = ObjectFactory.getObjectWithDataBaseDependencies(OceanoUserDaoImpl.class);
assertNotNull(oceanoUserDao);
OceanoUser oceanoUser = oceanoUserDao.getByLogin("dheraclio");
assertNotNull(oceanoUser);
ProjectUserService projectUserService = ObjectFactory.getObjectWithDataBaseDependencies(ProjectUserService.class);
assertNotNull(projectUserService);
SoftwareProject project = getDBNeoPZProject();
ProjectUser projectUser = projectUserService.getByProjectAndOceanoUser(project, oceanoUser);
String tempPath = SystemUtil.getTempDirectory();
String fixedDir = PathUtil.getWellFormedPath(tempPath, "DependometerService", "revisionTest");
FileUtils.deleteDirectory(fixedDir);
VCSService vcsService = ObjectFactory.getObjectWithDataBaseDependencies(VCSService.class);
assertNotNull(vcsService);
Revision revision = vcsService.getRevision(project, projectUser, revNumber);
assertNotNull(revision);
revision.setLocalPath(fixedDir);
vcsService.doCheckout(revision, projectUser, false);
return revision;
}
}