Skip to content

Commit aa79280

Browse files
committed
remove the provenance file from the dataset
removes the provenance files, moves the folder into the dataset and writes the file again if something went wrong.
1 parent 0a6567e commit aa79280

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

Diff for: src/main/java/life/qbic/registration/openbis/OpenBisDropboxETL.java

+31-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import ch.systemsx.cisd.etlserver.registrator.api.v2.IDataSetRegistrationTransactionV2;
88
import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v2.ISampleImmutable;
99
import java.io.File;
10+
import java.io.IOException;
11+
import java.nio.file.Files;
1012
import life.qbic.registration.openbis.exceptions.fail.MeasurementHasDataException;
1113
import life.qbic.registration.openbis.exceptions.fail.UnknownSampleTypeException;
1214
import life.qbic.registration.openbis.types.QDatasetType;
@@ -50,8 +52,9 @@ public boolean shouldRetryProcessing(DataSetRegistrationContext context, Excepti
5052

5153
@Override
5254
public void process(IDataSetRegistrationTransactionV2 transaction) {
55+
File provenanceFile = new File(transaction.getIncoming(), PROVENANCE_FILE_NAME);
5356
DataSetProvenance dataSetProvenance = ProvenanceParser.parseProvenanceJson(
54-
new File(transaction.getIncoming(), PROVENANCE_FILE_NAME));
57+
provenanceFile);
5558

5659
String measurementId = dataSetProvenance.measurementId();
5760

@@ -68,8 +71,34 @@ public void process(IDataSetRegistrationTransactionV2 transaction) {
6871
newDataSet.setPropertyValue(QPropertyType.Q_TASK_ID.getOpenBisPropertyName(), dataSetProvenance.taskId());
6972
QDatasetType qDatasetType = getDatasetType(measurementSample);
7073
newDataSet.setDataSetType(qDatasetType.name());
74+
moveFiles(transaction, newDataSet, provenanceFile);
7175

72-
transaction.moveFile(transaction.getIncoming().getAbsolutePath(), newDataSet);
76+
}
77+
78+
private void moveFiles(IDataSetRegistrationTransactionV2 transactionV2, IDataSet dataSet, File provenanceFile) {
79+
80+
byte[] buffer = null;
81+
try {
82+
buffer = Files.readAllBytes(provenanceFile.toPath().toAbsolutePath());
83+
Files.delete(provenanceFile.toPath());
84+
transactionV2.moveFile(transactionV2.getIncoming().getAbsolutePath(), dataSet);
85+
} catch (RuntimeException e) {
86+
//recover provenance file
87+
try {
88+
Files.write(provenanceFile.toPath().toAbsolutePath(), buffer);
89+
} catch (IOException ex) {
90+
throw new RuntimeException(ex);
91+
}
92+
throw e;
93+
} catch (IOException e) {
94+
//recover provenance file
95+
try {
96+
Files.write(provenanceFile.toPath().toAbsolutePath(), buffer);
97+
} catch (IOException ex) {
98+
throw new RuntimeException(ex);
99+
}
100+
throw new RuntimeException(e);
101+
}
73102
}
74103

75104
private static QDatasetType getDatasetType(ISampleImmutable measurementSample) {

0 commit comments

Comments
 (0)