Skip to content
Snippets Groups Projects
Commit f09558a8 authored by Dennis Ahrens's avatar Dennis Ahrens
Browse files

[TASK] Fixes join collidies.

parent 2c29be1a
Branches
No related tags found
No related merge requests found
......@@ -100,9 +100,8 @@ class Entity(AbstractRepository):
container_identifier = self._hash(container_fields)
if container_identifier in container:
rec = Record(join_identifier, self.properties, self.itervalues())
rec.load(container_fields, mapped_record, container)
container.container_collide(rec)
container.container_collide(join_identifier, self.properties, self.itervalues(),
container_fields, mapped_record, container)
return
if self.record_repository.has(join_identifier):
......@@ -114,7 +113,8 @@ class Entity(AbstractRepository):
self.record_repository.add(record)
container.append(container_identifier)
except DuplicatedSystemIdException:
container.join_collide(Record(join_identifier, self.properties, self.itervalues()))
container.join_collide(join_identifier, self.properties, self.itervalues(),
container_fields, mapped_record, container)
def add(self, container):
'''Adds the container to the entity and register it at all records'''
......@@ -212,8 +212,15 @@ class Container(list):
value = raw_value
return (mapped_prop_name, value)
def container_collide(self, record):
def _create_collision_record(self, join_identifier, properties, containers, container_fields, mapped_record, container):
'''Create a record object, if there was a container or join collision.'''
rec = Record(join_identifier, properties, containers)
rec.load(container_fields, mapped_record, container)
return rec
def container_collide(self, join_identifier, properties, containers, container_fields, mapped_record, container):
'''Add a container collisions or break.'''
record = self._create_collision_record(join_identifier, properties, containers, container_fields, mapped_record, container)
if self.collision_handling == COLLISION_HANDLING_BREAKALL or \
self.collision_handling == COLLISION_HANDLING_BREAKCONTAINER:
msg = 'Collision in %s system detected! Aborting! %s found twice.' % (self.name, repr(record))
......@@ -223,8 +230,9 @@ class Container(list):
logging.warn(msg)
self.collisions.append(record)
def join_collide(self, record):
def join_collide(self, join_identifier, properties, containers, container_fields, mapped_record, container):
'''Add a join collisions or break.'''
record = self._create_collision_record(join_identifier, properties, containers, container_fields, mapped_record, container)
if self.collision_handling == COLLISION_HANDLING_BREAKALL or \
self.collision_handling == COLLISION_HANDLING_BREAKJOIN:
msg = 'Collision in %s system detected! Aborting! %s found twice.' % (self.name, repr(record))
......@@ -563,7 +571,7 @@ delete: {}
unaltered: {}
unknown: {}
collsions: {}
join_collosion: {}
join_collisions: {}
'''.format(len(self.insert), len(self.update), len(self.delete), len(self.unaltered), len(self.unknown), len(self.collisions), len(self.join_collisions))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment