bool PropertiesWavelengths::initialize(SessionItem* pSessionItem) { WavelengthsWidget* pWavelengthsPage = dynamic_cast<WavelengthsWidget*>(getWidget()); if (pWavelengthsPage == NULL) { return false; } DataElement* pElement = dynamic_cast<DataElement*>(pSessionItem); if (pElement != NULL) { RasterDataDescriptor* pDescriptor = dynamic_cast<RasterDataDescriptor*>(pElement->getDataDescriptor()); if (pDescriptor != NULL) { const DynamicObject* pMetadata = pElement->getMetadata(); if (pMetadata != NULL) { mWavelengths.initializeFromDynamicObject(pMetadata, true); pWavelengthsPage->setWavelengths(pDescriptor->getBands(), &mWavelengths); return PropertiesShell::initialize(pSessionItem); } } } return false; }
bool PropertiesWavelengths::applyChanges() { DataElement* pElement = dynamic_cast<DataElement*>(getSessionItem()); if (pElement != NULL) { if (dynamic_cast<RasterDataDescriptor*>(pElement->getDataDescriptor()) != NULL) { DynamicObject* pMetadata = pElement->getMetadata(); if (pMetadata != NULL) { return mWavelengths.applyToDynamicObject(pMetadata); } } } return false; }
bool MetadataExporter::execute(PlugInArgList* pInArgList, PlugInArgList* pOutArgList) { Progress* pProgress = NULL; FileDescriptor* pFileDescriptor = NULL; DataElement* pElement = NULL; StepResource pStep("Export metadata", "app", "{08701b89-565c-4e0a-92ef-9bf22395f902}"); // get input arguments and log some useful info about them { // scope the MessageResource MessageResource pMsg("Input arguments", "app", "{5e921da0-6470-44f1-a910-ed12af1e5ebc}"); pProgress = pInArgList->getPlugInArgValue<Progress>(Executable::ProgressArg()); pMsg->addBooleanProperty("Progress Present", (pProgress != NULL)); pFileDescriptor = pInArgList->getPlugInArgValue<FileDescriptor>(Exporter::ExportDescriptorArg()); if (pFileDescriptor == NULL) { if (pProgress != NULL) { pProgress->updateProgress("No file specified", 100, ERRORS); } pStep->finalize(Message::Failure, "No file specified"); return false; } pMsg->addProperty("Destination", pFileDescriptor->getFilename()); pElement = pInArgList->getPlugInArgValue<DataElement>(Exporter::ExportItemArg()); if (pElement == NULL) { if (pProgress != NULL) { pProgress->updateProgress("No data element specified", 100, ERRORS); } pStep->finalize(Message::Failure, "No data element specified"); return false; } pMsg->addProperty("Name", pElement->getName()); } if (pProgress != NULL) { pProgress->updateProgress("Open output file", 10, NORMAL); } FILE* pFile = fopen(pFileDescriptor->getFilename().getFullPathAndName().c_str(), "w"); if (pFile == NULL) { if (pProgress != NULL) { pProgress->updateProgress("File can not be created", 100, ERRORS); } pStep->finalize(Message::Failure, "File can not be created"); return false; } const DynamicObject* pMetadata = pElement->getMetadata(); VERIFY(pMetadata); if (pProgress != NULL) { pProgress->updateProgress("Save metadata", 20, NORMAL); } if (pMetadata->getNumAttributes() == 0) { if (pProgress != NULL) { pProgress->updateProgress("Metadata is empty. A file will be created anyway.", 20, WARNING); } pStep->addMessage("Metadata is empty. A file will be created anyway.", "app", "{29274eb3-c899-4778-ae1e-d267ea0dd346}", true); } XMLWriter xml("Metadata", Service<MessageLogMgr>()->getLog()); xml.pushAddPoint(NULL); if (!pMetadata->toXml(&xml)) { if (pProgress != NULL) { pProgress->updateProgress("Error saving metadata", 100, ERRORS); } pStep->finalize(Message::Failure, "Error saving metadata"); return false; } xml.popAddPoint(); xml.writeToFile(pFile); fclose(pFile); if (pProgress != NULL) { pProgress->updateProgress("Finished saving the metadata", 100, NORMAL); } pStep->finalize(Message::Success); return true; }