Find messages that are not operations of recieving class - V3
SELECT distinct t_diagram.ea_guid AS CLASSGUID, 't_diagram' as CLASSTABLE, t_diagram.Diagram_Type AS CLASSTYPE, t_diagram.Name as diagramName ,sender.Name as msg_Sender,t_connector.Name as full_name,rcvr.Name as msg_Rcvr, t_connector.DiagramID,t_connector.SeqNo
FROM (((
t_connector
inner join t_diagram on t_connector.DiagramID = t_diagram.Diagram_ID)
inner join t_object as sender on t_connector.Start_Object_ID = sender.Object_ID )
inner join t_object as rcvr on t_connector.End_Object_ID = rcvr.Object_ID )
where t_connector.Connector_Type = 'Sequence'
and rcvr.Object_Type = 'Class'
#DB=SQLSVR# -- and t_diagram.Name = 'Nominal Seq.' #DB=SQLSVR#
#DB=SQLSVR# -- the following lines finds all messages that have a parentheses and don't match operations of recieving class
#DB=SQLSVR#
AND
t_connector.Name LIKE '#WC#(#WC#'
#DB=SQLSVR# AND left (t_connector.Name, CHARINDEX ('(',t_connector.Name)-1) #DB=SQLSVR#
#DB=JET# and left (t_connector.Name, InStr (t_connector.Name,'(')-1) #DB=JET#
NOT IN ( select name from t_operation where Object_ID =rcvr.Object_ID)
#DB=SQLSVR# -- the following lines finds all messages that have a parentheses and don't match operations of recieving class Base Classes
#DB=SQLSVR#
#DB=SQLSVR# AND left (t_connector.Name, CHARINDEX ('(',t_connector.Name)-1) #DB=SQLSVR#
#DB=JET# and left (t_connector.Name, InStr (t_connector.Name,'(')-1) #DB=JET#
NOT IN (
select name from t_operation where Object_ID in
(
select distinct relatedObjects.Object_Id as objectid from (
select 'level_0' as level_, conn1.Start_Object_ID as StartObject, conn1.Start_Object_ID as Object_Id from
t_connector conn1
where conn1.Connector_Type IN ('Realisation' , 'Generalization')
and ( conn1.Start_Object_id = rcvr.Object_ID)
union all
select 'level_1' as level_, conn1.Start_Object_ID as StartObject, conn1.End_Object_ID from
t_connector conn1
where conn1.Connector_Type IN ('Realisation' , 'Generalization')
and ( conn1.Start_Object_id = rcvr.Object_ID)
union all
select 'level_2' as level_,conn1.Start_Object_ID as StartObject, conn2.end_Object_ID as Object_Id from (
t_connector conn1
inner join t_connector conn2 on conn1.End_Object_id = conn2.Start_Object_id)
where conn1.Connector_Type IN ('Realisation' , 'Generalization')
and conn2.Connector_Type IN ('Realisation' , 'Generalization')
and ( conn1.Start_Object_id = rcvr.Object_ID)
union all
select 'level_3' as level_,conn1.Start_Object_ID as StartObject, conn3.end_Object_ID as Object_Id from
((t_connector conn1
inner join t_connector conn2 on conn1.End_Object_id = conn2.Start_Object_id)
inner join t_connector conn3 on conn2.End_Object_id = conn3.Start_Object_id)
where conn1.Connector_Type IN ('Realisation' , 'Generalization')
and conn2.Connector_Type IN ('Realisation' , 'Generalization')
and conn3.Connector_Type IN ('Realisation' , 'Generalization')
and ( conn1.Start_Object_id = rcvr.Object_ID)
union all
select 'level_4' as level_,conn1.Start_Object_ID as StartObject, conn4.end_Object_ID as Object_Id from
(((t_connector conn1
inner join t_connector conn2 on conn1.End_Object_id = conn2.Start_Object_id)
inner join t_connector conn3 on conn2.End_Object_id = conn3.Start_Object_id)
inner join t_connector conn4 on conn3.End_Object_id = conn4.Start_Object_id)
where conn1.Connector_Type IN ('Realisation' , 'Generalization')
and conn2.Connector_Type IN ('Realisation' , 'Generalization')
and conn3.Connector_Type IN ('Realisation' , 'Generalization')
and conn4.Connector_Type IN ('Realisation' , 'Generalization')
and ( conn1.Start_Object_id = rcvr.Object_ID)
union all
select 'level_5' as level_,conn1.Start_Object_ID as StartObject, conn5.end_Object_ID as Object_Id from
((((t_connector conn1
inner join t_connector conn2 on conn1.End_Object_id = conn2.Start_Object_id)
inner join t_connector conn3 on conn2.End_Object_id = conn3.Start_Object_id)
inner join t_connector conn4 on conn3.End_Object_id = conn4.Start_Object_id)
inner join t_connector conn5 on conn4.End_Object_id = conn5.Start_Object_id)
where conn1.Connector_Type IN ('Realisation' , 'Generalization')
and conn2.Connector_Type IN ('Realisation' , 'Generalization')
and conn3.Connector_Type IN ('Realisation' , 'Generalization')
and conn4.Connector_Type IN ('Realisation' , 'Generalization')
and conn5.Connector_Type IN ('Realisation' , 'Generalization')
and ( conn1.Start_Object_id = rcvr.Object_ID)
) AS relatedObjects
)
)
union all
#DB=SQLSVR# -- the following lines finds all messages that don't have parentheses #DB=SQLSVR#
SELECT distinct t_diagram.ea_guid AS CLASSGUID, 't_diagram' as CLASSTABLE, t_diagram.Diagram_Type AS CLASSTYPE, t_diagram.Name as diagramName ,sender.Name as msg_Sender,t_connector.Name as full_name,rcvr.Name as msg_Rcvr, t_connector.DiagramID,t_connector.SeqNo
FROM (((
t_connector
inner join t_diagram on t_connector.DiagramID = t_diagram.Diagram_ID)
inner join t_object as sender on t_connector.Start_Object_ID = sender.Object_ID )
inner join t_object as rcvr on t_connector.End_Object_ID = rcvr.Object_ID )
where t_connector.Connector_Type = 'Sequence'
AND t_connector.Name NOT LIKE '#WC#(#WC#'
#DB=SQLSVR# -- Find messages that are not operations of recieving class - V3 END
#DB=SQLSVR#
;