FUNCTION get_directed_link
(nodes : LIST [0:?] OF representation; undirected_link : LIST [0:?] OF chained_representation_link) : LIST [0:?] OF representation_relationship;
LOCAL directed_link : LIST OF representation_relationship := []; END_LOCAL;
REPEAT i := 1 TO SIZEOF(undirected_link); CASE TRUE OF ('REPRESENTATION_SCHEMA.REPRESENTATION_CONTEXT' IN TYPEOF(undirected_link[i])) : BEGIN IF ((nodes[i]\representation.context_of_items :=: undirected_link[i]) AND (nodes[i+1]\representation.context_of_items :=: undirected_link[i])) THEN INSERT(directed_link, representation_relationship('','',nodes[i],nodes[i+1]), (i - 1)); ELSE RETURN(?); END_IF; END;
('REPRESENTATION_SCHEMA.REPRESENTATION_RELATIONSHIP' IN TYPEOF(undirected_link[i])) : BEGIN IF (((nodes[i] :=: undirected_link[i]\representation_relationship.rep_1) AND (nodes[i+1] :=: undirected_link[i]\representation_relationship.rep_2)) OR ((nodes[i] :=: undirected_link[i]\representation_relationship.rep_2) AND (nodes[i+1] :=: undirected_link[i]\representation_relationship.rep_1))) THEN INSERT(directed_link, representation_relationship('','',nodes[i],nodes[i+1]), (i - 1)); ELSE RETURN(?); END_IF; END;
('REPRESENTATION_SCHEMA.MAPPED_ITEM' IN TYPEOF(undirected_link[i])) : BEGIN IF ((nodes[i] IN using_representations(undirected_link[i])) AND (nodes[i+1] :=: undirected_link[i]\mapped_item.mapping_source\representation_map.mapped_representation)) THEN INSERT(directed_link, representation_relationship('','',nodes[i],nodes[i+1]), (i - 1)); ELSE RETURN(?); END_IF; END;
OTHERWISE : RETURN(?); END_CASE; END_REPEAT; RETURN(directed_link); END_FUNCTION; -- get_directed_link
|