import os,sys
import string
from optparse import OptionParser
import glob
import json
import pymongo
from pymongo import MongoClient
import subprocess
import datetime


__version__="1.0"
__status__ = "Dev"



def get_file_dict(jsondb_dir):

    file_dict = {}
    doc_list = []
    for in_file in glob.glob(jsondb_dir + "/bcodb/*.json"):
        doc_list.append(json.loads(open(in_file, "r").read()))

    for doc in doc_list:
        bco_id = doc["object_id"].split("/")[-2]
        tmp_list = []
        cn_doc = doc
        if "io_domain" in cn_doc:
            if "output_subdomain" in cn_doc["io_domain"]:
                if cn_doc["io_domain"]["output_subdomain"] != []:
                    for o in cn_doc["io_domain"]["output_subdomain"]:
                        file_name = o["uri"]["filename"].strip()
                        file_ext = file_name.split(".")[-1]
                        if file_name.find(".stat.csv") == -1 and file_ext != "log":
                            tmp_list.append(file_name)
        if tmp_list != []:
            file_dict[bco_id] = tmp_list

    return file_dict




def main():


    usage = "\n%prog  [options]"
    parser = OptionParser(usage,version="%prog version___")
    parser.add_option("-v","--ver",action="store",dest="ver",help="Release version")

    (options,args) = parser.parse_args()
    for key in ([options.ver]):
        if not (key):
            parser.print_help()
            sys.exit(0)
    ver = options.ver
    release_dir = "/data/shared/glygen/releases/data/v-%s/" % (ver)    
    jsondb_dir = release_dir + "jsondb/"
    
    os.chdir(release_dir + "reviewed/")
    
    file_dict = get_file_dict(jsondb_dir)
    FW = open(release_dir + "misc/file_accession2name.csv", "w")
    FW.write("file_accession,file_name\n")
    for bco_id in sorted(file_dict):
        idx = 1
        for file_name in file_dict[bco_id]:
            ext = file_name.split(".")[-1]
            file_ln = "%s.%s.%s" % (bco_id, idx, ext)
            if os.path.isfile(file_ln):
                cmd = "rm -f %s" % (file_ln)
                x = subprocess.getoutput(cmd)
                #print (cmd)
            cmd = "ln -s %s %s" % (file_name, file_ln)
            x = subprocess.getoutput(cmd)
            #print (cmd)
            FW.write("%s.%s,%s\n" % (bco_id, idx, file_name))
            idx += 1
    
    FW.close()




    


if __name__ == '__main__':
	main()

