Helper class to handle anything AggregatedIssue related. After using, nodes from deletedNodes must be deleted, and nodes from updatedNodes must be saved
Properties
Nodes which should be deleted
Nodes which are updated and need to be saved This may contain nodes also present in deletedNodes
Nodes which are updated and need to be saved Does not include any deleted nodes
Functions
Should be called when an Issue affects an additional entity. Must be called AFTER the affected entity was added to the issue.
Handles the case of an Issue affecting an interface related entity (InterfacePart, InterfaceSpecificationVersion, InterfaceSpecification). All relevant InterfaceSpecificationVersions must be provided, each related Interface will be updated. Relevance depends on the type of affected entity.
Should be called when the state or type of an issue was changed. Musts be called AFTER the change was applied to the issue.
Gets all entities related to a Component. This includes
Should be called when a ComponentVersion is created.
Should be called when an Interface is created
Should be called when an IssueRelation is created. Must be called AFTER the relation was created.
Aggregates an Issue on a RelationPartner. Handles the case of an Issue already being aggregated on the RelationPartner.
Creates or updates an AggregatedIssueRelation between two AggregatedIssues. Handles the case of an IssueRelation already being aggregated on the AggregatedIssueRelation.
Deletes an AggregatedIssue and all relations.
Should be called when a ComponentVersion is deleted. Must be called BEFORE the component version is deleted from the database.
Should be called when an Interface is deleted Must be called BEFORE the interface is deleted from the database.
Should be called when an InterfacePart is deleted Must be called BEFORE the interface part is deleted from the database.
Should be called when an Issue was deleted. Must be called BEFORE the issue is deleted from the database.
Should be called when an IssueRelation is deleted.
Helper to
Finds all RelationPartners that are connected to a RelationPartner via incoming Relations. Also considers Interfaces of ComponentVersions.
Finds all RelationPartners that are connected to a RelationPartner via outgoing Relations. Also considers Interfaces of ComponentVersions.
Locks all incoming and outgoing RelationPartners of a RelationPartner
Handles the deletion of an Interface or ComponentVersion Deletes all associated AggregatedIssues and relations.
Should be called when an Issue does not affect an entity anymore. Must be called AFTER the affected entity was removed from the issue.
Handles the case of an Issue no longer affecting Interfaces, directly or indirectly. Handles the case that the Issue still affects the Interfaces.
Handles the case of an Issue no longer affecting an interface related entity (InterfacePart, InterfaceSpecificationVersion, InterfaceSpecification). All relevant InterfaceSpecificationVersions must be provided, each related Interface will be updated. Relevance depends on the type of affected entity.
Removes an Issue from an AggregatedIssue. Handles the case of the Issue not being aggregated on the AggregatedIssue.
Removes an issue from an AggregatedIssue on a RelationPartner. Handles the case of the Issue not being aggregated on the RelationPartner.
Removes an IssueRelation from an AggregatedIssueRelation. Deletes the AggregatedIssueRelation if it is no longer required.
Deletes all deletedNodes and saves all updatedNodes to the database
Unaggregates an Issue from a ComponentVersion if necessary. It is necessary only if the issue is on the Component and affects an entity related to said Component. It is only unaggregated on ComponentVersions where the issue does not affect the Component or ComponentVersion itself.