#pragma once
#include "DTOIterator.h"
#include "AbstractSimulationResultDTO.h"
#include <list>


class ResultDTOIteratorFactory
{
public:
	static DTOIterator *createGeneralIterator(AbstractSimulationResultDTO *abstractResultDTO);
	static DTOIterator *createServicesIterator(AbstractSimulationResultDTO *abstractResultDTO);
	static DTOIterator *createSingleSimulationIterator(AbstractSimulationResultDTO *abstractResultDTO);

private:

	static list<AbstractSimulationResultDTO*>* recursiveListContructor(AbstractSimulationResultDTO *abstractResultDTO,list<AbstractSimulationResultDTO*>* services);
	static list<AbstractSimulationResultDTO*>* servicesRecursiveListContructor(AbstractSimulationResultDTO *abstractResultDTO,list<AbstractSimulationResultDTO*>* services);
	static list<AbstractSimulationResultDTO*>* singleSimulationRecursiveListContructor(AbstractSimulationResultDTO *abstractResultDTO,list<AbstractSimulationResultDTO*>* services);
};