...
The following pseudo code is meant to express the above rules on a more formal basis.
In the codes, the methods:
- groupByPrefix(): returns an object which groups files by their common prefix.
- isDataFile(): returns a boolean telling if the given file is a datafile.
Code Block |
---|
void handleDir(myDir, domsParentObject) { thisDirObject = new Object(label = myDir.getName()); domsParentObject.addHasPart(object = thisDirObject, relationName = myDir.getPath()); for(dir in myDir.getDirectories()) { handleDir(dir, thisDirObject); } handleFiles(myDir.getFiles(), thisDirObject); } void handleFiles(myFiles, dirParentObject) { for(group in groupByPrefix(myFiles)) { if(group.size == 1) { handleFile(group.get(0), dirParentObject); } else { addHasPart(group, dirParentObject); } } } void handleFile(file, parentObject) { if(isDataFile(file)) { addHasFile(file, parentObject); } else { addDataStream(file, parentObject); } } void addHasPart(fileGroup, dirParentObject) { thisPartObject = new Object(label = fileGroup.getPrefix()); dirParentObject.addHasPart(object = thisPartObject, relationName = fileGroup.getPrefix()); for(file in fileGroup) { handleFile(file, thisPartObject); } } |