Search in sources :

Example 1 with NewSymlinkFileSystemAction

use of org.syncany.operations.down.actions.NewSymlinkFileSystemAction in project syncany by syncany.

the class FileSystemActionReconciliator method determineActionWithLocalVersionAndLocalFileAsExpected.

private void determineActionWithLocalVersionAndLocalFileAsExpected(FileVersion winningLastVersion, File winningLastFile, FileVersion localLastVersion, File localLastFile, MemoryDatabase winnersDatabase, List<FileSystemAction> fileSystemActions) {
    FileVersionComparison winningVersionToLocalVersionComparison = fileVersionComparator.compare(winningLastVersion, localLastVersion);
    boolean contentChanged = winningVersionToLocalVersionComparison.getFileChanges().contains(FileChange.CHANGED_CHECKSUM) || winningVersionToLocalVersionComparison.getFileChanges().contains(FileChange.CHANGED_SIZE);
    if (winningVersionToLocalVersionComparison.areEqual()) {
        // Local file = local version = winning version!
        logger.log(Level.INFO, "     -> (8) Equals: Nothing to do, local file equals local version equals winning version: local file = " + localLastFile + ", local version = " + localLastVersion + ", winning version = " + winningLastVersion);
    } else if (winningVersionToLocalVersionComparison.getFileChanges().contains(FileChange.DELETED)) {
        FileSystemAction action = new ChangeFileSystemAction(config, winnersDatabase, assembler, localLastVersion, winningLastVersion);
        fileSystemActions.add(action);
        logger.log(Level.INFO, "     -> (9) Content changed: Local file does not exist, but it should: local file = " + localLastFile + ", local version = " + localLastVersion + ", winning version = " + winningLastVersion);
        logger.log(Level.INFO, "     -> " + action);
        changeSet.getChangedFiles().add(winningLastVersion.getPath());
    } else if (winningVersionToLocalVersionComparison.getFileChanges().contains(FileChange.NEW)) {
        FileSystemAction action = new DeleteFileSystemAction(config, localLastVersion, winningLastVersion, winnersDatabase);
        fileSystemActions.add(action);
        logger.log(Level.INFO, "     -> (10) Local file exists, but should not: local file = " + localLastFile + ", local version = " + localLastVersion + ", winning version = " + winningLastVersion);
        logger.log(Level.INFO, "     -> " + action);
        changeSet.getDeletedFiles().add(winningLastVersion.getPath());
    } else if (winningVersionToLocalVersionComparison.getFileChanges().contains(FileChange.CHANGED_LINK_TARGET)) {
        FileSystemAction action = new NewSymlinkFileSystemAction(config, winningLastVersion, winnersDatabase);
        fileSystemActions.add(action);
        logger.log(Level.INFO, "     -> (11) Changed link target: local file has a different link target: local file = " + localLastFile + ", local version = " + localLastVersion + ", winning version = " + winningLastVersion);
        logger.log(Level.INFO, "     -> " + action);
        changeSet.getNewFiles().add(winningLastVersion.getPath());
    } else if (!contentChanged && (winningVersionToLocalVersionComparison.getFileChanges().contains(FileChange.CHANGED_LAST_MOD_DATE) || winningVersionToLocalVersionComparison.getFileChanges().contains(FileChange.CHANGED_ATTRIBUTES) || winningVersionToLocalVersionComparison.getFileChanges().contains(FileChange.CHANGED_PATH))) {
        FileSystemAction action = new RenameFileSystemAction(config, localLastVersion, winningLastVersion, winnersDatabase);
        fileSystemActions.add(action);
        logger.log(Level.INFO, "     -> (12) Rename / Changed file attributes: Local file has different file attributes: local file = " + localLastFile + ", local version = " + localLastVersion + ", winning version = " + winningLastVersion);
        logger.log(Level.INFO, "     -> " + action);
        changeSet.getChangedFiles().add(winningLastVersion.getPath());
    } else {
        // Content changed
        FileSystemAction action = new ChangeFileSystemAction(config, winnersDatabase, assembler, localLastVersion, winningLastVersion);
        fileSystemActions.add(action);
        logger.log(Level.INFO, "     -> (13) Content changed: Local file differs from winning version: local file = " + localLastFile + ", local version = " + localLastVersion + ", winning version = " + winningLastVersion);
        logger.log(Level.INFO, "     -> " + action);
        changeSet.getChangedFiles().add(winningLastVersion.getPath());
    }
}
Also used : RenameFileSystemAction(org.syncany.operations.down.actions.RenameFileSystemAction) NewFileSystemAction(org.syncany.operations.down.actions.NewFileSystemAction) ChangeFileSystemAction(org.syncany.operations.down.actions.ChangeFileSystemAction) SetAttributesFileSystemAction(org.syncany.operations.down.actions.SetAttributesFileSystemAction) FileSystemAction(org.syncany.operations.down.actions.FileSystemAction) NewSymlinkFileSystemAction(org.syncany.operations.down.actions.NewSymlinkFileSystemAction) DeleteFileSystemAction(org.syncany.operations.down.actions.DeleteFileSystemAction) FileVersionComparison(org.syncany.database.FileVersionComparator.FileVersionComparison) ChangeFileSystemAction(org.syncany.operations.down.actions.ChangeFileSystemAction) NewSymlinkFileSystemAction(org.syncany.operations.down.actions.NewSymlinkFileSystemAction) RenameFileSystemAction(org.syncany.operations.down.actions.RenameFileSystemAction) DeleteFileSystemAction(org.syncany.operations.down.actions.DeleteFileSystemAction)

