private FileVersion createNewFileVersion( FileVersion lastFileVersion, FileProperties fileProperties) { FileVersion fileVersion = null; // Version if (lastFileVersion == null) { fileVersion = new FileVersion(); fileVersion.setVersion(1L); fileVersion.setStatus(FileStatus.NEW); } else { fileVersion = lastFileVersion.clone(); fileVersion.setVersion(lastFileVersion.getVersion() + 1); } // Simple attributes fileVersion.setPath(fileProperties.getRelativePath()); fileVersion.setLinkTarget(fileProperties.getLinkTarget()); fileVersion.setType(fileProperties.getType()); fileVersion.setSize(fileProperties.getSize()); fileVersion.setChecksum(fileProperties.getChecksum()); fileVersion.setLastModified(new Date(fileProperties.getLastModified())); fileVersion.setUpdated(new Date()); // Permissions if (EnvironmentUtil.isWindows()) { fileVersion.setDosAttributes(fileProperties.getDosAttributes()); fileVersion.setPosixPermissions(DEFAULT_POSIX_PERMISSIONS); } else if (EnvironmentUtil.isUnixLikeOperatingSystem()) { fileVersion.setPosixPermissions(fileProperties.getPosixPermissions()); fileVersion.setDosAttributes(DEFAULT_DOS_ATTRIBUTES); } // Status if (lastFileVersion != null) { if (fileVersion.getType() == FileType.FILE && FileChecksum.fileChecksumEquals( fileVersion.getChecksum(), lastFileVersion.getChecksum())) { fileVersion.setStatus(FileStatus.CHANGED); } else if (!fileVersion.getPath().equals(lastFileVersion.getPath())) { fileVersion.setStatus(FileStatus.RENAMED); } else { fileVersion.setStatus(FileStatus.CHANGED); } } return fileVersion; }
private PartialFileHistory guessLastFileHistoryForFolderOrSymlink( FileProperties fileProperties) { PartialFileHistory lastFileHistory = filePathCache.get(fileProperties.getRelativePath()); if (lastFileHistory == null) { logger.log( Level.FINER, " * No old file history found, starting new history (path: " + fileProperties.getRelativePath() + ", " + fileProperties.getType() + ")"); return null; } else { FileVersion lastFileVersion = lastFileHistory.getLastVersion(); if (lastFileVersion.getStatus() != FileStatus.DELETED && lastFileVersion.getType() == fileProperties.getType()) { logger.log( Level.FINER, " * Found old file history " + lastFileHistory.getFileHistoryId() + " (by path: " + fileProperties.getRelativePath() + "), " + fileProperties.getType() + ", appending new version."); return lastFileHistory; } else { logger.log( Level.FINER, " * No old file history found, starting new history (path: " + fileProperties.getRelativePath() + ", " + fileProperties.getType() + ")"); return null; } } }
private void updateTable(LsFolderRequest lsRequest, LsFolderResponse lsResponse) { logger.log( Level.INFO, "Detail panel: Updating table with " + lsResponse.getResult().getFileVersions().size() + " file versions ..."); // Add new file version items List<PartialFileHistory> fileVersions = new ArrayList<>(lsResponse.getResult().getFileVersions().values()); selectedFileHistory = fileVersions.get(0); for (FileVersion fileVersion : selectedFileHistory.getFileVersions().values()) { String checksumStr = (fileVersion.getChecksum() != null) ? fileVersion.getChecksum().toString() : ""; TableItem tableItem = new TableItem(historyTable, SWT.NONE); tableItem.setData(fileVersion); tableItem.setImage(COLUMN_INDEX_STATUS, getStatusImage(fileVersion.getStatus())); tableItem.setText(COLUMN_INDEX_PATH, fileVersion.getPath()); tableItem.setText(COLUMN_INDEX_VERSION, Long.toString(fileVersion.getVersion())); tableItem.setText(COLUMN_INDEX_TYPE, fileVersion.getType().toString()); tableItem.setText(COLUMN_INDEX_SIZE, FileUtil.formatFileSize(fileVersion.getSize())); tableItem.setText(COLUMN_INDEX_POSIX_PERMS, fileVersion.getPosixPermissions()); tableItem.setText(COLUMN_INDEX_DOS_ATTRS, fileVersion.getDosAttributes()); tableItem.setText(COLUMN_INDEX_CHECKSUM, checksumStr); tableItem.setText(COLUMN_INDEX_LAST_MODIFIED, "" + fileVersion.getLastModified()); tableItem.setText(COLUMN_INDEX_UPDATED, "" + fileVersion.getUpdated()); } if (historyTable.getItemCount() > 0) { restoreButton.setEnabled(false); historyTable.select(historyTable.getItemCount() - 1); } resizeColumns(); }