public HashCalculationResult calculateSuperHash(File file) throws IOException {
        // Ignore files smaller than 0.5kb
        long fileSize = file.length();
        if (fileSize <= FILE_MIN_SIZE_THRESHOLD) {
            logger.debug("Ignored file " + file.getName() + " (" + FileUtils.byteCountToDisplaySize(fileSize) + "): minimum file size is 512B");
            return null;
        }
        if (fileSize >= FILE_MAX_SIZE_THRESHOLD){
            logger.debug("Ignore file {}, ({}): maximum file size is 2GB", file.getName(), FileUtils.byteCountToDisplaySize(fileSize));
            return null;
        }

        HashCalculationResult result = null;
        try {
            result = calculateSuperHash(FileUtils.readFileToByteArray(file));
        } catch (OutOfMemoryError e) {
            logger.debug(MessageFormat.format("Failed calculating SHA-1 for file {0}: size too big {1}",
                    file.getAbsolutePath(), FileUtils.byteCountToDisplaySize(fileSize)));
        }
        return result;
    }
public HashCalculationResult calculateSuperHash ( File file ) throws IOException { long fileSize = file . length ( ) ; if ( fileSize <= FILE_MIN_SIZE_THRESHOLD ) { logger . debug ( "Ignored file " + file . getName ( ) + " (" + FileUtils . byteCountToDisplaySize ( fileSize ) + "): minimum file size is 512B" ) ; return null ; } if ( fileSize >= FILE_MAX_SIZE_THRESHOLD ) { logger . debug ( "Ignore file {}, ({}): maximum file size is 2GB" , file . getName ( ) , FileUtils . byteCountToDisplaySize ( fileSize ) ) ; return null ; } HashCalculationResult result = null ; try { result = calculateSuperHash ( FileUtils . readFileToByteArray ( file ) ) ; } catch ( OutOfMemoryError e ) { logger . debug ( MessageFormat . format ( "Failed calculating SHA-1 for file {0}: size too big {1}" , file . getAbsolutePath ( ) , FileUtils . byteCountToDisplaySize ( fileSize ) ) ) ; } return result ; }
Calculates 3 hashes for the given file:

1. Hash of the file without new lines and whitespaces
2. Hash of the most significant bits of the file without new lines and whitespaces
3. Hash of the least significant bits of the file without new lines and whitespaces

@param file input
@return HashCalculationResult with all three hashes
@throws IOException exception1