/** * Build a list of blog categories recursively * * @param blogUser {@link BlogUser} * @param blogDepth Depth at which the current iteration is running * @param blogDirectoryDepth Depth to which the fetcher should stop looking for categories * @param blogDirectory Directory in which the current iteration is running * @param categoryList Dynamic list of categories that gets added to as it explores directories */ protected void recursiveCategoryBuilder( BlogUser blogUser, int blogDepth, int blogDirectoryDepth, String blogDirectory, List categoryList) { Blog blog = blogUser.getBlog(); blogDepth++; if (blogDirectoryDepth != BlojsomConstants.INFINITE_BLOG_DEPTH) { if (blogDepth == blogDirectoryDepth) { return; } } File blogDir = new File(blogDirectory); File[] directories; if (blog.getBlogDirectoryFilter() == null) { directories = blogDir.listFiles(BlojsomUtils.getDirectoryFilter()); } else { directories = blogDir.listFiles(BlojsomUtils.getDirectoryFilter(blog.getBlogDirectoryFilter())); } String categoryKey = BlojsomUtils.getBlogCategory(blog.getBlogHome(), blogDirectory); if (!categoryKey.endsWith("/")) { categoryKey += "/"; } BlogCategory blogCategory = new FileBackedBlogCategory(); blogCategory.setParentCategory(this); blogCategory.setCategory(categoryKey); blogCategory.setCategoryURL(blog.getBlogURL() + BlojsomUtils.removeInitialSlash(categoryKey)); try { blogCategory.load(blogUser); } catch (BlojsomException e) { _logger.error(e); } if (blogDepth != 0) { categoryList.add(blogCategory); } if (directories == null) { return; } else { for (int i = 0; i < directories.length; i++) { File directory = directories[i]; recursiveCategoryBuilder( blogUser, blogDepth, blogDirectoryDepth, directory.toString(), categoryList); } } }