bool ElmBatch::extractInputArgs(PlugInArgList* pInputArgList) { if (ElmCore::extractInputArgs(pInputArgList) == false) { return false; } StepResource pStep("Extract Batch Input Args", "app", "32A136BE-8531-42ca-8B22-086293B5A925"); VERIFY(pStep.get() != NULL); // Get the Use Gains/Offsets Flag. if (pInputArgList->getPlugInArgValue<bool>(UseGainsOffsetsArg(), mUseGainsOffsets) == false) { pStep->finalize(Message::Failure, "The \"" + UseGainsOffsetsArg() + "\" input arg is invalid."); if (mpProgress != NULL) { mpProgress->updateProgress(pStep->getFailureMessage(), 100, ERRORS); } return false; } if (mUseGainsOffsets == true) { // If the Use Gains/Offsets Flag is set to true, get the Gains/Offsets Filename. Filename* pFilename = pInputArgList->getPlugInArgValue<Filename>(GainsOffsetsFilenameArg()); if (pFilename == NULL || pFilename->getFullPathAndName().empty() == true) { // If the Gains/Offsets Filename is not set, use the default. mGainsOffsetsFilename = getDefaultGainsOffsetsFilename(); } else if (pFilename->isDirectory() == true) { pStep->finalize(Message::Failure, "The \"" + GainsOffsetsFilenameArg() + "\" cannot be a directory."); if (mpProgress != NULL) { mpProgress->updateProgress(pStep->getFailureMessage(), 100, ERRORS); } return false; } else { mGainsOffsetsFilename = pFilename->getFullPathAndName(); } } else { // If the Use Gains/Offsets Flag is set to false, get the Signature Filenames and AOI Filenames. vector<Filename*> pSignatureFilenames; if (pInputArgList->getPlugInArgValue<vector<Filename*> > (SignatureFilenamesArg(), pSignatureFilenames) == false) { pStep->finalize(Message::Failure, "The \"" + SignatureFilenamesArg() + "\" input arg is invalid."); if (mpProgress != NULL) { mpProgress->updateProgress(pStep->getFailureMessage(), 100, ERRORS); } return false; } for (vector<Filename*>::iterator iter = pSignatureFilenames.begin(); iter != pSignatureFilenames.end(); ++iter) { bool previouslyLoaded; Signature* pSignature = dynamic_cast<Signature*> (getElement(*iter, "Signature", NULL, previouslyLoaded)); if (pSignature == NULL) { pStep->finalize(Message::Failure, "The \"" + SignatureFilenamesArg() + "\" input arg contains an invalid value."); if (mpProgress != NULL) { mpProgress->updateProgress(pStep->getFailureMessage(), 100, ERRORS); } return false; } mpSignatures.push_back(pSignature); if (previouslyLoaded == false) { mpSignaturesToDestroy.push_back(pSignature); } } // Get the AOI names. vector<Filename*> pAoiFilenames; if (pInputArgList->getPlugInArgValue<vector<Filename*> >(AoiFilenamesArg(), pAoiFilenames) == false) { pStep->finalize(Message::Failure, "The \"" + AoiFilenamesArg() + "\" input arg is invalid."); if (mpProgress != NULL) { mpProgress->updateProgress(pStep->getFailureMessage(), 100, ERRORS); } return false; } for (vector<Filename*>::iterator iter = pAoiFilenames.begin(); iter != pAoiFilenames.end(); ++iter) { bool previouslyLoaded; AoiElement* pAoiElement = dynamic_cast<AoiElement*> (getElement(*iter, "AoiElement", mpRasterElement, previouslyLoaded)); if (pAoiElement == NULL) { pStep->finalize(Message::Failure, "The \"" + AoiFilenamesArg() + "\" input arg contains an invalid value."); if (mpProgress != NULL) { mpProgress->updateProgress(pStep->getFailureMessage(), 100, ERRORS); } return false; } mpAoiElements.push_back(pAoiElement); if (previouslyLoaded == false) { mpAoiElementsToDestroy.push_back(pAoiElement); } } } pStep->finalize(); return true; }