diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java index 5f43a13b6698501657a64c716800d52c362390bd..48b3bae41ee2644f27a66a43c8ef6313bed55e17 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDataSetControlFileProcessor.java @@ -52,12 +52,18 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce private final File controlFile; + // Keep the errors as a map and array list for fast access and correct ordering private final HashMap<SampleDataSetPair, IRegistrationStatus> errorMap = new HashMap<SampleDataSetPair, IRegistrationStatus>(); + private final ArrayList<SampleDataSetPair> errorPairs = new ArrayList<SampleDataSetPair>(); + + // Keep the successes as a map and array list for fast access and correct ordering private final HashMap<SampleDataSetPair, IRegistrationStatus> successMap = new HashMap<SampleDataSetPair, IRegistrationStatus>(); + private final ArrayList<SampleDataSetPair> successPairs = new ArrayList<SampleDataSetPair>(); + private final HashSet<File> processedDataSetFiles = new HashSet<File>(); // State that is filled out as a result of processing @@ -293,9 +299,11 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce if (result.isError()) { errorMap.put(sampleDataSet, result); + errorPairs.add(sampleDataSet); } else { successMap.put(sampleDataSet, result); + successPairs.add(sampleDataSet); } } @@ -348,7 +356,7 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce StringBuilder sb = new StringBuilder(); sb.append("Encountered errors in the following lines:\n"); - for (SampleDataSetPair pair : errorMap.keySet()) + for (SampleDataSetPair pair : errorPairs) { IRegistrationStatus error = errorMap.get(pair); sb.append("# "); @@ -410,7 +418,7 @@ class SampleAndDataSetControlFileProcessor extends AbstractSampleAndDataSetProce StringBuilder sb = new StringBuilder(); sb.append("The following lines were successfully registered:\n"); - for (SampleDataSetPair pair : successMap.keySet()) + for (SampleDataSetPair pair : successPairs) { sb.append("# "); String[] tokens = pair.getTokens(); diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java index 305ce74230fef499b7d6a057e42bf5126b1985d3..4cd4cf9f2e765922a0c3eb6271aef90400ad5b69 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/entityregistration/SampleAndDatasetRegistrationHandlerTest.java @@ -127,8 +127,8 @@ public class SampleAndDatasetRegistrationHandlerTest extends AbstractFileSystemT + "# Illegal empty identifier\n" + "\t/MYSPACE/MYPROJ/EXP2\tVAL11\tVAL21\tVAL31\tFILE_TYPE\tVAL41\tVAL51\tds2/\n\n" + "The following lines were successfully registered:\n" - + "# /MYSPACE/S3\t/MYSPACE/MYPROJ/EXP3\tVAL12\tVAL22\tVAL32\tFILE_TYPE\tVAL42\tVAL52\tds3/\n" - + "# /MYSPACE/S1\t/MYSPACE/MYPROJ/EXP1\tVAL10\tVAL20\tVAL30\tFILE_TYPE\tVAL40\tVAL50\tds1/\n"; + + "# /MYSPACE/S1\t/MYSPACE/MYPROJ/EXP1\tVAL10\tVAL20\tVAL30\tFILE_TYPE\tVAL40\tVAL50\tds1/\n" + + "# /MYSPACE/S3\t/MYSPACE/MYPROJ/EXP3\tVAL12\tVAL22\tVAL32\tFILE_TYPE\tVAL42\tVAL52\tds3/\n"; checkAppenderContent(logText, folderName); context.assertIsSatisfied();