#!/usr/bin/env python

import os, re, boinc_path_config
from Boinc import database, db_mid, boinc_db, configxml

database.connect()
config = configxml.default_config().config

def get_file_path(wu):
    return os.path.join(config.download_dir,
                        re.search('<name>(.*)</name>',wu.xml_doc).group(1))

print "Checking for missing input files ...\n"

for (ss_name,server_state) in [
    ("UNSENT",boinc_db.RESULT_SERVER_STATE_UNSENT),
    ("IN_PROGRESS",boinc_db.RESULT_SERVER_STATE_IN_PROGRESS)]:
    print "=== %s ===" %ss_name
    count_total = 0
    count_errors = 0
    for result in database.Results.iterate(server_state=server_state):
        file = get_file_path(result.workunit)
        if not os.path.exists(file):
            print result, " file %s doesn't exist"%file
            count_errors += 1
        count_total += 1
    print "Total: %d/%d errors/results\n" %(count_errors,count_total)
