...
Code Block |
---|
void handleDir(myDir, domsParentObject) { thisDirObject = new Object(identifier = myDir.getPath()); domsParentObject.addHasPart(object = thisDirObject); handleFiles(myDir.getFiles(), thisDirObject); for(dir in myDir.getDirectories()) { handleDir(dir, thisDirObject); } } void handleFiles(myFiles, dirParentObject) { List<List> groupedByPrefix = groupByPrefix(myFiles) //groupedByPrefix is a set of groups. A group is a prefix and a set of files if (groupedByPrefix.size == 1){ //There is only one group, so add them as datastreams to the current group = groupedByPrefix.get(0) for (file in group){ handleFile(file, dirParentObject); } } else { // there is more than one group, so introduce sub directories for(List group in groupedByPrefix) { addHasPartaddPart(group, dirParentObject); } } } void handleFile(file, parentObject) { if(isDataFile(file)) { addFile(file, parentObject); } else { addDataStream(file, parentObject); } } void addHasPartaddPart(fileGroup, dirParentObject) { thisPartObject = new Object(identifier = fileGroup.getPrefix()); dirParentObject.addHasPart(object = thisPartObject); for(file in fileGroup) { handleFile(file, thisPartObject); } } void addFile(file, parentObject) { thisFileObject = new Object(identifier = file.getName); parentObject.addHasFile(object = thisFileObject); } |