protected void unfoldRecursion(DirectoryMetadata base, Collection<DirectoryMetadata> archiveMetas) { if(LOG.isDebugEnabled()) { LOG.debug("Directory: "+base.getName()+" Children: "+base.getNestedArchives().size()+" Path: "+base.getFilePointer().getAbsolutePath()); } for (ArchiveMetadata meta : base.getNestedArchives()) { DirectoryMetadata child = (DirectoryMetadata)meta; unfoldRecursion(child, archiveMetas); } archiveMetas.add(base); }
protected void populateChildren(DirectoryMetadata parent) { File[] files = parent.getFilePointer().listFiles(); if(LOG.isDebugEnabled()) { LOG.debug(files.length + " Children of "+parent.getFilePointer().getAbsolutePath()); } for(File file : files) { if(file.isDirectory()) { if(file.isHidden()) { LOG.debug("Skipping hidden directory: "+file.getAbsolutePath()); continue; } DirectoryMetadata dirMeta = new DirectoryMetadata(); parent.getNestedArchives().add(dirMeta); dirMeta.setArchiveMeta(parent); dirMeta.setFilePointer(file); dirMeta.setRelativePath(generateRelativePath(file)); dirMeta.setName(file.getName()); if(LOG.isTraceEnabled()) { LOG.trace("Added child: "+dirMeta.getRelativePath()); } populateChildren(dirMeta); } } }