@@ -15,54 +15,29 @@ public static void ReorderNodesForFilter(Tree tree, IFilter filter)
1515 {
1616 for ( int j = i + 1 ; j < filter . Dependencies . Length ; j ++ )
1717 {
18- if ( ! ReorderNodesForDependencies ( tree , filter . Dependencies [ i ] , filter . Dependencies [ j ] ) )
19- {
20- throw new ResolutionException ( $ "Filter implies chaining of entities, that is not allowed by other filters. " +
21- $ "This filter makes graph that was not successfully resolved." +
22- $ "{ filter . Key } { filter . FilterString } ") ;
23- }
18+ ReorderNodesForDependencies ( tree , filter . Dependencies [ i ] , filter . Dependencies [ j ] ) ;
2419 }
2520 }
2621 }
2722
28- private static bool ReorderNodesForDependencies ( Tree tree , IDependency dep1 , IDependency dep2 )
23+ private static void ReorderNodesForDependencies ( Tree tree , IDependency dep1 , IDependency dep2 )
2924 {
3025 if ( dep1 . Definition == dep2 . Definition || dep1 . IsCollectionDependency || dep2 . IsCollectionDependency )
3126 {
32- return true ;
27+ return ;
3328 }
3429
3530 var node1 = tree . Nodes [ dep1 . Definition ] ;
3631 var node2 = tree . Nodes [ dep2 . Definition ] ;
3732 if ( node1 . IsChildOf ( node2 ) || node2 . IsChildOf ( node1 ) )
3833 {
39- return true ;
34+ return ;
4035 }
4136
4237 var chain1 = node1 . GetParentalChain ( ) ;
4338 var chain2 = node2 . GetParentalChain ( ) ;
4439 var closestParentIndex = FindClosestParent ( chain1 , chain2 ) ;
45- var chained = ChainUpNodes ( tree , chain1 [ closestParentIndex + 1 ] , node2 ) ;
46- chained = chained || ChainUpNodes ( tree , chain1 [ closestParentIndex + 1 ] , node2 ) ;
47- return chained ;
48- }
49-
50- private static bool ChainUpNodes ( Tree tree , INode node , INode newParent )
51- {
52- if ( ! ChainUpIsValid ( tree , node , newParent ) )
53- {
54- return false ;
55- }
56-
57- node . Parent = newParent ;
58- return true ;
59- }
60-
61- private static bool ChainUpIsValid ( Tree tree , INode node , INode newParent )
62- {
63- return ! tree . ProhibitedRelations
64- . Where ( prohibitedRelation => prohibitedRelation . Child . IsChildOf ( node ) )
65- . Any ( prohibitedRelation => newParent . IsChildOf ( prohibitedRelation . Parent ) ) ;
40+ chain1 [ closestParentIndex + 1 ] . Parent = node2 ;
6641 }
6742 }
6843}
0 commit comments