package br.uff.ic.oceano.experiments.ostra;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import br.uff.ic.oceano.core.control.ApplicationConstants;
import br.uff.ic.oceano.core.dao.OceanoUserDao;
import br.uff.ic.oceano.core.dao.controle.JPAUtil;
import br.uff.ic.oceano.core.dao.impl.OceanoUserDaoImpl;
import br.uff.ic.oceano.core.exception.ObjetoNaoEncontradoException;
import br.uff.ic.oceano.core.exception.ServiceException;
import br.uff.ic.oceano.core.factory.MetricManagerFactory;
import br.uff.ic.oceano.core.factory.ObjectFactory;
import br.uff.ic.oceano.core.model.Metric;
import br.uff.ic.oceano.core.model.OceanoUser;
import br.uff.ic.oceano.core.model.Revision;
import br.uff.ic.oceano.core.model.SoftwareProject;
import br.uff.ic.oceano.core.model.ProjectUser;
import br.uff.ic.oceano.core.service.SoftwareProjectService;
import br.uff.ic.oceano.core.service.ProjectUserService;
import br.uff.ic.oceano.core.service.RevisionService;
import br.uff.ic.oceano.core.tools.Tool;
import br.uff.ic.oceano.core.tools.metrics.MetricManager;
import br.uff.ic.oceano.core.tools.metrics.expression.QMOOD;
import br.uff.ic.oceano.util.DateUtil;
import br.uff.ic.oceano.ostra.model.DataBaseSnapshot;
import br.uff.ic.oceano.ostra.discretizer.DayOfWeekDiscretizer;
import br.uff.ic.oceano.ostra.discretizer.Discretizer;
import br.uff.ic.oceano.ostra.discretizer.DiscretizerFactory;
import br.uff.ic.oceano.ostra.discretizer.NegativePositiveDiscretizer;
import br.uff.ic.oceano.ostra.discretizer.NumberOfFilesDiscretizer;
import br.uff.ic.oceano.ostra.service.DeltaMetricsRevisionDataBaseService;
import br.uff.ic.oceano.ostra.service.OstraMetricService;
import br.uff.ic.oceano.ostra.tools.datamining.util.DatabaseToArffService;
import br.uff.ic.oceano.util.file.FileUtils;
import br.uff.ic.oceano.ostra.controle.Constantes;
import br.uff.ic.oceano.ostra.discretizer.HourOfDayDiscretizer;
import br.uff.ic.oceano.ostra.discretizer.RoundOfDayDiscretizer;
import br.uff.ic.oceano.ostra.service.OstraQualityAtributesWithout_HardCoded_Service;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
//import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
/**
*
* @author Dancastellani
*/
public class TestOstra {
private RevisionService revisionService = ObjectFactory.getObjectWithDataBaseDependencies(RevisionService.class);
//
// private OstraQualityAtributesService ostraQualityAtributesService;
private OstraQualityAtributesWithout_HardCoded_Service ostraQualityAtributesService;
private SoftwareProjectService projectService;
private DeltaMetricsRevisionDataBaseService dataBaseService;
private List<SoftwareProject> projects = new ArrayList<SoftwareProject>();
private List<MetricManager> metricManagers = new ArrayList<MetricManager>();
private OceanoUser userDanielOceano;
private OceanoUserDao oceanoUserDao;
private OstraMetricService ostraMetricService;
//--------------- CONTROLE EXPERIMENTOS
private static final boolean calculateStandardDeviation = false;
private static final boolean extractOnlyQmoodMetrics = false;
private static final boolean usesOnlyCompilingRevisions = false;
//
public static final boolean EXTRAI_METRICAS = true;
public static final boolean CALCULA_METRIC_VALUES = false;
public static final boolean CALCULA_ATRIBUTOS_DE_QUALIDADE = false;
public static final boolean CALCULA_DELTA = false;
public static final boolean SALVA_ARQUIVO_ARFF = false;
//---------------
public static final boolean CONTINUAR_SE_DER_ERRO_COM_ALGUM_PROJETO = false;
//
static {
Constantes.SHOW_OUTPUT_CLI = false;
Constantes.SHOW_OUTPUT_COMPILATION = false;
ApplicationConstants.DIR_BASE_CHECKOUTS = "G:/" + ApplicationConstants.DIR_BASE_CHECKOUTS;
}
@BeforeMethod
public void setUp() throws ObjetoNaoEncontradoException, ServiceException {
this.ostraMetricService = ObjectFactory.getObjectWithDataBaseDependencies(OstraMetricService.class);
// this.ostraQualityAtributesService = ObjectFactory.getObjectWithDataBaseDependencies(OstraQualityAtributesService.class);
this.ostraQualityAtributesService = ObjectFactory.getObjectWithDataBaseDependencies(OstraQualityAtributesWithout_HardCoded_Service.class);
this.dataBaseService = ObjectFactory.getObjectWithDataBaseDependencies(DeltaMetricsRevisionDataBaseService.class);
this.projectService = ObjectFactory.getObjectWithDataBaseDependencies(SoftwareProjectService.class);
this.oceanoUserDao = ObjectFactory.getObjectWithDataBaseDependencies(OceanoUserDaoImpl.class);
initializeProjectList();
initializeMetricsList();
this.userDanielOceano = oceanoUserDao.getByLogin("xan");
//
// System.out.println("OceanoUser: " + userDanielOceano.getName());
//
associateProjectsToOceanoUserWhenInMemoryDatabase();
MetricManagerFactory.getInstance();
}
// @Test
public void verifyMeasurementOfReusabilityWithMavenJavadocPluginRevision388171() throws Throwable {
final String expectedMetricName = QMOOD.QA_REUSABILITY;
MetricManager qaMetricManager = (MetricManager) MetricManagerFactory.getInstance().getMetricByName(expectedMetricName);
Revision revision = revisionService.getById(9585l);
double doubleValue = qaMetricManager.extractMetric(revision).getDoubleValue();
Assert.assertEquals(doubleValue, 16.639835858585858d);
}
@Test
public void executaExperimentos() throws Throwable {
if (EXTRAI_METRICAS) {
extracMetrics();
}
if (CALCULA_METRIC_VALUES) {
calculateRevisionMetricValues();
}
if (CALCULA_ATRIBUTOS_DE_QUALIDADE) {
extractQualityAttributes();
}
if (CALCULA_DELTA || SALVA_ARQUIVO_ARFF) {
buildDeltaMetricsDatabase();
}
}
private void initializeProjectList() throws ServiceException {
// <editor-fold defaultstate="collapsed" desc="projetos analisados nos experimentos">
// --------------- STI
// this.projects.add(projectService.getProjectToDetailById(31L)); //commons-mustang
// this.projects.add(projectService.getProjectToDetailById(32L)); //commons-mustang-hibernate
// this.projects.add(projectService.getProjectToDetailById(33L)); //commons-mustang-jpa
// this.projects.add(projectService.getProjectToDetailById(4L)); //commons-utils
// this.projects.add(projectService.getProjectToDetailById(3L)); //publico-core
// this.projects.add(projectService.getProjectToDetailById(5L)); //monitoria-core
// this.projects.add(projectService.getProjectToDetailById(30L)); //Monitoria-web
// this.projects.add(projectService.getProjectToDetailById(7L)); //academico-pos
// this.projects.add(projectService.getProjectToDetailById(14L)); //iduff 2 - para o artigo seke
this.projects.add(projectService.getProjectToDetailById(211L)); //iduff 2 - REMEDICAO - para o artigo seke
// --------------- Mestrado
// this.projects.add(projectService.getProjectToDetailById(8L)); //oceano-core
// this.projects.add(projectService.getProjectToDetailById(9L)); //oceano-web
// --------------- Codehaus Mojo
// this.projects.add(projectService.getProjectToDetailById(15L)); //hudson-maven-plugin-branch
// this.projects.add(projectService.getProjectToDetailById(17L)); //Eclipse IAM
// this.projects.add(projectService.getProjectToDetailById(18L)); //Animal Sniffer
// this.projects.add(projectService.getProjectToDetailById(24L)); //Antlr3 Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(25L)); //Antlr Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(26L)); //App Assembler
// this.projects.add(projectService.getProjectToDetailById(27L)); //Apt Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(28L)); //AspectJ Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(29L)); //Axis Tools
// this.projects.add(projectService.getProjectToDetailById(34L)); //Batik maven plugin
// this.projects.add(projectService.getProjectToDetailById(35L)); //Build Helper Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(36L)); //Build Number Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(37L)); //Cassandra Maven plugin
// this.projects.add(projectService.getProjectToDetailById(38L)); //Castor Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(39L)); //Ci Aggregator
// this.projects.add(projectService.getProjectToDetailById(40L)); //Clirr Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(41L)); //Cobertura Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(42L)); //Commons Attributes Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(43L)); //Dashboard Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(44L)); //DBUnit Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(45L)); //DBUpgrade Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(46L)); //Dita Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(47L)); //Dock Book Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(48L)); //Emma Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(49L)); //Exec Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(50L)); //Extra Enforcer maven plugin
// this.projects.add(projectService.getProjectToDetailById(51L)); //Find Bugs Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(52L)); //Fitnesse Maven plugin
// this.projects.add(projectService.getProjectToDetailById(53L)); //GWT Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(54L)); //Hibernate 2 Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(55L)); //Hibernate 3 Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(56L)); //Ianal Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(57L)); //Idea UI Designer Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(58L)); //Idlj Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(59L)); //Jalopy Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(60L)); //Jasper Reports Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(61L)); //Javacc Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(62L)); //Javancss Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(63L)); //Jaxb2 Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(64L)); //JBoss Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(65L)); //JBoss Packaging Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(66L)); //JDepend Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(67L)); //JDiff maven Plugin
// this.projects.add(projectService.getProjectToDetailById(68L)); //JPox Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(69L)); //JRuby Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(70L)); //JRuby Std Lib
// this.projects.add(projectService.getProjectToDetailById(71L)); //JSLint Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(72L)); //JSPC
// this.projects.add(projectService.getProjectToDetailById(73L)); //KeyTool maven Plugin
// this.projects.add(projectService.getProjectToDetailById(74L)); //L10n Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(75L)); //Latex Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(76L)); //License Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(77L)); //Maven Extensions
// this.projects.add(projectService.getProjectToDetailById(78L)); //Maven Native
// this.projects.add(projectService.getProjectToDetailById(79L)); //Mojo Archetypes
// this.projects.add(projectService.getProjectToDetailById(80L)); //Mojo Parent
// this.projects.add(projectService.getProjectToDetailById(81L)); //Native 2 ASCII Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(82L)); //Nbm Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(83L)); //Open JPA Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(84L)); //OSX App Bunbler Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(85L)); //Ounce Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(86L)); //Pde Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(87L)); //Plugin Support
// this.projects.add(projectService.getProjectToDetailById(88L)); //Properties Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(89L)); //Retrotranslator Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(90L)); //RMic Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(91L)); //RPM Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(92L)); //Sablecc Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(93L)); //SCM Changelog Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(94L)); //Selenium Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(95L)); //Ship Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(96L)); //Shitty Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(97L)); //SMC Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(98L)); //Solaris Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(99L)); //Sonar Maven plugin
// this.projects.add(projectService.getProjectToDetailById(100L)); //Spring WS Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(101L)); //SQL Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(102L)); //SQLJ Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(103L)); //Sysdeo Tomcat Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(104L)); //Taglist Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(105L)); //Truezip Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(106L)); //Unix
// this.projects.add(projectService.getProjectToDetailById(107L)); //Versions Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(108L)); //Virtualization Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(109L)); //Wagon Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(110L)); //Was6 Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(111L)); //Weblogic Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(112L)); //Webstart
// this.projects.add(projectService.getProjectToDetailById(113L)); //Webtest Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(114L)); //Xdoclet Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(115L)); //Xml Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(116L)); //Xmlbeans Maven Plugin
//----------- ASF Maven Plugin
// this.projects.add(projectService.getProjectToDetailById(117L)); //Checkstyle MP
// this.projects.add(projectService.getProjectToDetailById(118L)); //AntRun MP
// this.projects.add(projectService.getProjectToDetailById(119L)); //Ant MP
// this.projects.add(projectService.getProjectToDetailById(120L)); //Acr MP
// this.projects.add(projectService.getProjectToDetailById(121L)); //Changes MP
// this.projects.add(projectService.getProjectToDetailById(122L)); //Changelog MP
// this.projects.add(projectService.getProjectToDetailById(123L)); //Assembly MP
// this.projects.add(projectService.getProjectToDetailById(124L)); //Dependency MP
// this.projects.add(projectService.getProjectToDetailById(125L)); //Compiler MP
// this.projects.add(projectService.getProjectToDetailById(126L)); //Clean MP
// this.projects.add(projectService.getProjectToDetailById(127L)); //Eclipse MP
// this.projects.add(projectService.getProjectToDetailById(128L)); //Ear MP
// this.projects.add(projectService.getProjectToDetailById(129L)); //Docck MP
// this.projects.add(projectService.getProjectToDetailById(130L)); //Doap MP
// this.projects.add(projectService.getProjectToDetailById(131L)); //Deploy MP
// this.projects.add(projectService.getProjectToDetailById(132L)); //Ejb MP
// this.projects.add(projectService.getProjectToDetailById(133L)); //Jarsigner MP
// this.projects.add(projectService.getProjectToDetailById(134L)); //Jar MP
// this.projects.add(projectService.getProjectToDetailById(135L)); //Invoker MP
// this.projects.add(projectService.getProjectToDetailById(136L)); //Install MP
// this.projects.add(projectService.getProjectToDetailById(137L)); //Idea MP
// this.projects.add(projectService.getProjectToDetailById(138L)); //Help MP
// this.projects.add(projectService.getProjectToDetailById(139L)); //GPG MP
// this.projects.add(projectService.getProjectToDetailById(140L)); //Javadoc MP
// this.projects.add(projectService.getProjectToDetailById(141L)); //Linkcheck MP
// this.projects.add(projectService.getProjectToDetailById(142L)); //One MP
// this.projects.add(projectService.getProjectToDetailById(143L)); //Patch MP
// this.projects.add(projectService.getProjectToDetailById(144L)); //PDF MP
// this.projects.add(projectService.getProjectToDetailById(145L)); //Maven Plugins
// this.projects.add(projectService.getProjectToDetailById(146L)); //PMD MP
// this.projects.add(projectService.getProjectToDetailById(147L)); //Project Info Reports MP
// this.projects.add(projectService.getProjectToDetailById(148L)); //Reactor MP
// this.projects.add(projectService.getProjectToDetailById(149L)); //Remote Resources MP
// this.projects.add(projectService.getProjectToDetailById(150L)); //Repository MP
// this.projects.add(projectService.getProjectToDetailById(151L)); //Resources MP
// this.projects.add(projectService.getProjectToDetailById(152L)); //Shade MP
// this.projects.add(projectService.getProjectToDetailById(153L)); //Site MP
// this.projects.add(projectService.getProjectToDetailById(154L)); //Source MP
// this.projects.add(projectService.getProjectToDetailById(155L)); //Stage MP
// this.projects.add(projectService.getProjectToDetailById(156L)); //Toolchains
// this.projects.add(projectService.getProjectToDetailById(157L)); //Verifier MP
// this.projects.add(projectService.getProjectToDetailById(158L)); //War MP
// this.projects.add(projectService.getProjectToDetailById(159L)); //Jakarta String Taglib
// this.projects.add(projectService.getProjectToDetailById(160L)); //Jakarta Cactus
// this.projects.add(projectService.getProjectToDetailById(164L)); //Jakarta Regexp Taglib
// this.projects.add(projectService.getProjectToDetailById(197L)); //Abdera
// this.projects.add(projectService.getProjectToDetailById(201L)); //Avro
// this.projects.add(projectService.getProjectToDetailById(203L)); //Axis 2 Java Rampart
// this.projects.add(projectService.getProjectToDetailById(202L)); //Axis 2 Java Core
// this.projects.add(projectService.getProjectToDetailById(204L)); //Axis 2 Java Sandesha
// this.projects.add(projectService.getProjectToDetailById(207L)); //Chemistry Opencmis
//----------- Primeira medição
// this.projects.add(projectService.getProjectToDetailById(209L)); //Cocoon 3
// this.projects.add(projectService.getProjectToDetailById(206L)); //Cayenne Main
// this.projects.add(projectService.getProjectToDetailById(205L)); //Camel
// this.projects.add(projectService.getProjectToDetailById(208L)); //Cocoon +
// Out 4 now
// this.projects.add(projectService.getProjectToDetailById(210L)); //Commons BeanUtils -- broken, it stops...
// this.projects.add(projectService.getProjectToDetailById(200L)); //Aries -- broken, it stops...
// this.projects.add(projectService.getProjectToDetailById(199L)); //Archiva -- broken, it stops...
// this.projects.add(projectService.getProjectToDetailById(198L)); //Active MQ - Deve continuar//
// </editor-fold>
}
// @Test
public void extracMetrics() throws Throwable {
for (SoftwareProject project : projects) {
try {
System.out.println("======================================================");
System.out.println("EXTRACTING METRICS FROM PROJECT " + project);
ostraMetricService.extractAndSaveMetricsFromAllFilesInProjectRevisions(project, userDanielOceano, metricManagers);
System.out.println("======================================================\n");
} catch (Throwable t) {
if (!CONTINUAR_SE_DER_ERRO_COM_ALGUM_PROJETO) {
throw t;
}
}
}
}
// @Test
public void calculateRevisionMetricValues() throws Throwable {
// measure projects
for (SoftwareProject project : projects) {
try {
System.out.println("======================================================");
System.out.println("CALCULATING REVISION METRIC VALUES FROM PROJECT " + project);
ostraMetricService.calculateRevisionMetricValuesFromVersionedItemMetricValues(project, getMetrics(metricManagers));
System.out.println("======================================================\n");
} catch (Throwable t) {
if (!CONTINUAR_SE_DER_ERRO_COM_ALGUM_PROJETO) {
throw t;
}
}
}
}
// @Test
public void extractQualityAttributes() throws Throwable {
// measure projects
for (SoftwareProject project : projects) {
try {
System.out.println("======================================================");
System.out.println("CALCULATING QUALITY ATTRIBUTES FOR PROJECT " + project);
ostraQualityAtributesService.calculateQualityAttributes(project);
System.out.println("======================================================\n");
} catch (Throwable t) {
if (!CONTINUAR_SE_DER_ERRO_COM_ALGUM_PROJETO) {
throw t;
}
}
}
}
// @Test
public void buildDeltaMetricsDatabase() throws Throwable {
System.out.println("======================================================");
System.out.println("CALCULATING DELTA METRICS FROM PROJECTS " + projects);
System.out.println("********************** testBuildDeltaMetricsDatabase - INICIO");
List<Discretizer> discretizers = new ArrayList<Discretizer>();
discretizers.add(DiscretizerFactory.getDiscretizer("#files", NumberOfFilesDiscretizer.class));
discretizers.add(DiscretizerFactory.getDiscretizer("rday", DayOfWeekDiscretizer.class));
discretizers.add(DiscretizerFactory.getDiscretizer("rhour", HourOfDayDiscretizer.class));
discretizers.add(DiscretizerFactory.getDiscretizer("rRound", RoundOfDayDiscretizer.class));
initializePositiveNegativeDiscretizersDiscretizers(discretizers);
// initializeDoubleDecimalDiscretizers(discretizers);
DataBaseSnapshot baseSnapshot = dataBaseService.buildDeltaMetricsDataBase(projects, discretizers, calculateStandardDeviation, usesOnlyCompilingRevisions, getMetrics(metricManagers), CALCULA_DELTA);
if (SALVA_ARQUIVO_ARFF) {
showAttributes(baseSnapshot);
showInstances(baseSnapshot);
System.out.println("_________________________________________________");
String arffContent = DatabaseToArffService.dataBaseToARFF(baseSnapshot, discretizers);
System.out.println("********************** testBuildDeltaMetricsDatabase - FIM");
saveArffFile(baseSnapshot, arffContent);
}
System.out.println("======================================================\n");
}
@BeforeClass
public static void setUpClass() throws Exception {
System.out.println("----------------------------------------");
if (ApplicationConstants.CLEAN_CHECKOUT_DIRECTORY) {
File file = new File(ApplicationConstants.DIR_BASE_CHECKOUTS);
FileUtils.deleteDirectory(file);
System.out.println(">>>> Cleaning checkout directory... " + !file.exists());
}
System.out.println("----------------------------------------");
System.out.println("");
}
private void initializePositiveNegativeDiscretizersDiscretizers(List<Discretizer> discretizers) throws ServiceException {
for (Metric metric : ostraMetricService.getAll()) {
discretizers.add(DiscretizerFactory.getDiscretizer("dAvg-" + metric.getName(), NegativePositiveDiscretizer.class));
}
}
// private void initializeDoubleDecimalDiscretizers(List<Discretizer> discretizers) throws ServiceException {
// for (Metric metric : ostraMetricService.getAll()) {
// discretizers.add(DiscretizerFactory.getDiscretizer("dAvg-" + metric.getName(), DoubleDecimalCaseDiscretizer.class));
// }
// }
private void saveArffFile(DataBaseSnapshot baseSnapshot, String arffContent) throws IOException {
final int projectsSize = projects.size();
final int attributesSize = baseSnapshot.getAttributes().size();
final String projectName = (projectsSize == 1 ? projects.get(0).getConfigurationItem().getName() + "_" : "");
final String fileName = "./Oceano_" + projectName + DateUtil.format(Calendar.getInstance()).replace("/", "-").replace(" ", "_").replace(":", "-") + "_p" + projectsSize + "_a" + attributesSize + ".arff";
System.out.println("fileName = " + fileName);
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(fileName)));
bw.append(arffContent);
bw.close();
}
private void showInstances(DataBaseSnapshot baseSnapshot) {
System.out.println("");
System.out.println("Instancias");
System.out.println("_________________________________________________");
for (String instance : baseSnapshot.getInstances()) {
System.out.println(instance);
}
}
private void showAttributes(DataBaseSnapshot baseSnapshot) {
System.out.println("");
System.out.println("");
System.out.println("Attributes");
System.out.println("_________________________________________________");
for (String attribute : baseSnapshot.getAttributes()) {
System.out.println("attribute: " + attribute);
}
}
private void associateProjectsToOceanoUserWhenInMemoryDatabase() throws ServiceException {
if (!JPAUtil.isRunningOnMemoryDB()) {
return;
}
for (SoftwareProject project : projects) {
//inserindo um novo usuario de projeto
ProjectUser pu = new ProjectUser();
pu.setOceanoUser(userDanielOceano);
pu.setLogin("login");
pu.setPassword("pass");
pu.setProject(project);
((ProjectUserService) ObjectFactory.getObjectWithDataBaseDependencies(ProjectUserService.class)).save(pu);
}
}
private void initializeMetricsList() {
if (extractOnlyQmoodMetrics) {
metricManagers = MetricManagerFactory.getQmoodMetrics();
} else {
for (Tool tool : MetricManagerFactory.getInstance().getTools()) {
MetricManager mm = (MetricManager) tool;
if (mm.getMetric().getName().equals("Number of Interfaces")) {
continue;
}
if (!mm.getMetric().isDerived()) {
metricManagers.add(mm);
}
}
}
System.out.println("Metrics to consider = " + metricManagers);
}
private List<Metric> getMetrics(List<MetricManager> metricManagers) {
List<Metric> metrics = new ArrayList(metricManagers.size());
for (MetricManager metricManager : metricManagers) {
metrics.add(metricManager.getMetric());
}
return metrics;
}
}