import organize_drawing_according_to_details_new
import order_bounding_boxes_in_each_block
import clustering_precomputed_dbscan
import read_from_clustered_merged
import regex_clean_new
import organize_drawing_according_to_details_new
import json
import redis
import sys

def write_redis(uuid, result, db_params):
    db = redis.Redis(db_params)
    db.set(uuid, result)


def main(uuid, filepath, db, eps):
    filename = order_bounding_boxes_in_each_block.pdf_to_html(uuid, filepath)
    #print(filename)
    result, number_blocks, number_words= order_bounding_boxes_in_each_block.get_bound_box(filename)  ##get coordinates+text out of html file into array of arrays
    if eps == '0':
        if number_words > 500:
            eps = 7
        else:
            eps = 1
    #print(eps)
    isos, general_tol = order_bounding_boxes_in_each_block.extract_isos(result)
    print(general_tol)
    res = clustering_precomputed_dbscan.cluster_and_preprocess(result,eps)
    clean_arrays = read_from_clustered_merged.read("/home/bscheibel/PycharmProjects/dxf_reader/temporary/values_clusteredfrom_precomputed_dbscan.csv")
    tables = order_bounding_boxes_in_each_block.get_tables(clean_arrays)
    pretty = regex_clean_new.print_clean(clean_arrays)
    res, details_dict = organize_drawing_according_to_details_new.main_function(pretty, tables)
    #print(res)

    json_isos = json.dumps(isos)
    json_result = json.dumps(res)
    json_details =json.dumps(details_dict)
    write_redis(uuid+"tol", general_tol,db)
    write_redis(uuid+"dims", json_result, db)
    write_redis(uuid+"isos",json_isos, db)
    write_redis(uuid+"eps", str(number_blocks)+","+str(number_words), db)
    write_redis(uuid+"details",json_details ,db)
    #print(json_details)
    #print(redis.Redis('localhost').get(uuid+"dims"))
    #print(result)

if __name__ == "__main__":
    uuid = sys.argv[1]
    filename = sys.argv[2]
    db = sys.argv[3]
    eps = sys.argv[4]
    main(uuid,filename, db, eps)

#main("33333", "/home/bscheibel/PycharmProjects/dxf_reader/drawings/5152166_Rev04.pdf", "localhost",3)