Example 2 with NewSymlinkFileSystemAction

use of org.syncany.operations.down.actions.NewSymlinkFileSystemAction in project syncany by syncany.

the class FileSystemActionReconciliator method determineActionNoLocalLastVersion.

private void determineActionNoLocalLastVersion(FileVersion winningLastVersion, File winningLastFile, MemoryDatabase winnersDatabase, List<FileSystemAction> outFileSystemActions) throws Exception {
    FileVersionComparison winningFileToVersionComparison = fileVersionComparator.compare(winningLastVersion, winningLastFile, true);
    boolean contentChanged = winningFileToVersionComparison.getFileChanges().contains(FileChange.CHANGED_CHECKSUM) || winningFileToVersionComparison.getFileChanges().contains(FileChange.CHANGED_SIZE);
    if (winningFileToVersionComparison.areEqual()) {
        logger.log(Level.INFO, "     -> (1) Equals: Nothing to do, winning version equals winning file: " + winningLastVersion + " AND " + winningLastFile);
    } else if (winningFileToVersionComparison.getFileChanges().contains(FileChange.DELETED)) {
        FileSystemAction action = new NewFileSystemAction(config, winnersDatabase, assembler, winningLastVersion);
        outFileSystemActions.add(action);
        logger.log(Level.INFO, "     -> (2) Deleted: Local file does NOT exist, but it should, winning version not known: " + winningLastVersion + " AND " + winningLastFile);
        logger.log(Level.INFO, "     -> " + action);
        changeSet.getNewFiles().add(winningLastVersion.getPath());
    } else if (winningFileToVersionComparison.getFileChanges().contains(FileChange.NEW)) {
        FileSystemAction action = new DeleteFileSystemAction(config, null, winningLastVersion, winnersDatabase);
        outFileSystemActions.add(action);
        logger.log(Level.INFO, "     -> (3) New: winning version was deleted, but local exists, winning version = " + winningLastVersion + " at " + winningLastFile);
        logger.log(Level.INFO, "     -> " + action);
        changeSet.getDeletedFiles().add(winningLastVersion.getPath());
    } else if (winningFileToVersionComparison.getFileChanges().contains(FileChange.CHANGED_LINK_TARGET)) {
        FileSystemAction action = new NewSymlinkFileSystemAction(config, winningLastVersion, winnersDatabase);
        outFileSystemActions.add(action);
        logger.log(Level.INFO, "     -> (4) Changed link target: winning file has a different link target: " + winningLastVersion + " AND " + winningLastFile);
        logger.log(Level.INFO, "     -> " + action);
        changeSet.getNewFiles().add(winningLastVersion.getPath());
    } else if (!contentChanged && (winningFileToVersionComparison.getFileChanges().contains(FileChange.CHANGED_LAST_MOD_DATE) || winningFileToVersionComparison.getFileChanges().contains(FileChange.CHANGED_ATTRIBUTES))) {
        FileSystemAction action = new SetAttributesFileSystemAction(config, winningLastVersion, winnersDatabase);
        outFileSystemActions.add(action);
        logger.log(Level.INFO, "     -> (5) Changed file attributes: winning file has different file attributes: " + winningLastVersion + " AND " + winningLastFile);
        logger.log(Level.INFO, "     -> " + action);
        changeSet.getNewFiles().add(winningLastVersion.getPath());
    } else if (winningFileToVersionComparison.getFileChanges().contains(FileChange.CHANGED_PATH)) {
        logger.log(Level.INFO, "     -> (6) Changed path: winning file has a different path: " + winningLastVersion + " AND " + winningLastFile);
        throw new Exception("What happend here?");
    } else {
        // Content changed
        FileSystemAction action = new NewFileSystemAction(config, winnersDatabase, assembler, winningLastVersion);
        outFileSystemActions.add(action);
        logger.log(Level.INFO, "     -> (7) Content changed: Winning file differs from winning version: " + winningLastVersion + " AND " + winningLastFile);
        logger.log(Level.INFO, "     -> " + action);
        changeSet.getNewFiles().add(winningLastVersion.getPath());
    }
}
Also used : NewFileSystemAction(org.syncany.operations.down.actions.NewFileSystemAction) RenameFileSystemAction(org.syncany.operations.down.actions.RenameFileSystemAction) NewFileSystemAction(org.syncany.operations.down.actions.NewFileSystemAction) ChangeFileSystemAction(org.syncany.operations.down.actions.ChangeFileSystemAction) SetAttributesFileSystemAction(org.syncany.operations.down.actions.SetAttributesFileSystemAction) FileSystemAction(org.syncany.operations.down.actions.FileSystemAction) NewSymlinkFileSystemAction(org.syncany.operations.down.actions.NewSymlinkFileSystemAction) DeleteFileSystemAction(org.syncany.operations.down.actions.DeleteFileSystemAction) SetAttributesFileSystemAction(org.syncany.operations.down.actions.SetAttributesFileSystemAction) FileVersionComparison(org.syncany.database.FileVersionComparator.FileVersionComparison) NewSymlinkFileSystemAction(org.syncany.operations.down.actions.NewSymlinkFileSystemAction) DeleteFileSystemAction(org.syncany.operations.down.actions.DeleteFileSystemAction)

Aggregations

FileVersionComparison (org.syncany.database.FileVersionComparator.FileVersionComparison)2 ChangeFileSystemAction (org.syncany.operations.down.actions.ChangeFileSystemAction)2 DeleteFileSystemAction (org.syncany.operations.down.actions.DeleteFileSystemAction)2 FileSystemAction (org.syncany.operations.down.actions.FileSystemAction)2 NewFileSystemAction (org.syncany.operations.down.actions.NewFileSystemAction)2 NewSymlinkFileSystemAction (org.syncany.operations.down.actions.NewSymlinkFileSystemAction)2 RenameFileSystemAction (org.syncany.operations.down.actions.RenameFileSystemAction)2 SetAttributesFileSystemAction (org.syncany.operations.down.actions.SetAttributesFileSystemAction)2