Skip to content

Commit

Permalink
handle file names in provenance and change to structure
Browse files Browse the repository at this point in the history
  • Loading branch information
wow-such-code committed May 15, 2024
1 parent 37966d5 commit 527c528
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 33 deletions.
12 changes: 0 additions & 12 deletions src/main/groovy/life/qbic/registration/MainETL.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,4 @@ class MainETL extends AbstractJavaDataSetRegistrationDropboxV2 {
}
}

private static Optional<String> getExtractedRootDir(String tmpFolderPath) {
File tmpDir = new File(tmpFolderPath)
String[] childList = tmpDir.list();
if(childList.size() == 1) {
String childPath = tmpDir.getAbsolutePath() + "/" + childList[0];
if (new File(childPath).isDirectory()) {
return Optional.of(childPath)
}
}
return Optional.empty()
}

}
23 changes: 21 additions & 2 deletions src/main/groovy/life/qbic/registration/Provenance.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,34 @@ package life.qbic.registration

import groovy.json.JsonSlurper

/**
* Example of a provenance file:
* {
"origin": "/Users/myuser/registration",
"user": "/Users/myuser",
"measurementId": "NGSQTEST001AE-1234512312",
"datasetFiles" : [ "file1_1.fastq.gz", "file1_2.fastq.gz" ],
"taskId": "74c5d26f-b756-42c3-b6f4-2b4825670a2d",
"history": [
"/opt/scanner-app/scanner-processing-dir/74c5d26f-b756-42c3-b6f4-2b4825670a2d"
]
}
*/

class Provenance {

final String origin
final String user
final String measurementID
final List<String> datasetFiles
final List<String> history

Provenance(String origin, String user, String measurementID, List<String> history) {
Provenance(String origin, String user, String measurementID, List<String> datasetFiles,
List<String> history) {
this.origin = origin
this.user = user
this.measurementID = measurementID
this.datasetFiles = datasetFiles
this.history = history
}

Expand All @@ -21,7 +38,9 @@ class Provenance {
def object = jsonSlurper.parseText(jsonString)
assert object instanceof Map
assert object.history instanceof List
assert object.datasetFiles instanceof List
return new Provenance(object.origin as String, object.user as String,
object.measurementId as String, object.history as List<String>)
object.measurementId as String, object.datasetFiles as List<String>,
object.history as List<String>)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,31 +38,26 @@ class DatasetLocatorImpl implements DatasetLocator{
*/
@Override
String getPathToDataset() {
return findNestedDataset().orElseThrow()
return findOrCreateDataPath().orElseThrow()
}

private Optional<String> findNestedDataset() {
private Optional<String> findOrCreateDataPath() {
File rootDir = new File(incomingPath)
if (!rootDir.isDirectory())
return Optional.empty()
/*
Now we iterate through the list of child elements in the folder, and search for the directory name appearances.
If it is a child directory, that means it has been processed with the dropboxhandler and
we can return the nested dataset path.
*/
for (String child : rootDir.list()) {
if (child.startsWith(provenance.measurementID)) {
String innerFolderPath = rootDir.getAbsolutePath() + "/" + child
File innerFolder = new File(innerFolderPath)
if(innerFolder.list().size() == 1) {
String singleFilePath = innerFolderPath+"/"+innerFolder.list()[0]
return Optional.of(singleFilePath)
} else {
return Optional.of(innerFolderPath)
}
}
List<String> fileNames = provenance.datasetFiles;
if(fileNames.size() == 0)
return Optional.empty()
if(fileNames.size() == 1)
return Optional.of(rootDir.getAbsolutePath() + "/" + fileNames[0])
// more than one file
var newDataFolder = new File(rootDir.getAbsolutePath(), "data");
newDataFolder.mkdir();
for(String fileName : fileNames) {
String targetPath = newDataFolder.getAbsolutePath()+"/"+fileName
new File(rootDir.getAbsolutePath()+"/"+fileName).renameTo(targetPath)
}
return Optional.empty()
return Optional.of(newDataFolder.getAbsolutePath())
}

private static boolean isAbsolutePath(String path) {
Expand Down

0 comments on commit 527c528

Please sign in to comment.