public List<Fixture> lumpyMap( final List<Fixture> fixtures ) {
List<Fixture> output = new ArrayList<Fixture>();
FixturesMap dataInput = new FixturesMap();
CallFixtureMap callOnDataInput = new CallFixtureMap();
FixtureList verifyFact = new FixtureList();
FixtureList verifyRule = new FixtureList();
FixtureList retractFacts = new FixtureList();
for ( Fixture fixture : fixtures ) {
if ( fixture instanceof FactData ) {
accumulateDataForFactData( dataInput,
(FactData) fixture );
} else if ( fixture instanceof CallMethod ) {
accumulateCallMethod( callOnDataInput,
(CallMethod) fixture );
} else if ( fixture instanceof ActivateRuleFlowGroup ) {
accumulateDataForActivateRuleFlowGroup( dataInput, fixture );
} else if ( fixture instanceof RetractFact ) {
retractFacts.add( fixture );
} else if ( fixture instanceof VerifyRuleFired ) {
verifyRule.add( fixture );
} else if ( fixture instanceof VerifyFact ) {
verifyFact.add( fixture );
} else if ( fixture instanceof ExecutionTrace ) {
gatherFixtures( output,
dataInput,
callOnDataInput,
verifyFact,
verifyRule,
retractFacts,
false );
output.add( fixture );
verifyRule = new FixtureList();
verifyFact = new FixtureList();
retractFacts = new FixtureList();
callOnDataInput = new CallFixtureMap();
dataInput = new FixturesMap();
}
}
gatherFixtures( output,