protected void createFileFolderOrSymlink(FileVersion reconstructedFileVersion) throws Exception { if (reconstructedFileVersion.getType() == FileType.FILE) { createFile(reconstructedFileVersion); } else if (reconstructedFileVersion.getType() == FileType.FOLDER) { createFolder(reconstructedFileVersion); } else if (reconstructedFileVersion.getType() == FileType.SYMLINK) { createSymlink(reconstructedFileVersion); } else { logger.log(Level.INFO, " - Unknown file type: " + reconstructedFileVersion.getType()); throw new Exception("Unknown file type: " + reconstructedFileVersion.getType()); } }
@Override public RestoreFileSystemActionResult execute() throws Exception { if (fileVersion2.getType() == FileType.FOLDER) { throw new Exception("Cannot restore folders."); } else if (fileVersion2.getType() == FileType.SYMLINK) { throw new Exception("Not yet implemented."); } else { // Assemble file to cache File cacheFile = assembleFileToCache(fileVersion2); // Find target path & folder NormalizedPath targetPath = findTargetPath(); NormalizedPath targetFolder = targetPath.getParent(); // Create folder (if necessary) and move file if (!targetFolder.toFile().isDirectory()) { targetFolder.toFile().mkdirs(); } FileUtils.moveFile(cacheFile, targetPath.toFile()); return new RestoreFileSystemActionResult(targetPath.toFile()); } }
preparedStatement.setLong(3, databaseVersionId); preparedStatement.setString(4, fileVersion.getPath()); preparedStatement.setString(5, fileVersion.getType().toString()); preparedStatement.setString(6, fileVersion.getStatus().toString()); preparedStatement.setLong(7, fileVersion.getSize());
return new RestoreOperationResult(RestoreResultCode.NACK_NO_FILE); else if (restoreFileVersion.getType() == FileType.FOLDER) { return new RestoreOperationResult(RestoreResultCode.NACK_INVALID_FILE);
private void printOneVersion(FileVersion fileVersion, int longestVersion, int longestSize) { String fileStatus = formatFileStatusShortStr(fileVersion.getStatus()); String fileType = formatFileTypeShortStr(fileVersion.getType()); String posixPermissions = (fileVersion.getPosixPermissions() != null) ? fileVersion.getPosixPermissions() : ""; String dosAttributes = (fileVersion.getDosAttributes() != null) ? fileVersion.getDosAttributes() : ""; String fileChecksum = formatObjectId(fileVersion.getChecksum()); String fileHistoryId = formatObjectId(fileVersion.getFileHistoryId()); String path = (fileVersion.getType() == FileType.SYMLINK) ? fileVersion.getPath() + " -> " + fileVersion.getLinkTarget() : fileVersion.getPath(); out.printf("%s %s %s %9s %4s %" + longestSize + "d %" + checksumLength + "s %" + checksumLength + "s %"+longestVersion+"d %s\n", DATE_FORMAT.format(fileVersion.getUpdated()), fileStatus, fileType, posixPermissions, dosAttributes, fileVersion.getSize(), fileChecksum, fileHistoryId, fileVersion.getVersion(), path); }
public FileProperties captureFileProperties(FileVersion fileVersion) { if (fileVersion == null) { return null; } FileProperties fileProperties = new FileProperties(); fileProperties.lastModified = fileVersion.getLastModified().getTime(); fileProperties.size = fileVersion.getSize(); fileProperties.relativePath = fileVersion.getPath(); fileProperties.linkTarget = fileVersion.getLinkTarget(); fileProperties.checksum = fileVersion.getChecksum(); fileProperties.type = fileVersion.getType(); fileProperties.posixPermissions = fileVersion.getPosixPermissions(); fileProperties.dosAttributes = fileVersion.getDosAttributes(); fileProperties.exists = fileVersion.getStatus() != FileStatus.DELETED; fileProperties.locked = false; return fileProperties; }
if (fileVersion.getVersion() == null || fileVersion.getType() == null || fileVersion.getPath() == null || fileVersion.getStatus() == null || fileVersion.getSize() == null || fileVersion.getLastModified() == null) { if (fileVersion.getType() == FileType.SYMLINK && fileVersion.getLinkTarget() == null) { throw new IOException("Unable to write file version: All symlinks must have a target."); xmlOut.writeAttribute("type", fileVersion.getType().toString()); xmlOut.writeAttribute("status", fileVersion.getStatus().toString());
if (lastFileVersion != null && lastFileVersion.getType() != fileProperties.getType()) { logger.log(Level.FINER, " * Detected change in file type. Deleting old file and starting a new file history.");
@Override public FileVersion clone() { try { FileVersion clone = (FileVersion) super.clone(); clone.setChecksum(getChecksum()); clone.setLastModified(getLastModified()); clone.setUpdated(getUpdated()); clone.setPath(getPath()); clone.setType(getType()); clone.setVersion(getVersion()); clone.setSize(getSize()); clone.setDosAttributes(getDosAttributes()); clone.setPosixPermissions(getPosixPermissions()); clone.setLinkTarget(getLinkTarget()); clone.setStatus(getStatus()); return clone; } catch (Exception ex) { throw new RuntimeException(ex); } }
fileVersion.setDosAttributes(fileProperties.getDosAttributes()); if (fileVersion.getType() == FileType.FOLDER) { fileVersion.setPosixPermissions(DEFAULT_POSIX_PERMISSIONS_FOLDER); if (fileVersion.getType() == FileType.FILE && FileChecksum.fileChecksumEquals(fileVersion.getChecksum(), lastFileVersion.getChecksum())) {