-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfriendly_name_lookup.py
More file actions
113 lines (96 loc) · 5.63 KB
/
friendly_name_lookup.py
File metadata and controls
113 lines (96 loc) · 5.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import read_in_tree_structure
def build_field_friendly_name_lookup(file_path):
root_file_path = file_path[0:file_path.rfind('\\')]
root_file_path = file_path[0:root_file_path.rfind('\\')]
citect_ini_file_path = root_file_path + '\\config\\citect.ini' # this assumes standard project position
file_list = read_in_tree_structure.get_file_list()
with open(citect_ini_file_path, mode='rt', encoding='utf-8') as f:
for read_line in f:
if '\\bin' in read_line.lower():
break
bin_path = read_line[read_line.find('=') + 1:].strip()
citect_frm_path = bin_path + '\\citect.frm'
citect_frm_extensions_path = bin_path + '\\CitectFrmExtensions.xml'
dbf_csv_lookup_dict = dict()
with open(citect_frm_extensions_path, mode='rt', encoding='utf-8') as frmext:
for read_line in frmext:
if '<Entity' in read_line:
ref = read_line[read_line.find('"') + 1:]
ref = ref[0:ref.find('"')]
ref_csv = ref + '.csv'
ref_dbf = ref + '.dbf'
if ref_csv in file_list:
dbf_csv_lookup_dict[ref_dbf] = dict()
for read_field in frmext:
if '<Field name' in read_field:
dbf_field = read_field[read_field.find('"') + 1:]
dbf_field = dbf_field[0:dbf_field.find('"')]
if dbf_field == 'PROJECTNAME':
dbf_csv_lookup_dict[ref_dbf][dbf_field] = 'Project'
else:
dbf_csv_lookup_dict[ref_dbf][dbf_field] = ''
if 'Entity' in read_field:
break
with open(citect_frm_path, mode='rt', encoding='utf-8') as frm:
for read_line in frm:
if read_line.find('FORM') == 0:
line = read_line.rsplit(',')
ref_dbf = line[2].strip().replace('"', '') + '.dbf'
if ref_dbf in dbf_csv_lookup_dict:
for read_field in frm:
if read_field.find('NORMAL') == 0:
break
if ':' in read_field:
number = read_field[0:read_field.find(':')]
field = read_field[read_field.find('"') + 1:]
field = field[0:field.find('"')]
if field not in dbf_csv_lookup_dict[ref_dbf]:
dbf_csv_lookup_dict[ref_dbf][field] = field
else:
dbf_csv_lookup_dict[ref_dbf][field] = number
for read_friendly_field in frm:
if read_friendly_field.find('PRINT') == 0:
break
friendly_field_list = read_friendly_field.rsplit('}')
for friendly_field in friendly_field_list:
pos = friendly_field.find('{')
if pos > 0:
number = friendly_field[pos + 1:].strip()
friendly_name = friendly_field[0:pos].strip().strip('"')
for field in dbf_csv_lookup_dict[ref_dbf]:
if dbf_csv_lookup_dict[ref_dbf][field] == number:
if not friendly_name == '':
dbf_csv_lookup_dict[ref_dbf][field] = friendly_name
else:
if field == 'ALMSTAT0':
dbf_csv_lookup_dict[ref_dbf][field] = 'Trigger 000'
elif field == 'ALMSTAT1':
dbf_csv_lookup_dict[ref_dbf][field] = 'Trigger 00A'
elif field == 'ALMSTAT2':
dbf_csv_lookup_dict[ref_dbf][field] = 'Trigger 0B0'
elif field == 'ALMSTAT3':
dbf_csv_lookup_dict[ref_dbf][field] = 'Trigger 0BA'
elif field == 'ALMSTAT4':
dbf_csv_lookup_dict[ref_dbf][field] = 'Trigger C00'
elif field == 'ALMSTAT5':
dbf_csv_lookup_dict[ref_dbf][field] = 'Trigger C0A'
elif field == 'ALMSTAT6':
dbf_csv_lookup_dict[ref_dbf][field] = 'Trigger CB0'
elif field == 'ALMSTAT7':
dbf_csv_lookup_dict[ref_dbf][field] = 'Trigger CBA'
else:
dbf_csv_lookup_dict[ref_dbf][field] = 'unknown key:' + field
return dbf_csv_lookup_dict
def get_table_friendly_names(dbf_file_name, dbf_csv_lookup_dict):
csv_header_list = list()
dbf_header_name = list()
for field in dbf_csv_lookup_dict[dbf_file_name]:
column = ''
if dbf_file_name in dbf_csv_lookup_dict:
if field in dbf_csv_lookup_dict[dbf_file_name]:
column = dbf_csv_lookup_dict[dbf_file_name][field]
if column == '':
column = field.upper()
csv_header_list.append(column)
dbf_header_name.append(field)
return csv_header_list, dbf_header_name