All Downloads are FREE. Search and download functionalities are using the official Maven repository.

syncloud.synchronization.nodes.FilesSyncBundle Maven / Gradle / Ivy

The newest version!
package syncloud.synchronization.nodes;

import syncloud.core.CoreException;
import syncloud.dao.State;
import syncloud.synchronization.ISyncRecord;
import syncloud.synchronization.ISynchronizer;
import syncloud.storage.IFile;
import syncloud.storage.IFolder;
import syncloud.storage.INode;

import java.util.List;

public class FilesSyncBundle extends SyncBundle {

    public FilesSyncBundle(ISynchronizer sync, List nodes) {
        super(sync, nodes);
    }

    @Override
    public void synchronize() {
        super.synchronize();
    }

    @Override
    protected NodeState getState(SyncNode node) {
        State state = sync.getRecord().get(node.getFullname());
        if (node.getNode() == null) {
            if (state != null)
                return NodeState.DELETED;
            else
                return NodeState.NOTEXISTS;
        } else if (state != null) {
            if (!((IFile)node.getNode()).getVersion().equals(state.version))
                return NodeState.CHANGED;
            else
                return NodeState.UNCHANGED;
        } else {
            return NodeState.ADDED;
        }
    }

    @Override
    protected void putRecord(ISyncRecord records, INode node) {
        IFile file = (IFile)node;
        records.set(new State(file.getKey().getNativePath(), file.getVersion()));
    }

    @Override
    protected INode create(IFolder parent, INode from) throws CoreException {
        IFile fromFile = (IFile)from;
        IFile createdFile = parent.createFile(fromFile.getName(), fromFile, fromFile.size());
        return createdFile;
    }

    @Override
    protected void change(INode from, INode to) throws CoreException {
        IFile fromFile = (IFile)from;
        IFile toFile = (IFile)to;
        toFile.save(fromFile, fromFile.size());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy