Ejemplo n.º 1
0
bool RasterElementImporterShell::parseInputArgList(PlugInArgList* pInArgList)
{
   if (pInArgList == NULL)
   {
      return false;
   }

   StepResource pStep("Validate Inputs", "app", "4CDCFA20-2A40-452D-9956-264A35F8B883");

   // Extract the input args
   PlugInArg* pArg = NULL;
   bool bSuccess = false;

   // Progress
   bSuccess = pInArgList->getArg(Executable::ProgressArg(), pArg);
   if ((bSuccess == true) && (pArg != NULL))
   {
      if (pArg->isActualSet() == true)
      {
         mpProgress = reinterpret_cast<Progress*>(pArg->getActualValue());
      }
   }

   // Sensor data
   mpRasterElement = pInArgList->getPlugInArgValue<RasterElement>(Importer::ImportElementArg());
   if (mpRasterElement == NULL)
   {
      string msg = "The raster element input value is invalid!";
      if (mpProgress != NULL)
      {
         mpProgress->updateProgress(msg, 0, ERRORS);
      }

      pStep->finalize(Message::Failure, msg);
      return false;
   }

   pStep->finalize(Message::Success);
   return true;
}
Ejemplo n.º 2
0
bool PlugInTester::execute(PlugInArgList* pInArgs, PlugInArgList* pOutArgs)
{
   VERIFY(pInArgs != NULL);

   Progress* pProgress = NULL;
   PlugInArg* pArg = NULL;
   if (pInArgs != NULL && pInArgs->getArg(Executable::ProgressArg(), pArg) && pArg != NULL)
   {
      pProgress = reinterpret_cast<Progress*>(pArg->getActualValue());
   }

   vector<PlugInDescriptor*> allPlugins = mpPlugMgr->getPlugInDescriptors();
   vector<string> testablePlugins;
   for (vector<PlugInDescriptor*>::const_iterator it = allPlugins.begin(); it != allPlugins.end(); ++it)
   {
      PlugInDescriptor* pDescriptor = *it;
      if (pDescriptor == NULL)
      {
         continue;
      }
      if (pDescriptor->isTestable())
      {
         testablePlugins.push_back(pDescriptor->getName());
      }
   }

   string msg;
   bool bSuccess = false;
   PlugInSelectorDlg dlg(mpDesktop->getMainWidget(), testablePlugins);
   int stat = dlg.exec();
   if (stat == QDialog::Accepted)
   {
      const vector<string>& pluginsToTest = dlg.getSelectedPlugins();

      // TODO: Set up a ProgressTracker for each plug-in to test

      vector<string>::const_iterator it;
      for (it = pluginsToTest.begin(); it != pluginsToTest.end(); ++it)
      {
         PlugInResource pPlugIn(*it);
         Testable* pTestable = dynamic_cast<Testable*>(pPlugIn.get());
         if (pTestable == NULL)
         {
            msg += "The Plug-In " + *it + " cannot be created!";
            if (pProgress != NULL)
            {
               pProgress->updateProgress(msg, 0, ERRORS);
            }
            return false;
         }

         msg += "Testing " + *it + "...";
         if (pProgress != NULL)
         {
            pProgress->updateProgress(msg, 0, NORMAL);
         }

         stringstream ostr;
         bSuccess = pTestable->runAllTests(pProgress, ostr);

         msg += "Testing of Plug-In " + *it + " has been completed";
         ReportingLevel lvl = NORMAL;
         if (!bSuccess)
         {
            lvl = ERRORS;
            msg += " with errors!";
         }
         else
         {
            msg += "!";
         }

         if (ostr.str().size() > 0)
         {
            msg += "\n" + ostr.str() + "\n";
         }
         else
         {
            msg += "\n";
         }

         if (pProgress != NULL)
         {
            pProgress->updateProgress(msg, 100, lvl);
         }
      }
   }

   return bSuccess;
}