Package dk.netarkivet.archive.checksum
Class DatabaseChecksumArchive
- java.lang.Object
-
- dk.netarkivet.archive.checksum.DatabaseChecksumArchive
-
- All Implemented Interfaces:
ChecksumArchive
public class DatabaseChecksumArchive extends Object implements ChecksumArchive
A ChecksumArchive persisted with a Berkeley DB JE Database. Migrating from theFileChecksumArchive
to the DatabaseChecksumArchive is done with theLoadDatabaseChecksumArchive
tool.
-
-
Constructor Summary
Constructors Constructor Description DatabaseChecksumArchive()
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description String
calculateChecksum(File f)
Method for calculating the checksum of a specific file.String
calculateChecksum(InputStream is)
Method for calculating the checksum when the file is received in the form of an inputstream.void
cleanup()
Method for cleaning up when closing down.File
correct(String filename, File correctFile)
Method for removing a bad entry from the archive.File
getAllFilenames()
Method for retrieving the names of all the files within the archive as a temporary file.File
getArchiveAsFile()
Method for retrieving the archive as a temporary file containing the checksum entries.String
getChecksum(String filename)
Method for retrieving the checksum of a specific entry in the archive.static DatabaseChecksumArchive
getInstance()
Method for obtaining the current singleton instance of this class.boolean
hasEnoughSpace()
Method for checking whether there is enough space left on the hard drive.boolean
hasEntry(String filename)
Method for checking whether an entry exists within the archive.void
put(String filename, String checksum)
Update the database with a new filename and its checksum.void
upload(RemoteFile file, String filename)
Method for uploading a new file to the archive.void
upload(String checksum, String filename)
Upload a filename with a pre-computed checksum.
-
-
-
Constructor Detail
-
DatabaseChecksumArchive
public DatabaseChecksumArchive() throws com.sleepycat.je.DatabaseException
Constructor. Retrieves the minimum space left variable, and ensures the existence of the archive file. If the file does not exist, then it is created.- Throws:
Exception
com.sleepycat.je.DatabaseException
-
-
Method Detail
-
getInstance
public static DatabaseChecksumArchive getInstance() throws Exception
Method for obtaining the current singleton instance of this class. If the instance of this class has not yet been constructed, then it will be initialised.- Returns:
- The current instance of this class.
- Throws:
Exception
-
hasEnoughSpace
public boolean hasEnoughSpace()
Description copied from interface:ChecksumArchive
Method for checking whether there is enough space left on the hard drive.- Specified by:
hasEnoughSpace
in interfaceChecksumArchive
- Returns:
- Whether there is enough space left on the hard drive.
-
correct
public File correct(String filename, File correctFile) throws IOFailure, ArgumentNotValid, IllegalState
Description copied from interface:ChecksumArchive
Method for removing a bad entry from the archive. This finds the record and removes it if it has the incorrect checksum. The incorrect record is not deleted, but instead put into a backup file for all the incorrect records.- Specified by:
correct
in interfaceChecksumArchive
- Parameters:
filename
- The name of the file whose record should be removed.correctFile
- The correct remote file to replace the bad one in the archive.- Returns:
- A file containing the removed data.
- Throws:
IOFailure
- If the entry cannot be corrected.ArgumentNotValid
- If one of the arguments are not valid.IllegalState
- If no such entry exists to be corrected, or if the entry has a different checksum than expected.
-
getChecksum
public String getChecksum(String filename)
Description copied from interface:ChecksumArchive
Method for retrieving the checksum of a specific entry in the archive.- Specified by:
getChecksum
in interfaceChecksumArchive
- Parameters:
filename
- The name of the file entry in the archive for whom the checksum should be retrieved.- Returns:
- The checksum of a record, or null if it was not found.
-
hasEntry
public boolean hasEntry(String filename)
Description copied from interface:ChecksumArchive
Method for checking whether an entry exists within the archive.- Specified by:
hasEntry
in interfaceChecksumArchive
- Parameters:
filename
- The name of the file whose entry in the archive should be determined.- Returns:
- Whether an entry with the filename was found.
-
upload
public void upload(RemoteFile file, String filename)
Description copied from interface:ChecksumArchive
Method for uploading a new file to the archive. The checksum of the file needs to be calculated before it is placed in the archive with the given filename.- Specified by:
upload
in interfaceChecksumArchive
- Parameters:
file
- The remote file to be uploaded.filename
- The name of the file.
-
upload
public void upload(String checksum, String filename)
Description copied from interface:ChecksumArchive
Upload a filename with a pre-computed checksum.- Specified by:
upload
in interfaceChecksumArchive
-
put
public void put(String filename, String checksum)
Update the database with a new filename and its checksum.- Parameters:
filename
- A given filenamechecksum
- The related checksum
-
calculateChecksum
public String calculateChecksum(File f)
Description copied from interface:ChecksumArchive
Method for calculating the checksum of a specific file.- Specified by:
calculateChecksum
in interfaceChecksumArchive
- Parameters:
f
- The file to calculate the checksum from.- Returns:
- The checksum of the file.
-
calculateChecksum
public String calculateChecksum(InputStream is)
Description copied from interface:ChecksumArchive
Method for calculating the checksum when the file is received in the form of an inputstream.- Specified by:
calculateChecksum
in interfaceChecksumArchive
- Parameters:
is
- The input stream to calculate the checksum from.- Returns:
- The checksum of the inputstream.
-
getArchiveAsFile
public File getArchiveAsFile()
Description copied from interface:ChecksumArchive
Method for retrieving the archive as a temporary file containing the checksum entries.- Specified by:
getArchiveAsFile
in interfaceChecksumArchive
- Returns:
- A temporary checksum file.
-
getAllFilenames
public File getAllFilenames()
Description copied from interface:ChecksumArchive
Method for retrieving the names of all the files within the archive as a temporary file.- Specified by:
getAllFilenames
in interfaceChecksumArchive
- Returns:
- A temporary file containing the list of all the filenames. This file has one filename per line.
-
cleanup
public void cleanup()
Description copied from interface:ChecksumArchive
Method for cleaning up when closing down.- Specified by:
cleanup
in interfaceChecksumArchive
-
-