further implement SimpleReader
This commit is contained in:
parent
1f8c2e8f2c
commit
7d06fc0136
|
@ -62,6 +62,9 @@ class SimpleParser:
|
||||||
self._p21loader = Part21.Part21Parser("gasket1.p21")
|
self._p21loader = Part21.Part21Parser("gasket1.p21")
|
||||||
self.schemaModule = None
|
self.schemaModule = None
|
||||||
self.schemaClasses = None
|
self.schemaClasses = None
|
||||||
|
self.instanceMape = {}
|
||||||
|
for i in self._p21loader._instances_definition.keys():
|
||||||
|
print i,self._p21loader._instances_definition[i][0],self._p21loader._instances_definition[i][1]
|
||||||
|
|
||||||
def instaciate(self):
|
def instaciate(self):
|
||||||
"""Instaciate the python classe from the enteties"""
|
"""Instaciate the python classe from the enteties"""
|
||||||
|
@ -77,26 +80,65 @@ class SimpleParser:
|
||||||
if self.schemaModule:
|
if self.schemaModule:
|
||||||
self.schemaClasses = dict(inspect.getmembers(self.schemaModule))
|
self.schemaClasses = dict(inspect.getmembers(self.schemaModule))
|
||||||
|
|
||||||
for number_of_ancestor in self._p21loader._number_of_ancestors.keys():
|
for i in self._p21loader._instances_definition.keys():
|
||||||
for entity_definition_id in self._p21loader._number_of_ancestors[number_of_ancestor]:
|
#print i
|
||||||
#print entity_definition_id,':',self._p21loader._instances_definition[entity_definition_id]
|
if not self.instanceMape.has_key(i):
|
||||||
self.create_entity_instance(entity_definition_id)
|
self._create_entity_instance(i)
|
||||||
|
#for number_of_ancestor in self._p21loader._number_of_ancestors.keys():
|
||||||
|
# for entity_definition_id in self._p21loader._number_of_ancestors[number_of_ancestor]:
|
||||||
|
# print entity_definition_id,':',self._p21loader._instances_definition[entity_definition_id]
|
||||||
|
# self._create_entity_instance(entity_definition_id)
|
||||||
|
|
||||||
def create_entity_instance(self, instance_id):
|
def _create_entity_instance(self, instance_id):
|
||||||
|
if self._p21loader._instances_definition.has_key(instance_id):
|
||||||
instance_definition = self._p21loader._instances_definition[instance_id]
|
instance_definition = self._p21loader._instances_definition[instance_id]
|
||||||
print "Instance definition to process",instance_definition
|
print "Instance definition to process",instance_definition
|
||||||
# first find class name
|
# first find class name
|
||||||
class_name = instance_definition[0].lower()
|
class_name = instance_definition[0].lower()
|
||||||
print "Class name:%s"%class_name
|
#print "Class name:%s"%class_name
|
||||||
|
|
||||||
if not class_name=='':
|
if not class_name=='':
|
||||||
object_ = self.schemaClasses[class_name]
|
classDef = self.schemaClasses[class_name]
|
||||||
# then attributes
|
# then attributes
|
||||||
print object_.__doc__
|
#print object_.__doc__
|
||||||
#instance_attributes = instance_definition[1]
|
instance_attributes = instance_definition[1]
|
||||||
|
self._transformAttributes(instance_attributes)
|
||||||
|
print 'Attribute list after transform: ',instance_attributes
|
||||||
|
|
||||||
|
self.instanceMape[instance_id] = int(41) # dummy instance to test
|
||||||
|
else:
|
||||||
|
print '############################# lost entity: ',instance_id
|
||||||
|
self.instanceMape[instance_id] = int(41) # dummy
|
||||||
#print "instance_attributes:",instance_attributes
|
#print "instance_attributes:",instance_attributes
|
||||||
#a = object_(*instance_attributes)
|
#a = object_(*instance_attributes)
|
||||||
|
|
||||||
|
def _transformAttributes(self,attrList):
|
||||||
|
n = 0
|
||||||
|
for i in attrList:
|
||||||
|
if isinstance(i,list):
|
||||||
|
self._transformAttributes(i)
|
||||||
|
elif isinstance(i,str):
|
||||||
|
if i == '':
|
||||||
|
print 'empty string'
|
||||||
|
elif i[0] == '#':
|
||||||
|
key = int(i[1:])
|
||||||
|
print 'Item: ',int(i[1:])
|
||||||
|
if self.instanceMape.has_key(key):
|
||||||
|
attrList[n] = self.instanceMape[key]
|
||||||
|
else:
|
||||||
|
self._create_entity_instance(key)
|
||||||
|
if not self.instanceMape.has_key(key):
|
||||||
|
raise NameError("Needed instance not instanciated: ",key)
|
||||||
|
elif i[0] == '$':
|
||||||
|
print 'Dollar'
|
||||||
|
elif i[0] == "'":
|
||||||
|
print 'Dopelstring: ',i[1:-1]
|
||||||
|
else:
|
||||||
|
print 'String: ',i
|
||||||
|
else:
|
||||||
|
raise NameError("Unknown attribute type")
|
||||||
|
n = n+1
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
sys.path.append('..') # path where config_control_design.py is found
|
sys.path.append('..') # path where config_control_design.py is found
|
||||||
parser = SimpleParser("gasket1.p21") # simple test file
|
parser = SimpleParser("gasket1.p21") # simple test file
|
||||||
|
|
Loading…
Reference in New Issue
Block a user