package jdrivesync.model; import java.io.File; import java.util.*; public class SyncDirectory extends SyncItem { private List<SyncItem> children = new LinkedList<>(); public SyncDirectory(Optional<File> localFile, Optional<com.google.api.services.drive.model.File> remoteFile, String path, Optional<SyncDirectory> parent) { super(localFile, remoteFile, path, parent); } public void addChild(SyncItem child) { children.add(child); } public Iterator<SyncItem> getChildrenIterator() { Collections.sort(children, (o1, o2) -> { if(o1.getLocalFile().isPresent() && o2.getLocalFile().isPresent()) { return o1.getLocalFile().get().getName().compareTo(o2.getLocalFile().get().getName()); } else if(o1.getRemoteFile().isPresent() && o2.getRemoteFile().isPresent()) { return o1.getRemoteFile().get().getTitle().compareTo(o2.getRemoteFile().get().getTitle()); } else if(o1.getLocalFile().isPresent() && o2.getRemoteFile().isPresent()) { return o1.getLocalFile().get().getName().compareTo(o2.getRemoteFile().get().getTitle()); } else if(o2.getLocalFile().isPresent() && o1.getRemoteFile().isPresent()) { return o2.getLocalFile().get().getName().compareTo(o1.getRemoteFile().get().getTitle()); } return 0; }); return children.iterator(); } public boolean isRootDirectory() { boolean isRoot = false; if("/".equals(path)) { isRoot = true; } return isRoot; } }