public void restoreBinaryFile( File binaryFile ) {
if (!binaryFile.exists()) return;
if (!binaryFile.canRead()) {
I18n msg = JcrI18n.problemsReadingBinaryFromBackup;
BinaryKey key = binaryKeyFor(binaryFile);
problems.addError(msg, key.toString(), repositoryName(), backupLocation());
}
try {
InputStream stream = new FileInputStream(binaryFile);
try {
BinaryValue stored = binaryStore.storeValue(stream, false);
assert stored.getKey().equals(binaryKeyFor(binaryFile));
} finally {
stream.close();
}
} catch (FileNotFoundException e) {
// We already checked that it exists and is readable, so this shouldn't happen. But ...
I18n msg = JcrI18n.problemsReadingBinaryFromBackup;
BinaryKey key = binaryKeyFor(binaryFile);
problems.addError(e, msg, key.toString(), repositoryName(), backupLocation());
} catch (BinaryStoreException e) {
I18n msg = JcrI18n.problemsRestoringBinaryFromBackup;
BinaryKey key = binaryKeyFor(binaryFile);
problems.addError(e, msg, key.toString(), repositoryName(), backupLocation(), e.getMessage());
} catch (IOException e) {
I18n msg = JcrI18n.problemsRestoringBinaryFromBackup;
BinaryKey key = binaryKeyFor(binaryFile);
problems.addError(e, msg, key.toString(), repositoryName(), backupLocation(), e.getMessage());
}
}