From c5ee612859a08e9b635bb7096c7b1db1a2da72f5 Mon Sep 17 00:00:00 2001 From: cramakri <cramakri> Date: Thu, 15 Apr 2010 13:20:04 +0000 Subject: [PATCH] LMS-1483 Further work on the graph/plot framework. SVN: 15482 --- .../AbstractDataMergingReportingPlugin.java | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDataMergingReportingPlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDataMergingReportingPlugin.java index d5b418e7670..79c16ef27bc 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDataMergingReportingPlugin.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDataMergingReportingPlugin.java @@ -120,39 +120,51 @@ public abstract class AbstractDataMergingReportingPlugin extends AbstractFileTab protected DatasetFileLines loadFromDirectory(DatasetDescription dataset, final File dir) throws ParserException, ParsingException, IllegalArgumentException, IOExceptionUnchecked + { + List<File> datasetFilesToMerge = findMatchingFiles(dataset, dir); + if (datasetFilesToMerge.size() != 1) + { + throw UserFailureException + .fromTemplate( + "Directory with Data Set '%s' data ('%s') should contain exactly 1 file with data but %s files were found.", + dataset.getDatasetCode(), dir.getAbsolutePath(), datasetFilesToMerge + .size()); + } else + { + return loadFromFile(dataset, datasetFilesToMerge.get(0)); + } + } + + /** + * Scan the specified directory to find files that match the dataset description. + * + * @throws IOExceptionUnchecked if a {@link IOException} has occurred. + */ + protected List<File> findMatchingFiles(DatasetDescription dataset, final File dir) + throws IllegalArgumentException, IOExceptionUnchecked { assert dir != null : "Given file must not be null"; assert dir.isDirectory() : "Given file '" + dir.getAbsolutePath() + "' is not a directory."; File[] datasetFiles = FileUtilities.listFiles(dir); - List<File> datasetFilesToMerge = new ArrayList<File>(); + List<File> matchingFiles = new ArrayList<File>(); for (File datasetFile : datasetFiles) { if (datasetFile.isDirectory()) { // recursively go down the directories - return loadFromDirectory(dataset, datasetFile); + return findMatchingFiles(dataset, datasetFile); } else { // exclude files with properties if (isFileExcluded(datasetFile) == false) { - datasetFilesToMerge.add(datasetFile); + matchingFiles.add(datasetFile); } } } - if (datasetFilesToMerge.size() != 1) - { - throw UserFailureException - .fromTemplate( - "Directory with Data Set '%s' data ('%s') should contain exactly 1 file with data but %s files were found.", - dataset.getDatasetCode(), dir.getAbsolutePath(), datasetFilesToMerge - .size()); - } else - { - return loadFromFile(dataset, datasetFilesToMerge.get(0)); - } + return matchingFiles; } protected boolean isFileExcluded(File file) -- GitLab