/**
  *
  * @param type $db - ADONewConnection.
  * @param type $cropID - Crop ID to search from concepts table.
  * @return \GenePoolConcept - GenePoolConcept Object and its Concepts.
  */
 public function getGenePoolConcept($taxonID)
 {
     global $db;
     $query = "SELECT DISTINCT c.Crop_ID, c.Concept_ID, c.Concept_Type, c.Concept_Level, s2.*\n          FROM concepts c\n          INNER JOIN species s ON c.Taxon_ID = s.Taxon_ID\n          JOIN species s2 ON s.Valid_Taxon_ID = s2.Taxon_ID\n          WHERE c.Concept_ID = (\n            SELECT c.Concept_ID\n            FROM concepts c\n            WHERE c.Concept_Level in ('1A','Crop taxa') and c.Taxon_ID = {$taxonID}\n          )  AND s2.Taxon_ID = s2.Valid_Taxon_ID\n          ORDER BY c.Concept_Level, s2.Scientific_Name";
     $result = $db->getAll($query);
     $genePoolConcept = null;
     $cropID = null;
     // Validate if $result has not data.
     if (!empty($result)) {
         $genePoolConcept = new GenePoolConcept();
         $theConceptID = null;
         $theConceptType = null;
         $array_id = array();
         foreach ($result as $db_concept) {
             $concept = new Concept();
             $concept->setConceptType(trim($db_concept["Concept_Type"]));
             $concept->setConceptLevel(trim($db_concept["Concept_Level"]));
             $concept->setConceptID(trim($db_concept["Concept_ID"]));
             $concept->setCropID(trim($db_concept["Crop_ID"]));
             if ($cropID == null) {
                 $cropID = trim($db_concept["Crop_ID"]);
             }
             if ($theConceptID == null) {
                 $theConceptID = $concept->getConceptID();
             }
             if ($theConceptType == null) {
                 $theConceptType = $concept->getConceptType();
             }
             /*                 * ** TAXON - BASIC INFORMATION *** */
             $taxon = new Taxon(trim($db_concept["Valid_Taxon_ID"]));
             // Taxon_ID will be the identifier of the suggestion list.
             $taxon->setCommonName(trim($db_concept["Common_Name"]));
             $taxon->setFamily(trim($db_concept["Family"]));
             $taxon->setFamilyAuthor(trim($db_concept["Family_Author"]));
             $taxon->setGenus(trim($db_concept["Genus"]));
             $taxon->setSpecie(trim($db_concept["Species"]));
             $taxon->setSpecieAuthor(trim($db_concept["Species_Author"]));
             $taxon->setSubspecie(trim($db_concept["Subsp"]));
             $taxon->setSubspecieAuthor($db_concept["Subsp_Author"]);
             $taxon->setVariety(trim($db_concept["Var"]));
             $taxon->setVarietyAuthor(trim($db_concept["Var_Author"]));
             $taxon->setForm(trim($db_concept["Form"]));
             $taxon->setFormAuthor(trim($db_concept["Form_Author"]));
             $taxon->setMainCrop(trim($db_concept["Main_Crop"]));
             $taxon->setScientificName(trim($db_concept["Scientific_Name"]));
             $concept->setTaxon($taxon);
             if ($concept->getConceptLevel() == "Crop taxa") {
                 $genePoolConcept->addCropTaxa($taxon);
             } else {
                 // if concept level = 1A it should be also in the genepool concept list.
                 if ($concept->getConceptLevel() == "1A") {
                     $genePoolConcept->addCropTaxa($taxon);
                 }
                 $genePoolConcept->addConcept($concept);
             }
         }
         $taxonDAO = DAOFactory::getDAOFactory()->getTaxonDAO();
         $mainTaxon = $taxonDAO->getTaxon($cropID);
         $mainCrop = new Concept($mainTaxon->getId());
         $mainCrop->setConceptID($theConceptID);
         $mainCrop->setConceptType($theConceptType);
         $mainCrop->setCropID($cropID);
         $mainCrop->setTaxon($mainTaxon);
         $genePoolConcept->setMainCrop($mainCrop);
     }
     return $genePoolConcept;
 }