/* * Copyright (c) 2006 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package mockit.coverage; import java.io.*; import java.util.*; import javax.annotation.*; import mockit.coverage.data.*; final class DataFileMerging { @Nonnull private final List<File> inputFiles; DataFileMerging(@Nonnull String[] inputPaths) { inputFiles = new ArrayList<File>(inputPaths.length); for (String path : inputPaths) { addInputFileToList(path.trim()); } } private void addInputFileToList(@Nonnull String path) { if (!path.isEmpty()) { File inputFile = new File(path); if (inputFile.isDirectory()) { inputFile = new File(inputFile, "coverage.ser"); } inputFiles.add(inputFile); } } @Nonnull CoverageData merge() throws IOException { CoverageData mergedData = null; for (File inputFile : inputFiles) { if (inputFile.exists()) { CoverageData existingData = CoverageData.readDataFromFile(inputFile); if (mergedData == null) { mergedData = existingData; } else { mergedData.merge(existingData); } } } if (mergedData == null) { throw new IllegalArgumentException("No input \"coverage.ser\" files found"); } return mergedData; } }