/**
* 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.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author jkan997
*/
public class SyncEntry implements Serializable {
private String path;
private long modifiedRemote = -1;
private long modifiedLocally = -1;
private long lastSync = -1;
private int depth;
private boolean folder;
private List<SyncAction> actions = new ArrayList<SyncAction>();
public SyncEntry(String path) {
this.path = path;
int res = 0;
for (int i = 0, len = path.length(); i < len; i++) {
char c = path.charAt(i);
if (c == '/') {
res++;
}
}
this.depth=res;
}
public long getModifiedRemote() {
return modifiedRemote;
}
public void setModifiedRemote(long modifiedRemote) {
this.modifiedRemote = modifiedRemote;
}
public long getModifiedLocally() {
return modifiedLocally;
}
public void setModifiedLocally(long modifiedLocally) {
this.modifiedLocally = modifiedLocally;
}
public long getLastSync() {
return lastSync;
}
public void setLastSync(long lastSync) {
this.lastSync = lastSync;
}
public String getPath() {
return path;
}
public int getDepth() {
return depth;
}
public void setDepth(int depth) {
this.depth = depth;
}
public boolean isFolder() {
return folder;
}
public void setFolder(boolean folder) {
this.folder = folder;
}
public int getActionCount() {
return actions.size();
}
public SyncAction getAction(SyncMode mode) {
if (((mode==null)||(mode==SyncMode.MERGE))&&(actions.size()==1)){
return actions.get(0);
}
if (mode==SyncMode.USE_LOCAL_CHANGES){
for (SyncAction action : actions){
if (SyncActionHelper.isLocalAction(action)){
return action;
}
}
}
if (mode==SyncMode.USE_REMOTE_CHANGES){
for (SyncAction action : actions){
if (SyncActionHelper.isRemoteAction(action)){
return action;
}
}
}
return null;
}
public SyncAction[] getActions() {
return actions.toArray(new SyncAction[]{});
}
public String getActionsStr() {
boolean first = true;
StringBuilder sb = new StringBuilder();
for (SyncAction action : actions){
if (first){
first=false;
} else {
sb.append(", ");
}
sb.append(action);
}
return sb.toString();
}
public void addAction(SyncAction action) {
this.actions.add(action);
}
public void setPath(String path) {
this.path = path;
}
public SyncEntry() {
}
}