algorithm_definition.cpp

Go to the documentation of this file.
00001 //--------------------------------------------------
00012 //---------------------------------------------------
00013 
00014 #include "algorithm_definition.h"
00015 
00016 namespace imedgine 
00017 {
00018   //---------------------------------------------------
00019   
00020   AlgorithmDefinition::AlgorithmDefinition()
00021   {
00022   }
00023 
00024   //---------------------------------------------------
00025   
00026   AlgorithmDefinition::~AlgorithmDefinition()
00027   {
00028   }
00029   
00030   //---------------------------------------------------
00031   
00032   void AlgorithmDefinition::setName(std::string name)
00033   {
00034     name_ = name;
00035   }
00036   
00037   //---------------------------------------------------
00038   
00039   void AlgorithmDefinition::setClassification(std::string classification)
00040   {
00041     classification_ = classification; 
00042   }
00043   
00044   //---------------------------------------------------
00045   
00046   void AlgorithmDefinition::setLibraryName(std::string library_name)
00047   {
00048     library_name_ = library_name;
00049   }
00050   
00051   //---------------------------------------------------
00052   
00053   std::string AlgorithmDefinition::getName()
00054   {
00055     return name_;
00056   }
00057   
00058   //---------------------------------------------------
00059   
00060   std::string AlgorithmDefinition::getClassification()
00061   {
00062     return classification_;
00063   }
00064   
00065   //---------------------------------------------------
00066   
00067   std::string AlgorithmDefinition::getLibraryName()
00068   {
00069     return library_name_;
00070   }
00071   
00072   //---------------------------------------------------
00073   
00074   void AlgorithmDefinition::setDatasetCombinations(AlgorithmDefinition::combinations_definition_list_type combinations)
00075   {
00076     dataset_combinations_ = combinations;
00077   }
00078   
00079   //---------------------------------------------------
00080   
00081   AlgorithmDefinition::combinations_definition_list_type AlgorithmDefinition::getDatasetCombinations()
00082   {
00083     return dataset_combinations_;
00084   }
00085  
00086   //---------------------------------------------------
00087   
00088   AlgorithmDefinition::accepted_datasets_type
00089     AlgorithmDefinition::getPossibleCombinations(std::string name, AlgorithmDefinition::already_set_datasets_type already_set_datasets)
00090   {
00091     accepted_datasets_type possible_dataset_types;
00092     //iterate over list of combinations
00093     for (combinations_definition_list_type::const_iterator iter = dataset_combinations_.begin();iter != dataset_combinations_.end();++iter)
00094     {
00095       //the acccepted datasets for this combination
00096       accepted_datasets_collection_type accepted_datasets = *iter;
00097       bool do_remove = false;
00098       for(already_set_datasets_type::const_iterator ds_iter=already_set_datasets.begin();ds_iter != already_set_datasets.end();++ds_iter)
00099       {
00100         std::string dataset_name = ds_iter->first;
00101         dataset_type dataset_type = ds_iter->second;
00102         accepted_datasets_collection_type::const_iterator accepted_datasets_iterator = accepted_datasets.find(dataset_name);
00103         if (accepted_datasets_iterator != accepted_datasets.end())
00104         {
00105           accepted_datasets_type accepted = accepted_datasets_iterator->second;
00106           //not found in combination
00107           if (accepted.find(dataset_type) == accepted.end())
00108           {
00109             do_remove = true;
00110           }
00111         }
00112       }
00113 
00114       //only if the dataset shan't be removed
00115       if (!do_remove)
00116       {
00117         accepted_datasets_collection_type::const_iterator datasets_iterator = accepted_datasets.find(name);
00118         if (datasets_iterator != accepted_datasets.end())
00119         {
00120           accepted_datasets_type datasets = datasets_iterator->second;
00121           possible_dataset_types.insert(datasets.begin(),datasets.end());
00122         }
00123       }
00124     }
00125     return possible_dataset_types;
00126   }
00127   
00128   //---------------------------------------------------
00129   
00130   std::string AlgorithmDefinition::toString()
00131   {
00132     std::stringstream output;
00133     output << "name: " << name_ << std::endl;
00134     output << "classification: " << classification_ << std::endl;
00135     output << "library name: " << library_name_ << std::endl;
00136     return output.str();
00137   }
00138   
00139   //---------------------------------------------------
00140 
00141   void AlgorithmDefinition::addOutputDataset(AlgorithmDefinition::dataset_definition_pointer_type dataset)
00142   {
00143     output_datasets_.insert(std::make_pair(dataset->getName(), dataset));
00144   }
00145   
00146   //---------------------------------------------------
00147   
00148   void AlgorithmDefinition::addInputDataset(AlgorithmDefinition::dataset_definition_pointer_type dataset)
00149   {
00150     input_datasets_.insert(std::make_pair(dataset->getName(), dataset));
00151   } 
00152   
00153   //---------------------------------------------------
00154 
00155   AlgorithmDefinition::dataset_definition_pointer_type AlgorithmDefinition::getInputDataset(std::string name)
00156   {
00157     dataset_definition_collection_type::const_iterator iter = input_datasets_.find(name);
00158     if (iter != input_datasets_.end())
00159     {
00160       return iter->second;
00161     }
00162     else
00163     {
00164       //TODO throw exception
00165       return dataset_definition_pointer_type();
00166     }
00167   }
00168   
00169   //---------------------------------------------------
00170 
00171   AlgorithmDefinition::dataset_definition_collection_type AlgorithmDefinition::getInputDatasets()
00172   {
00173     return input_datasets_;
00174   }
00175   
00176   //---------------------------------------------------
00177   
00178   AlgorithmDefinition::dataset_definition_collection_type AlgorithmDefinition::getOutputDatasets()
00179   {
00180     return output_datasets_;
00181   }
00182 
00183   //---------------------------------------------------
00184   
00185   void AlgorithmDefinition::setOutputDatasetIds(config_dataset_id_to_output_map_type &dataset_id_map)
00186   {
00187     for(dataset_definition_collection_type::const_iterator output_ds_def_iterator=output_datasets_.begin();
00188         output_ds_def_iterator!=output_datasets_.end();
00189         ++output_ds_def_iterator)
00190     {
00191       dataset_definition_pointer_type output_ds_def = output_ds_def_iterator->second;
00192       dataset_id_map.insert(std::make_pair(output_ds_def->getName(), output_ds_def->getType()));
00193     }
00194   }
00195 }
00196 

Generated on Sun Aug 13 18:19:37 2006 for iMEDgine by  doxygen 1.4.6