/** * SlingBeans - NetBeans Sling plugin * https://github.com/jkan997/SlingBeans * Licensed under Apache 2.0 license * http://www.apache.org/licenses/LICENSE-2.0 */ package org.jkan997.slingbeans.sync; import org.jkan997.slingbeans.slingfs.FileObject; import java.io.File; /** * * @author jkan997 */ public class SyncScanner { private SyncDescriptor map; private boolean remote = false; public void scan(FileObject fo, SyncDescriptor map) { String rootDir = fo.getPath(); SynchronizableFile sf = new FileObjectSF(fo, rootDir); remote = true; scan(sf, map); } public void scan(File f, SyncDescriptor map) { remote=false; String rootDir = f.getPath(); SynchronizableFile sf = new FileSF(f, rootDir); scan(sf, map); } public void scan(SynchronizableFile sf, SyncDescriptor map) { this.map = map; scanFileObject(sf); } private void scanFileObject(SynchronizableFile sf) { if (sf.path.equals(Synchronizer.SYNC_DESCRIPTOR)) return; boolean isFile = sf.isFile(); boolean isFolder = sf.isFolder(); if ((isFile) || (isFolder)) { SyncEntry se = map.getSyncEntry(sf.getPath(), isFolder); if (remote) { se.setModifiedRemote(sf.lastModified()); } else { se.setModifiedLocally(sf.lastModified()); } } if (sf.isFolder()) { for (SynchronizableFile child : sf.getChildren()) { scanFileObject(child); } } } }