#ifndef DM_ATTRIBUTESBUILDINGCOLLECTIONT_HPP #define DM_ATTRIBUTESBUILDINGCOLLECTIONT_HPP #include "tools/attributes/dm_attributesbuildingcollectiont.h" #include "ct_result/abstract/ct_abstractresult.h" template DM_AttributesBuildingCollectionT::DM_AttributesBuildingCollectionT() { } template bool DM_AttributesBuildingCollectionT::buildFrom(CT_VirtualAbstractStep *step) { m_collection.clear(); if(step == NULL) return false; recursiveBuildAttributesFromStep(step); return true; } template const QList& DM_AttributesBuildingCollectionT::attributesCollection() const { return m_collection; } template void DM_AttributesBuildingCollectionT::recursiveBuildAttributesFromStep(CT_VirtualAbstractStep *step) { QList results = step->getResults(); QListIterator it(results); while(it.hasNext()) recursiveBuildAttributesFromModels(it.next()->model()->childrens()); QList steps = step->getStepChildList(); while(!steps.isEmpty()) recursiveBuildAttributesFromStep(steps.takeFirst()); } template void DM_AttributesBuildingCollectionT::recursiveBuildAttributesFromModels(QList models) { QListIterator itM(models); while(itM.hasNext()) { CT_AbstractModel *model = itM.next(); if((dynamic_cast(((CT_OutAbstractModel*)model)->item()) != NULL) && (((CT_OutAbstractModel*)model)->result() != NULL)) { CT_ResultIterator it((CT_ResultGroup*)((CT_OutAbstractModel*)model)->result(), model); while(it.hasNext()) { Type *tt = (Type*)it.next(); if(!m_collection.contains(tt)) m_collection.append(tt); } } recursiveBuildAttributesFromModels(model->childrens()); } } #endif // DM_ATTRIBUTESBUILDINGCOLLECTIONT_HPP