Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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);
  }
}