import json import os.path import csv ''' Messy file for converting rover data to json standard ''' data_set = "3_2" resource_filepath = "data/JSON/Rover/OldRoverData/InformationResources_Defense" + data_set + ".csv" action_filepath = "data/JSON/Rover/OldRoverData/Taskwork_Defense" + data_set + ".csv" edge_filepath = "data/JSON/Rover/OldRoverData/InfoDependencies_Defense" + data_set + ".csv" out_file_path = "data/JSON/Rover/Rover" + data_set + ".json" data: dict = { "GraphData":{ "Nodes":{}, "Edges":[], "Agents":{} } } converted_strs: dict[str,str] = {} nodes: dict = data["GraphData"]["Nodes"] with open(resource_filepath, 'r') as resource_file: datareader = csv.reader(resource_file) for row in datareader: name = row[1] converted_strs[name] = "".join(ch for ch in name if ch.isupper()) if "Commands" in name or "Confirmation" in name: nodes[converted_strs[name]] = { "Type": "CoordinationGroundingResource", "UserData": name } else: nodes[converted_strs[name]] = { "Type": "BaseEnvironmentResource", "UserData": name } with open(action_filepath, 'r') as action_file: datareader = csv.reader(action_file) for row in datareader: name = row[1] converted_strs[name] = "".join(ch for ch in name if ch.isupper()) if (name.startswith("Monitoring") or name.startswith("Confirm") or name.startswith("Command")): nodes[converted_strs[name]] = { "Type": "SynchronyFunction", "UserData": name } else: nodes[converted_strs[name]] = { "Type": "DistributedWorkFunction", "UserData": name } edges: list = data["GraphData"]["Edges"] with open(edge_filepath, 'r') as edge_file: datareader = csv.reader(edge_file) for row in datareader: node_names = [row[0], row[1]] correct_names = [] for name in node_names: correct_name = "" index = 10 if index + 10 < len(name) and name[index:index+10] == "RoverModel": index += 10 else: correct_name += name[10].upper() index += 1 while index < len(name): if name[index] == "-": index = index + 11 continue if name[index] == "_": correct_name += name[index+1].upper() index = index + 2 continue correct_name += name[index] index = index + 1 correct_names.append(correct_name) if row[2] == "get": to_add = { "Source": converted_strs[correct_names[1]], "Target": converted_strs[correct_names[0]] } edges.append(to_add) elif row[2] == "set": to_add = { "Source": converted_strs[correct_names[0]], "Target": converted_strs[correct_names[1]] } edges.append(to_add) json_obj = json.dumps(data, indent=4) with open(out_file_path, 'w') as file: file.write(json_obj)