import java.util.ArrayList; public class Directory { private ArrayList files; private ArrayList directories; private Directory outerDirectory; private String name; public Directory(String name, Directory outerDirectory) { files = new ArrayList(); directories = new ArrayList(); this.outerDirectory = outerDirectory; this.name = name; } public Directory outerDirectory() { return outerDirectory; } public void addElement(Object element) { if (element instanceof File) { files.add((File) element); } else if (element instanceof Directory) { directories.add((Directory) element); } } public int size() { int sum = 0; for (File file : files) { sum += file.size(); } for (Directory directive : directories) { sum += directive.size(); } return sum; } public String name() { return name; } public Directory getInnerDirectory(String name) { for (Directory directory : directories) { if (directory.name().equals(name)) return directory; } return null; } public ArrayList getAllInnerDirectories() { return directories; } public ArrayList getAllFolders() { ArrayList folderList = new ArrayList(); folderList.addAll(directories); for (Directory e : directories) folderList.addAll(e.getAllFolders()); return folderList; } public int countSum(int maximum) { int sum = 0; for (Directory directive : this.getAllFolders()) { if (directive.size() <= maximum) sum += directive.countSum(maximum); } return sum; } public void print() { for (Directory directive : directories) { System.out.println(directive.size()); } } }