Initial commit of version 2

This commit is contained in:
Simon Wüllhorst 2016-05-29 18:56:50 +02:00
commit ff7105eedc
23 changed files with 782 additions and 0 deletions

34
parser/GraphParser.py Normal file
View 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
View 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
View 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
View 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
View file