// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void MoveData::dataCheck() { setErrorCondition(0); DataArrayPath amSrcPath = getAttributeMatrixSource(); DataArrayPath amDestPath = getAttributeMatrixDestination(); DataArrayPath daSrcPath = getDataArraySource(); if (getWhatToMove() == k_MoveAttributeMatrix) { DataContainer::Pointer amDestDataContainer = getDataContainerArray()->getPrereqDataContainer<AbstractFilter>(this, getDataContainerDestination()); DataContainer::Pointer amSrcDataContainer = getDataContainerArray()->getPrereqDataContainer<AbstractFilter>(this, amSrcPath.getDataContainerName()); AttributeMatrix::Pointer amSrcAttributeMatrix = getDataContainerArray()->getPrereqAttributeMatrixFromPath<AbstractFilter>(this, amSrcPath, -301); if(getErrorCondition() < 0) { return; } if (amSrcDataContainer->getName() == amDestDataContainer->getName()) { QString ss = QObject::tr("The source and destination Data Container are the same. Is this what you meant to do?"); notifyWarningMessage(getHumanLabel(), ss, getErrorCondition()); return; } amDestDataContainer->addAttributeMatrix(amSrcAttributeMatrix->getName(), amSrcAttributeMatrix); amSrcDataContainer->removeAttributeMatrix(amSrcAttributeMatrix->getName()); } else if (getWhatToMove() == k_MoveDataArray ) { AttributeMatrix::Pointer daSrcAttributeMatrix = getDataContainerArray()->getPrereqAttributeMatrixFromPath<AbstractFilter>(this, daSrcPath, -301); AttributeMatrix::Pointer daDestAttributeMatrix = getDataContainerArray()->getPrereqAttributeMatrixFromPath<AbstractFilter>(this, amDestPath, -301); IDataArray::Pointer daSrcDataArray = getDataContainerArray()->getPrereqIDataArrayFromPath<IDataArray, AbstractFilter>(this, daSrcPath); if(getErrorCondition() < 0) { return; } if (daDestAttributeMatrix->getNumTuples() != daSrcDataArray->getNumberOfTuples()) { setErrorCondition(-11019); QString ss = QObject::tr("The number of tuples of source Attribute Array (%1) and destination Attribute Matrix (%2) do not match").arg(daSrcDataArray->getNumberOfTuples()).arg(daDestAttributeMatrix->getNumTuples()); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); return; } else if (amSrcPath == amDestPath) { QString ss = QObject::tr("The source and destination Attribute Matrix are the same. Is this what you meant to do?"); notifyWarningMessage(getHumanLabel(), ss, getErrorCondition()); return; } daDestAttributeMatrix->addAttributeArray(daSrcPath.getDataArrayName(), daSrcDataArray); daSrcAttributeMatrix->removeAttributeArray(daSrcPath.getDataArrayName()); } else { setErrorCondition(-11020); QString ss = QObject::tr("Neither an Attribute Matrix nor an Attribute Array was selected to be moved"); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); return; } }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- DataContainerArrayProxy::DataContainerArrayProxy(DataContainerArray* dca) { if(NULL == dca) { return; } QList<DataContainer::Pointer> containers = dca->getDataContainers(); for(int i = 0; i < containers.size(); i++) // Loop on each Data Container { DataContainer::Pointer container = containers.at(i); DataContainerProxy dcProxy(container->getName(), Qt::Checked); // Create a new DataContainerProxy // Now loop over each AttributeMatrix in the data container that was selected DataContainer::AttributeMatrixMap_t attrMats = container->getAttributeMatrices(); QMapIterator<QString, AttributeMatrix::Pointer> iter(attrMats); while(iter.hasNext()) { iter.next(); QString amName = iter.key(); AttributeMatrix::Pointer attrMat = iter.value(); AttributeMatrixProxy amProxy(amName, Qt::Checked, attrMat->getType()); QList<QString> attrArrayNames = attrMat->getAttributeArrayNames(); QListIterator<QString> attrArrayNamesIter(attrArrayNames); while(attrArrayNamesIter.hasNext()) { QString aaName = attrArrayNamesIter.next(); QString daPath = container->getName() + "/" + amName + "/"; IDataArray::Pointer attrArray = attrMat->getAttributeArray(aaName); DataArrayProxy daProxy(daPath, aaName, Qt::Checked, attrArray->getTypeAsString(), attrArray->getClassVersion() ); amProxy.dataArrays.insert(aaName, daProxy); } dcProxy.attributeMatricies.insert(amName, amProxy); // Add the new AttributeMatrix to the DataContainerProxy } dataContainers.insert(dcProxy.name, dcProxy); } }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void DataContainerReader::dataCheck() { // Sync the file proxy and cached proxy if the time stamps are different QFileInfo fi(getInputFile()); if (getInputFile() == getLastFileRead() && getLastRead() < fi.lastModified()) { syncProxies(); } QString ss; if (getInputFile().isEmpty() == true) { ss = QObject::tr("The input file must be set"); setErrorCondition(-387); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } else if (fi.exists() == false) { ss = QObject::tr("The input file does not exist"); setErrorCondition(-388); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if(getErrorCondition()) { // something has gone wrong and errors were logged alread so just return return; } DataContainerArray::Pointer dca = getDataContainerArray(); // Create a new DataContainerArray to read the file data into DataContainerArray::Pointer tempDCA = DataContainerArray::New(); // Read either the structure or all the data depending on the preflight status readData(getInPreflight(), m_InputFileDataContainerArrayProxy, tempDCA); QList<DataContainer::Pointer>& tempContainers = tempDCA->getDataContainers(); QListIterator<DataContainer::Pointer> iter(tempContainers); while (iter.hasNext()) { DataContainer::Pointer container = iter.next(); if (getOverwriteExistingDataContainers() == true ) { if (dca->doesDataContainerExist(container->getName()) == true) { dca->removeDataContainer(container->getName()); } dca->addDataContainer(container); } else { if (dca->doesDataContainerExist(container->getName()) == true) { ss = QObject::tr("The input file has a DataContainer with a name (%1) that already exists in the current DataContainerArray structure").arg(container->getName()); setErrorCondition(-390); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } else { dca->addDataContainer(container); } } } QMap<QString, IDataContainerBundle::Pointer> bundles = tempDCA->getDataContainerBundles(); dca->setDataContainerBundles(bundles); }