From 785b33712a1fe5e8787767d1f441fa3a43cf7fdd Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Mon, 27 Jul 2009 12:36:04 +0000 Subject: [PATCH] [LMS-1065] fixed ('Reporting plugin for merging data set data does not work if data set properties file was uploaded with data set') SVN: 11903 --- .../demo/MergedDataReportingPlugin.java | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/demo/MergedDataReportingPlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/demo/MergedDataReportingPlugin.java index 07a264803eb..4dcc2a1d616 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/demo/MergedDataReportingPlugin.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/demo/MergedDataReportingPlugin.java @@ -49,6 +49,10 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; public class MergedDataReportingPlugin extends AbstractDatastorePlugin implements IReportingPluginTask { + + /** pattern for files that should be excluded (e.g. data set properties files) */ + public final static String EXCLUDED_FILE_NAMES_PATTERN = ".*\\.tsv"; + public MergedDataReportingPlugin(Properties properties, File storeRoot) { super(properties, storeRoot); @@ -120,10 +124,39 @@ public class MergedDataReportingPlugin extends AbstractDatastorePlugin implement + "' is not a directory."; File[] datasetFiles = FileUtilities.listFiles(dir); - assert datasetFiles.length == 1 : "Given directory '" + dir.getAbsolutePath() - + "should contain exactly 1 file instead of " + datasetFiles.length; + List<File> datasetFilesToMerge = new ArrayList<File>(); + for (File datasetFile : datasetFiles) + { + if (datasetFile.isDirectory()) + { + // recursively go down the directories + return loadFromDirectory(dataset, datasetFile); + } else + { + // exclude files with properties + if (isFileExcluded(datasetFile) == false) + { + datasetFilesToMerge.add(datasetFile); + } + } - return loadFromFile(dataset, datasetFiles[0]); + } + 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)); + } + } + + private static boolean isFileExcluded(File file) + { + return file.getName().matches(EXCLUDED_FILE_NAMES_PATTERN); } /** -- GitLab