Initial commit of version 2
This commit is contained in:
commit
ff7105eedc
23 changed files with 782 additions and 0 deletions
34
parser/GraphParser.py
Normal file
34
parser/GraphParser.py
Normal file
|
@ -0,0 +1,34 @@
|
|||
from parser.JsonParser import JsonParser
|
||||
|
||||
class GraphParser(JsonParser):
|
||||
def __init__(self, filePath):
|
||||
super().__init__(filePath.rstrip('/')+'/graph.json')
|
||||
self.links = self.__prettyFormGraph__()
|
||||
|
||||
def __prettyFormGraph__(self):
|
||||
links = []
|
||||
for link in self.__jsonData__['batadv']['links']:
|
||||
prettyLink = link
|
||||
prettyLink['target'] = self.__getEndpointData__(self.__jsonData__['batadv']['nodes'][link['target']])
|
||||
prettyLink['source'] = self.__getEndpointData__(self.__jsonData__['batadv']['nodes'][link['source']])
|
||||
links.append(prettyLink)
|
||||
return links
|
||||
|
||||
def __getEndpointData__(self, endpoint):
|
||||
data = {}
|
||||
if endpoint:
|
||||
if 'id' in endpoint:
|
||||
data['interface_mac'] = endpoint['id']
|
||||
if 'node_id' in endpoint:
|
||||
data['node_id'] = endpoint['node_id']
|
||||
return data
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
def getLinksForNodeID(self, nodeID):
|
||||
links = []
|
||||
for link in self.links:
|
||||
if link['target']['node_id'] == nodeID or link['source']['node_id'] == nodeID:
|
||||
links.append(link)
|
||||
return links
|
25
parser/JsonParser.py
Normal file
25
parser/JsonParser.py
Normal file
|
@ -0,0 +1,25 @@
|
|||
import json, urllib.request
|
||||
from exceptions.HieraException import HieraException
|
||||
|
||||
class JsonParser(object):
|
||||
def __init__(self, fileName):
|
||||
self.printStatus = True
|
||||
self.__jsonData__ = self.__getFile__(fileName)
|
||||
|
||||
def __getFile__(self, fileName):
|
||||
if fileName.startswith('https://') or fileName.startswith('http://'):
|
||||
if self.printStatus:
|
||||
print('Download', fileName.rsplit('/', 1)[1] , 'from URL:', fileName)
|
||||
resource = urllib.request.urlopen(fileName)
|
||||
else:
|
||||
if self.printStatus:
|
||||
print('Open', fileName.rsplit('/', 1)[1] , 'from file:', fileName)
|
||||
resource = open(fileName)
|
||||
try:
|
||||
data = json.loads(resource.read().decode('utf-8'))
|
||||
except:
|
||||
raise HieraException('Error while parsing a json file (perhapes misformed file): ' + fileName)
|
||||
finally:
|
||||
resource.close()
|
||||
|
||||
return data
|
20
parser/NodesParser.py
Normal file
20
parser/NodesParser.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
from parser.JsonParser import JsonParser
|
||||
|
||||
class NodesParser(JsonParser):
|
||||
def __init__(self, filePath):
|
||||
super().__init__(filePath.rstrip('/')+'/nodes.json')
|
||||
self.nodes = self.__jsonData__['nodes']
|
||||
#print(self.nodes)
|
||||
pass
|
||||
|
||||
def getNodeByID(self, nodeID):
|
||||
if nodeID in self.nodes:
|
||||
return self.nodes[nodeID]
|
||||
else:
|
||||
return None
|
||||
|
||||
def getListOfNodeIDs(self):
|
||||
IDlist = []
|
||||
for k, v in self.nodes.items():
|
||||
IDlist.append(k)
|
||||
return IDlist
|
12
parser/ShapesParser.py
Normal file
12
parser/ShapesParser.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
from parser.JsonParser import JsonParser
|
||||
from shapely.geometry import shape
|
||||
class ShapesParser(JsonParser):
|
||||
def __init__(self, filePath, targetName):
|
||||
super().__init__(filePath.rstrip('/') + '/' + targetName + '.geojson')
|
||||
self.shapes = self.__createShapes__()
|
||||
|
||||
def __createShapes__(self):
|
||||
shapes = []
|
||||
for feature in self.__jsonData__['features']:
|
||||
shapes.append(shape(feature['geometry']))
|
||||
return shapes
|
0
parser/__init__.py
Normal file
0
parser/__init__.py
Normal file
Loading…
Add table
Add a link
Reference in a new issue