115 lines
3.0 KiB
Python
115 lines
3.0 KiB
Python
|
|
import json
|
||
|
|
|
||
|
|
|
||
|
|
class RecordHeader():
|
||
|
|
__h_type = ""
|
||
|
|
__h_referral_name = ""
|
||
|
|
__h_receiver_list = []
|
||
|
|
|
||
|
|
def __init__(self, header_type: str, referral_name: str, receiver_list=None):
|
||
|
|
if receiver_list is None:
|
||
|
|
receiver_list = []
|
||
|
|
self.__h_receiver_list = receiver_list
|
||
|
|
|
||
|
|
self.__h_type = header_type
|
||
|
|
self.__h_referral_name = referral_name
|
||
|
|
|
||
|
|
def analyze(self):
|
||
|
|
if type(self.__h_type) != str:
|
||
|
|
print("wrong type value")
|
||
|
|
return False
|
||
|
|
|
||
|
|
self.__h_receiver_list = json.loads(self.__h_receiver_list)
|
||
|
|
return True
|
||
|
|
|
||
|
|
def getType(self):
|
||
|
|
return self.__h_type
|
||
|
|
|
||
|
|
def getReferralName(self):
|
||
|
|
return self.__h_referral_name
|
||
|
|
|
||
|
|
def getReceivers(self):
|
||
|
|
return self.__h_receiver_list
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
# NO LIST [] just DICT {} any list in the dict will cause error.
|
||
|
|
def replaceDictCharacters(d):
|
||
|
|
for key, value in d.items():
|
||
|
|
if type(value) == dict:
|
||
|
|
d[key] = replaceDictCharacters(value)
|
||
|
|
else:
|
||
|
|
d[key] = str(value).replace('\\', '\\').replace('\'', "")
|
||
|
|
return d
|
||
|
|
|
||
|
|
|
||
|
|
class RecordData():
|
||
|
|
__data = ""
|
||
|
|
__data_json = ""
|
||
|
|
|
||
|
|
def __init__(self, user_data):
|
||
|
|
if user_data is None:
|
||
|
|
user_data = {}
|
||
|
|
self.__data = user_data
|
||
|
|
self.__data_json = ""
|
||
|
|
|
||
|
|
def analyze(self):
|
||
|
|
if type(self.__data) == str:
|
||
|
|
try:
|
||
|
|
# CREATING PYTHON DICT
|
||
|
|
self.__data = json.loads(self.__data)
|
||
|
|
# CREATING JSON STRING (for sight.js)
|
||
|
|
except ValueError:
|
||
|
|
print("wrong data value")
|
||
|
|
return False
|
||
|
|
if type(self.__data) == dict:
|
||
|
|
self.__data_json = json.dumps(replaceDictCharacters(self.__data))
|
||
|
|
return True
|
||
|
|
return False
|
||
|
|
|
||
|
|
def getData(self):
|
||
|
|
return self.__data
|
||
|
|
|
||
|
|
def getDataJson(self):
|
||
|
|
return self.__data_json
|
||
|
|
|
||
|
|
|
||
|
|
class Record():
|
||
|
|
__state = "CREATING"
|
||
|
|
__r_header = ""
|
||
|
|
|
||
|
|
def __init__(self, record_header, record_data):
|
||
|
|
if record_header.__class__.__name__ != "RecordHeader":
|
||
|
|
print("ERROR IT IS NOT A RECORD HEADER")
|
||
|
|
self.__state = "ERROR"
|
||
|
|
return
|
||
|
|
if record_data.__class__.__name__ != "RecordData":
|
||
|
|
print("ERROR IT IS NOT A RECORD DATA")
|
||
|
|
self.__state = "ERROR"
|
||
|
|
return
|
||
|
|
self.__r_header = record_header
|
||
|
|
self.__r_data = record_data
|
||
|
|
self.__state = "NEW"
|
||
|
|
|
||
|
|
def analyze(self):
|
||
|
|
if self.__state == "NEW":
|
||
|
|
if self.__r_header.analyze() is True and self.__r_data.analyze() is True:
|
||
|
|
self.__state = "ANALYZED"
|
||
|
|
else:
|
||
|
|
self.__state = "ANALYZE_FAILED"
|
||
|
|
|
||
|
|
def getState(self):
|
||
|
|
return self.__state
|
||
|
|
|
||
|
|
def getHeader(self):
|
||
|
|
if self.__state == "ANALYZED":
|
||
|
|
return self.__r_header
|
||
|
|
return None
|
||
|
|
|
||
|
|
def getData(self, json_data=False):
|
||
|
|
if self.__state == "ANALYZED":
|
||
|
|
if json_data:
|
||
|
|
return self.__r_data.getDataJson()
|
||
|
|
return self.__r_data.getData()
|
||
|
|
return None
|