diff --git a/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/dss/FlowLaneFeeder.java b/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/dss/FlowLaneFeeder.java index 5956dbc410775483546a32e6e3ae3915b16c9c84..10a33354e4e0ce26c7853f5127f45b797d4cfa46 100644 --- a/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/dss/FlowLaneFeeder.java +++ b/deep_sequencing_unit/source/java/ch/ethz/bsse/cisd/dsu/dss/FlowLaneFeeder.java @@ -17,6 +17,7 @@ package ch.ethz.bsse.cisd.dsu.dss; import java.io.File; +import java.io.FileFilter; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; @@ -26,9 +27,9 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Properties; import java.util.Set; -import java.util.Map.Entry; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -70,9 +71,9 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFa class FlowLaneFeeder extends AbstractPostRegistrationDataSetHandlerForFileBasedUndo { static final String META_DATA_FILE_TYPE = ".tsv"; - + static final String SRF_INFO_OUTPUT_FILE = "srf_info.txt"; - + static final String META_DATA_FILE_PREFIX = "meta-data-file-prefix"; static final String TRANSFER_PREFIX = "transfer."; @@ -91,13 +92,13 @@ class FlowLaneFeeder extends AbstractPostRegistrationDataSetHandlerForFileBasedU static final String FILE_TYPE = ".srf"; - private final static Logger operationLog = - LogFactory.getLogger(LogCategory.OPERATION, FlowLaneFeeder.class); + private final static Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, + FlowLaneFeeder.class); private final IEncapsulatedOpenBISService service; private final MessageFormat flowLaneDropBoxTemplate; - + private final String metaDataFilePrefix; private final String entitySepaparator; @@ -115,9 +116,7 @@ class FlowLaneFeeder extends AbstractPostRegistrationDataSetHandlerForFileBasedU flowLaneDropBoxTemplate = new MessageFormat(PropertyUtils.getMandatoryProperty(properties, FLOW_LANE_DROP_BOX_TEMPLATE)); - metaDataFilePrefix = - PropertyUtils.getMandatoryProperty(properties, - META_DATA_FILE_PREFIX); + metaDataFilePrefix = PropertyUtils.getMandatoryProperty(properties, META_DATA_FILE_PREFIX); entitySepaparator = properties.getProperty(ENTITY_SEPARATOR_KEY, DEFAULT_ENTITY_SEPARATOR); srfInfoPathOrNull = properties.getProperty(SRF_INFO_PATH); if (srfInfoPathOrNull != null) @@ -147,12 +146,13 @@ class FlowLaneFeeder extends AbstractPostRegistrationDataSetHandlerForFileBasedU } } - public Status handle(File originalData, DataSetInformation dataSetInformation, Map<String, String> parameterBindings) + public Status handle(File originalData, DataSetInformation dataSetInformation, + Map<String, String> parameterBindings) { Map<String, Sample> flowLaneSampleMap = createFlowLaneSampleMap(dataSetInformation); String flowcellID = originalData.getName(); List<File> files = new ArrayList<File>(); - findFiles(originalData, files); + findFiles(originalData, files, createFileFilter()); if (files.size() < flowLaneSampleMap.size()) { throw new EnvironmentFailureException("Only " + files.size() @@ -194,7 +194,7 @@ class FlowLaneFeeder extends AbstractPostRegistrationDataSetHandlerForFileBasedU createMetaDataFileAndHartLinkInTransferDropBox(flowLaneDataSet, flowLaneSample, flowLane, srfInfo); File srf_infoFile = new File(file.getParentFile(), SRF_INFO_OUTPUT_FILE); - for (int i = 0; i < srfInfo.size(); ++i ) + for (int i = 0; i < srfInfo.size(); ++i) { FileUtilities.writeToFile(srf_infoFile, srfInfo.get(i)); } @@ -297,7 +297,8 @@ class FlowLaneFeeder extends AbstractPostRegistrationDataSetHandlerForFileBasedU } } String sampleCode = flowLaneSample.getCode(); - String metaFileName = metaDataFilePrefix + escapeSampleCode(sampleCode) + META_DATA_FILE_TYPE; + String metaFileName = + metaDataFilePrefix + escapeSampleCode(sampleCode) + META_DATA_FILE_TYPE; FileUtilities.writeToFile(new File(flowLaneDataSet, metaFileName), builder.toString()); copyToDropBox(dropBox, flowLaneDataSet); } @@ -371,9 +372,9 @@ class FlowLaneFeeder extends AbstractPostRegistrationDataSetHandlerForFileBasedU return flowLane; } - private void findFiles(File file, List<File> files) + private void findFiles(File file, List<File> files, FileFilter filter) { - if (file.isFile() && file.getName().endsWith(FILE_TYPE)) + if (filter.accept(file)) { files.add(file); } @@ -381,9 +382,20 @@ class FlowLaneFeeder extends AbstractPostRegistrationDataSetHandlerForFileBasedU { for (File child : file.listFiles()) { - findFiles(child, files); + findFiles(child, files, filter); } } } + private FileFilter createFileFilter() + { + return new FileFilter() + { + public boolean accept(File file) + { + return file.isFile() && file.getName().endsWith(FILE_TYPE); + } + }; + } + }