Exemplo n.º 1
0
    /**
    Make a choice for the peak transform factory, but use the default labels known to each factory.
    @return selected factory
    */
    PeakTransformFactory_sptr PeakTransformSelector::makeDefaultChoice() const
    {
      if(numberRegistered() == 0)
      {
        throw std::runtime_error("Nothing registered.");
      }

      PeakTransformFactory_sptr selected;
      bool found = false;
      for(auto it = m_candidateFactories.begin(); it != m_candidateFactories.end(); ++it)
      {
        try
        {
          PeakTransformFactory_sptr temp = (*it);
          temp->createDefaultTransform();
          selected = temp;
          found = true;
        }
        catch(PeakTransformException&)
        {
        }
      }
      if(!found)
      {
        throw std::invalid_argument("PeakTransformSelector could not find a suitable transform");
      }
      return selected;
    }
Exemplo n.º 2
0
/**
Make a choice for the peak transform factory.
@param labelX: X-label to use in determining selection.
@param labelY: Y-label to use in determining selection.
@return selected factory
*/
PeakTransformFactory_sptr
PeakTransformSelector::makeChoice(const std::string labelX,
                                  const std::string labelY) const {
  if (labelX.empty()) {
    throw std::invalid_argument("labelX is empty");
  }
  if (labelY.empty()) {
    throw std::invalid_argument("labelY is empty");
  }
  if (numberRegistered() == 0) {
    throw std::runtime_error("Nothing registered.");
  }

  PeakTransformFactory_sptr selected;
  bool found = false;
  for (auto it = m_candidateFactories.begin(); it != m_candidateFactories.end();
       ++it) {
    try {
      PeakTransformFactory_sptr temp = (*it);
      temp->createTransform(labelX, labelY);
      selected = temp;
      found = true;
    } catch (PeakTransformException &) {
    }
  }
  if (!found) {
    std::stringstream ss;
    ss << "PeakTransformSelector could not find a suitable transform for "
          "labelX " << labelX << " labelY " << labelY;
    throw std::invalid_argument(ss.str());
  }
  return selected;
}