private List<Folder> collectFromFolder(Folder folder) { List<Folder> sourceFolders = new ArrayList<Folder>(); for (Folder subFolder : folder.subFolders()) { sourceFolders.addAll(handleSourceFolders(subFolder)); sourceFolders.addAll(handleNonSourceFolders(subFolder)); } return sourceFolders; }
private List<Folder> handleSourceFolders(final Folder subFolder) { if (subFolder.isSourceFolder()) { return new ArrayList<Folder>() { { add(subFolder); } }; } return emptyList(); }
private List<Folder> handleNonSourceFolders(Folder subFolder) { if (subFolder.isNotSourceFolder()) { return collectFromFolder(subFolder); } return emptyList(); }