class AerialPlatformResultHandler implements ResultHandler, EventListener<ActiveDataGroupsChangedEvent> {

    @Override
    public void handleResults(OSHDataTypeInfo dataType, List<Output> outputs, List<CancellableInputStream> streams)
        throws IOException
    {
        int index = 0;
        List<PlatformMetadata> locations = New.list();
        List<PlatformMetadata> platformOrientations = New.list();
        List<PlatformMetadata> gimbalOrientations = New.list();
        for (CancellableInputStream stream : streams)
        {
            Output output = outputs.get(index);

            if (ourPlatformLocationName.equals(output.getName()))
            {
                myLocationParser.parse(output, stream, locations);
            }
            else if (ourPlatformAttitudeName.equals(output.getName()))
            {
                myPlatformOrientationParser.parse(output, stream, platformOrientations);
            }
            else if (ourGimbalAttitudeName.equals(output.getName()))
            {
                myGimbalParser.parse(output, stream, gimbalOrientations);
            }

            index++;
        }

        List<PlatformMetadata> metadatas = myCombiner.combineData(locations, platformOrientations, gimbalOrientations);
        index = 0;
        for (PlatformMetadata metadata : metadatas)
        {
            metadata.setFootprint(myFootprintCalc.calculateFootprint2(metadata, ourFOVWidth, ourFOVHeight));
            index++;
        }

        depositMetadatas(dataType, metadatas);
    }

    public  AerialPlatformResultHandler(Toolbox toolbox, OSHImageQuerier querier);

}