vector<ImportDescriptor*> CgmImporter::getImportDescriptors(const string& filename) { vector<ImportDescriptor*> descriptors; if (!filename.empty()) { FactoryResource<Filename> pFullFilename; pFullFilename->setFullPathAndName(filename); ImportDescriptor* pImportDescriptor = mpModel->createImportDescriptor(filename, "AnnotationElement", NULL); if (pImportDescriptor != NULL) { DataDescriptor* pDescriptor = pImportDescriptor->getDataDescriptor(); if (pDescriptor != NULL) { FactoryResource<FileDescriptor> pFileDescriptor; if (pFileDescriptor.get() != NULL) { pFileDescriptor->setFilename(filename); pDescriptor->setFileDescriptor(pFileDescriptor.get()); } } descriptors.push_back(pImportDescriptor); } } return descriptors; }
vector<ImportDescriptor*> SignatureSetImporter::createImportDescriptors(DOMTreeWalker* pTree, vector<string> &datasetPath) { vector<ImportDescriptor*> descriptors; FactoryResource<DynamicObject> pMetadata; VERIFYRV(pMetadata.get() != NULL, descriptors); string datasetName = StringUtilities::toDisplayString(mDatasetNumber++); for (DOMNode* pChld = pTree->firstChild(); pChld != NULL; pChld = pTree->nextSibling()) { if (XMLString::equals(pChld->getNodeName(), X("metadata"))) { DOMElement* pElmnt = static_cast<DOMElement*>(pChld); string name = A(pElmnt->getAttribute(X("name"))); string val = A(pElmnt->getAttribute(X("value"))); pMetadata->setAttribute(name, val); if (name == "Name") { datasetName = val; } } else if (XMLString::equals(pChld->getNodeName(), X("signature_set"))) { datasetPath.push_back(datasetName); vector<ImportDescriptor*> sub = createImportDescriptors(pTree, datasetPath); datasetPath.pop_back(); descriptors.insert(descriptors.end(), sub.begin(), sub.end()); pTree->parentNode(); } } ImportDescriptorResource pImportDescriptor(datasetName, "SignatureSet", datasetPath); VERIFYRV(pImportDescriptor.get() != NULL, descriptors); DataDescriptor* pDataDescriptor = pImportDescriptor->getDataDescriptor(); VERIFYRV(pDataDescriptor != NULL, descriptors); FactoryResource<SignatureFileDescriptor> pFileDescriptor; VERIFYRV(pFileDescriptor.get() != NULL, descriptors); pFileDescriptor->setFilename(mFilename); datasetPath.push_back(datasetName); string loc = "/" + StringUtilities::join(datasetPath, "/"); datasetPath.pop_back(); pFileDescriptor->setDatasetLocation(loc); pDataDescriptor->setFileDescriptor(pFileDescriptor.get()); pDataDescriptor->setMetadata(pMetadata.get()); descriptors.push_back(pImportDescriptor.release()); return descriptors; }
DataDescriptor* DataDescriptorImp::copy(const string& name, const vector<string>& parent) const { ModelServicesImp* pModel = ModelServicesImp::instance(); if (pModel == NULL) { return NULL; } DataDescriptor* pDescriptor = pModel->createDataDescriptor(name, mType, parent); if (pDescriptor != NULL) { pDescriptor->setClassification(dynamic_cast<const Classification*>(&mClassification)); pDescriptor->setMetadata(dynamic_cast<const DynamicObject*>(&mMetadata)); pDescriptor->setProcessingLocation(mProcessingLocation); pDescriptor->setFileDescriptor(dynamic_cast<FileDescriptor*>(mpFileDescriptor)); } return pDescriptor; }
vector<ImportDescriptor*> ShapeFileImporter::getImportDescriptors(const string& filename) { vector<ImportDescriptor*> descriptors; if (getFileAffinity(filename) != Importer::CAN_NOT_LOAD) { Service<ModelServices> pModel; ImportDescriptor* pImportDescriptor = pModel->createImportDescriptor(filename, "AnnotationElement", NULL); VERIFYRV(pImportDescriptor != NULL, descriptors); DataDescriptor* pDescriptor = pImportDescriptor->getDataDescriptor(); VERIFYRV(pDescriptor != NULL, descriptors); FactoryResource<FileDescriptor> pFileDescriptor; pFileDescriptor->setFilename(filename); pDescriptor->setFileDescriptor(pFileDescriptor.get()); descriptors.push_back(pImportDescriptor); } return descriptors; }