50 lines
2.6 KiB
Python
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())))
|