/** * 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 java.io.File; import org.jkan997.slingbeans.helper.StringHelper; import java.io.Serializable; import java.util.Arrays; import java.util.Comparator; import java.util.Map; import java.util.Set; import java.util.TreeMap; import static org.jkan997.slingbeans.sync.Synchronizer.SYNC_DESCRIPTOR; /** * * @author jkan997 */ public class SyncDescriptor implements Serializable { private final static Comparator comp = new SyncEntryComparator(); private String bundlePath = null; private String remotePath = null; private String remoteFsId = null; private long lastSync = -1; private Map<String, SyncEntry> syncEntryMap = new TreeMap<String, SyncEntry>(); public static File findSyncDescriptor(File f) { File syncFile = null; while (f != null) { syncFile = new File(f.getAbsolutePath() + "/" + SYNC_DESCRIPTOR); if (syncFile.exists()) { return f; } f = f.getParentFile(); } return null; } public long getLastSync() { return lastSync; } public void setLastSync(long lastSync) { this.lastSync = lastSync; } public Set<Map.Entry<String, SyncEntry>> entrySet() { return syncEntryMap.entrySet(); } public SyncEntry[] entries() { SyncEntry[] arr = syncEntryMap.values().toArray(new SyncEntry[]{}); Arrays.sort(arr, comp); return arr; } public void clear(){ syncEntryMap.clear(); } public synchronized SyncEntry getSyncEntry(String path, boolean folder) { path = StringHelper.normalizePath(path); SyncEntry res = syncEntryMap.get(path); if (res == null) { res = new SyncEntry(path); res.setFolder(folder); syncEntryMap.put(path, res); } return res; } public Map<String, SyncEntry> getSyncEntryMap() { return syncEntryMap; } public void setSyncEntryMap(Map<String, SyncEntry> syncEntryMap) { this.syncEntryMap = syncEntryMap; } public String getBundlePath() { return bundlePath; } public void setBundlePath(String bundlePath) { this.bundlePath = bundlePath; } public String getRemotePath() { return remotePath; } public void setRemotePath(String remotePath) { this.remotePath = remotePath; } public String getRemoteFsId() { return remoteFsId; } public void setRemoteFsId(String remoteFsId) { this.remoteFsId = remoteFsId; } }