// Path: src/main/java/control/LocalFileStorage.java
// public class LocalFileStorage {
// 	private static LocalFileStorage instance;
// 	private final Map<Integer, String> localFileLocations;
// 
// 	private LocalFileStorage() {
// 		this.localFileLocations = new HashMap<Integer, String>();
// 	}
// 
// 	public static LocalFileStorage getInstance() {
// 		if (instance == null) {
// 			instance = new LocalFileStorage();
// 		}
// 		return instance;
// 	}
// 
// 	public void refresh() {
// 		scanFolders(Settings.getInstance().getIliasFolderSettings().getLocalIliasFolderPath());
// 	}
// 
// 	public Set<Integer> getAllLocalFileSizes() {
// 		return localFileLocations.keySet();
// 	}
// 
// 	private void scanFolders(String path) {
// 		File dir = new File(path);
// 		File[] files = dir.listFiles();
// 
// 		for (File file : files) {
// 			if (file.isDirectory()) {
// 				scanFolders(file.getAbsolutePath());
// 														//.zip is not detected as a "file"
// 			} else if (file.isFile() || file.getPath().toLowerCase().endsWith(".zip")) {
// 				localFileLocations.put((int) file.length(), file.getAbsolutePath());
// 			}
// 		}
// 	}
// 
// 	public boolean contains(IliasFile iliasFile) {
// 		return localFileLocations.containsKey(iliasFile.getSize());
// 	}
// 
// 	public void addIliasFile(IliasFile iliasFile, String path) {
// 		localFileLocations.put(iliasFile.getSize(), path);
// 	}
// 
// 	public boolean isFolderSynchronized(IliasFolder folder) {
// 		for (IliasTreeNode node : folder.getChildNodes()) {
// 			if (node instanceof IliasFile) {
// 				IliasFile iliasFile = (IliasFile) node;
// 				if (!contains(iliasFile) && !iliasFile.isIgnored()) {
// 					return false;
// 				}
// 			} else if (node instanceof IliasFolder) {
// 				if (!isFolderSynchronized((IliasFolder) node)) {
// 					return false;
// 				}
// 			}
// 		}
// 		return true;
// 	}
// 
// 	public String suggestDownloadPath(IliasFile iliasFile) {
// 		final List<IliasTreeNode> siblings = iliasFile.getParentFolder().getChildNodes();
// 		for (IliasTreeNode node : siblings) {
// 			if (node instanceof IliasFile) {
// 				final String result = getContainingFolder((IliasFile) node);
// 				if (result != null) {
// 					return result;
// 				}
// 			}
// 		}
// 		return Settings.getInstance().getIliasFolderSettings().getLocalIliasFolderPath();
// 	}
// 
// 	private String getContainingFolder(IliasFile iliasFile) {
// 		final int size = iliasFile.getSize();
// 		String path = localFileLocations.get(size);
// 		if (path == null) {
// 			return null;
// 		}
// 		path = path.substring(0, path.lastIndexOf(File.separator));
// 		return path;
// 	}
// 
// 
// 	public File getFile(IliasFile iliasFile) {
// 		final String location = localFileLocations.get(iliasFile.getSize());
// 		if (location == null) {
// 			return null;
// 		}
// 		return new File(location);
// 	}
// }


import java.util.ArrayList;
import java.util.List;
import control.LocalFileStorage;
import javafx.scene.image.ImageView;

package model;



public class IliasFolder extends IliasTreeNode {
	private static final long serialVersionUID = 6134132849917192741L;
	private final List<IliasTreeNode> childFolders;

	public IliasFolder(String name, String url, IliasFolder parentDirectory) {

// Path: src/main/java/control/LocalFileStorage.java
// public class LocalFileStorage {
// 	private static LocalFileStorage instance;
// 	private final Map<Integer, String> localFileLocations;
// 
// 	private LocalFileStorage() {
// 		this.localFileLocations = new HashMap<Integer, String>();
// 	}
// 
// 	public static LocalFileStorage getInstance() {
// 		if (instance == null) {
// 			instance = new LocalFileStorage();
// 		}
// 		return instance;
// 	}
// 
// 	public void refresh() {
// 		scanFolders(Settings.getInstance().getIliasFolderSettings().getLocalIliasFolderPath());
// 	}
// 
// 	public Set<Integer> getAllLocalFileSizes() {
// 		return localFileLocations.keySet();
// 	}
// 
// 	private void scanFolders(String path) {
// 		File dir = new File(path);
// 		File[] files = dir.listFiles();
// 
// 		for (File file : files) {
// 			if (file.isDirectory()) {
// 				scanFolders(file.getAbsolutePath());
// 														//.zip is not detected as a "file"
// 			} else if (file.isFile() || file.getPath().toLowerCase().endsWith(".zip")) {
// 				localFileLocations.put((int) file.length(), file.getAbsolutePath());
// 			}
// 		}
// 	}
// 
// 	public boolean contains(IliasFile iliasFile) {
// 		return localFileLocations.containsKey(iliasFile.getSize());
// 	}
// 
// 	public void addIliasFile(IliasFile iliasFile, String path) {
// 		localFileLocations.put(iliasFile.getSize(), path);
// 	}
// 
// 	public boolean isFolderSynchronized(IliasFolder folder) {
// 		for (IliasTreeNode node : folder.getChildNodes()) {
// 			if (node instanceof IliasFile) {
// 				IliasFile iliasFile = (IliasFile) node;
// 				if (!contains(iliasFile) && !iliasFile.isIgnored()) {
// 					return false;
// 				}
// 			} else if (node instanceof IliasFolder) {
// 				if (!isFolderSynchronized((IliasFolder) node)) {
// 					return false;
// 				}
// 			}
// 		}
// 		return true;
// 	}
// 
// 	public String suggestDownloadPath(IliasFile iliasFile) {
// 		final List<IliasTreeNode> siblings = iliasFile.getParentFolder().getChildNodes();
// 		for (IliasTreeNode node : siblings) {
// 			if (node instanceof IliasFile) {
// 				final String result = getContainingFolder((IliasFile) node);
// 				if (result != null) {
// 					return result;
// 				}
// 			}
// 		}
// 		return Settings.getInstance().getIliasFolderSettings().getLocalIliasFolderPath();
// 	}
// 
// 	private String getContainingFolder(IliasFile iliasFile) {
// 		final int size = iliasFile.getSize();
// 		String path = localFileLocations.get(size);
// 		if (path == null) {
// 			return null;
// 		}
// 		path = path.substring(0, path.lastIndexOf(File.separator));
// 		return path;
// 	}
// 
// 
// 	public File getFile(IliasFile iliasFile) {
// 		final String location = localFileLocations.get(iliasFile.getSize());
// 		if (location == null) {
// 			return null;
// 		}
// 		return new File(location);
// 	}
// }


// Path: src/main/java/model/IliasFolder.java
import java.util.ArrayList;
import java.util.List;
import control.LocalFileStorage;
import javafx.scene.image.ImageView;

package model;



public class IliasFolder extends IliasTreeNode {
	private static final long serialVersionUID = 6134132849917192741L;
	private final List<IliasTreeNode> childFolders;

	public IliasFolder(String name, String url, IliasFolder parentDirectory) {

		super(name, url, parentDirectory);
