All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.dagere.peass.dependency.traces.KiekerFolderUtil Maven / Gradle / Ivy

There is a newer version: 0.4.0
Show newest version
package de.dagere.peass.dependency.traces;

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import de.dagere.peass.dependency.KiekerResultManager;
import de.dagere.peass.dependency.analysis.data.TestCase;
import de.dagere.peass.folders.PeassFolders;

public class KiekerFolderUtil {

   private static final Logger LOG = LogManager.getLogger(KiekerFolderUtil.class);

   public static File[] getClazzMethodFolder(final TestCase testcase, final File resultsFolder) {
      final File projectResultFolder = new File(resultsFolder, testcase.getClazz());
      final File[] listFiles = projectResultFolder.listFiles(new FileFilter() {
         @Override
         public boolean accept(final File pathname) {
            return pathname.getName().matches("[0-9]*");
         }
      });
      if (listFiles == null) {
         new ErrorLogWriter(testcase, resultsFolder).tryToWriteLastLog();
         LOG.debug("Probably project not running - Result folder: " + Arrays.toString(listFiles) + " ("
               + (listFiles != null ? listFiles.length : "null") + ") in " + projectResultFolder.getAbsolutePath() + " should exist!");
         return null;
      }

      File methodResult = getMethodFolder(testcase, listFiles);

      LOG.debug("Searching for: {}", methodResult);

      if (methodResult.exists() && methodResult.isDirectory()) {
         if (methodResult.listFiles().length > 0) {
            return methodResult.listFiles();
         } else {
            throw new RuntimeException("Folder " + methodResult + " is no Kieker result folder!");
         }
      } else {
         throw new RuntimeException("Folder " + methodResult + " is no Kieker result folder!");
      }
   }

   public static File getKiekerTraceFolder(final File kiekerResultFolder, final TestCase testcase) {
      File methodResult = new File(kiekerResultFolder, testcase.getMethod());
      if (methodResult.exists() && methodResult.isDirectory()) {
         if (methodResult.listFiles().length > 0) {
            return methodResult.listFiles()[0];
         } else {
            throw new RuntimeException("Folder " + methodResult + " is no Kieker result folder!");
         }
      } else {
         throw new RuntimeException("Folder " + methodResult + " is no Kieker result folder!");
      }
   }

   private static File getMethodFolder(final TestCase testcase, final File[] listFiles) {
      File methodResult = new File(listFiles[0], testcase.getMethod());
      for (final File test : listFiles) {
         final File candidate = new File(test, testcase.getMethod());
         if (candidate.exists()) {
            methodResult = candidate;
         }
      }
      return methodResult;
   }

   public static File getModuleResultFolder(final PeassFolders folders, final TestCase testcase) {
      File moduleFolder;
      if (testcase.getModule() != null) {
         File rawModuleFolder = new File(folders.getProjectFolder(), testcase.getModule());
         moduleFolder = KiekerResultManager.getXMLFileFolder(folders, rawModuleFolder);
      } else {
         moduleFolder = KiekerResultManager.getXMLFileFolder(folders, folders.getProjectFolder());
      }
      return moduleFolder;
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy