sdi-checker/sdi_checker/app_cli/display_check.py
Guillaume RYCKELYNCK c6c2ee9c04 first commit
2024-06-22 22:00:42 +02:00

50 lines
2.6 KiB
Python

import time
import math
import tabulate
def print_header(logger, mode, server, inspire='flexible'):
logger.info("SDI check")
logger.info("mode: {mode}".format(mode=mode))
if mode.upper() == "CSW":
logger.info("metadata catalog CSW URL: {server}".format(server=server))
logger.info("INSPIRE mode: {inspie}".format(inspire=inspire))
else:
logger.info("{mode} service URL: {server}".format(mode=mode, server=server))
logger.info("output mode: log")
logger.info("start time: {time}".format(time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())))
# logger.info("")
def print_layers_status(logger, owschecker):
errors = owschecker.get_inconsistencies()
layers = owschecker.get_layer_names()
layers_in_error = [error.layer_index for error in errors]
curr_idx = 0
for idx, error in enumerate(errors):
while curr_idx < error.layer_index:
if curr_idx not in layers_in_error:
logger.info("#{id} Layer: {layer} OK".format(id=curr_idx, layer=layers[curr_idx]))
curr_idx += 1
logger.error("#{id} Layer: {layer}".format(id=error.layer_index, layer=error.layer_name), data=error.get_error())
logger.error("{error}".format(error=str(error)))
def print_ows_report(logger, owschecker):
total_layers = len(owschecker.get_layer_names())
inconsistencies = owschecker.get_inconsistencies()
layers_error = set()
for inconsistency in inconsistencies:
layers_error.add(inconsistency.layer_index)
inconsistencies_found = len(layers_error)
layers_inconsistency_percent = math.floor((inconsistencies_found * 100 / total_layers)) if total_layers > 0 else 0
logger.info("{total_layers} layers parsed, {inconsistencies_found} inconsistencies found ({layers_inconsistency_percent} %)".format(total_layers=total_layers, inconsistencies_found=inconsistencies_found, layers_inconsistency_percent=layers_inconsistency_percent))
logger.info("end time: {time}".format(time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())))
def print_csw_report(logger, errors, total_mds):
unique_mds_in_error = { error.md_uuid for error in errors }
err_percent = math.floor(len(unique_mds_in_error) * 100 / total_mds) if total_mds > 0 else 0
logger.info("{total_mds} metadata parsed, {nb_errors} inconsistencies found, {unique_mds_in_error} unique metadatas in error ({err_percent} %)".format(total_mds=total_mds, nb_errors=len(errors), unique_mds_in_error=len(unique_mds_in_error), err_percent=err_percent))
logger.info("end time: {time}".format(time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())))