public void relocateDirectories() {
    if (rripRoot.deepLevelCount() >= 8) {
      parentLocationFixups = new HashMap();
      parentLocations = new HashMap();
      childLocationFixups = new HashMap();
      childLocations = new HashMap();
      rripRoot.setMovedDirectoryStore();

      if (RockRidgeNamingConventions.HIDE_MOVED_DIRECTORIES_STORE
          && !rripRoot.getMovedDirectoriesStore().getName().startsWith(".")) {
        // Hide Moved Directories Store for Rock Ridge
        rripRoot
            .getMovedDirectoriesStore()
            .setName("." + ISO9660RootDirectory.MOVED_DIRECTORIES_STORE_NAME);
      }
    }

    super.relocateDirectories();
  }
  public void applyNamingConventions() throws HandlerException {
    super.applyNamingConventions();

    NamingConventions namingConventions = helper.getNamingConventions();
    namingConventions.processDirectory(rripRoot);

    Iterator sit = rripRoot.unsortedIterator();
    while (sit.hasNext()) {
      ISO9660Directory dir = (ISO9660Directory) sit.next();
      namingConventions.processDirectory(dir);
    }
  }
  public ISO9660RockRidgeFactory(
      StreamHandler streamHandler,
      StandardConfig config,
      LayoutHelper helper,
      ISO9660RootDirectory root,
      ISO9660RootDirectory isoRoot,
      HashMap volumeFixups,
      Map<String, Integer> fileModesMap) {
    super(streamHandler, config, helper, isoRoot, volumeFixups);
    this.rripFactory = new RRIPFactory(streamHandler);
    this.unfinishedNMEntries = new LinkedList();

    // Use a copy of the original root for Rock Ridge
    rripRoot = (ISO9660RootDirectory) root.clone();
    this.helper = new RockRidgeLayoutHelper(streamHandler, isoRoot, rripRoot);

    originalParentMapper = new HashMap();
    this.fileModesMap = fileModesMap;
  }