(#573) Added new copy method for PdmObjects

Added copy method to XmlObjectHandle, and use this method from
PasteEclipseCases
This commit is contained in:
Magne Sjaastad
2015-10-23 09:00:17 +02:00
parent 36a0a4a948
commit 5b99439ed8
3 changed files with 30 additions and 13 deletions

View File

@@ -107,10 +107,19 @@ void RicPasteEclipseCasesFeature::addCasesToGridCaseGroup(PdmObjectGroup& object
RimProject* proj = RiaApplication::instance()->project();
CVF_ASSERT(proj);
std::vector<caf::PdmPointer<RimEclipseResultCase> > typedObjects;
objectGroup.createCopyByType(&typedObjects, PdmDefaultObjectFactory::instance());
std::vector<RimEclipseResultCase*> resultCases;
if (typedObjects.size() == 0)
for (size_t i = 0; i < objectGroup.objects.size(); i++)
{
RimEclipseResultCase* eclCase = dynamic_cast<RimEclipseResultCase*>(objectGroup.objects[i]);
if (eclCase)
{
RimEclipseResultCase* eclCaseCopy = dynamic_cast<RimEclipseResultCase*>(eclCase->copyByXmlSerialization(PdmDefaultObjectFactory::instance()));
resultCases.push_back(eclCaseCopy);
}
}
if (resultCases.size() == 0)
{
return;
}
@@ -130,9 +139,9 @@ void RicPasteEclipseCasesFeature::addCasesToGridCaseGroup(PdmObjectGroup& object
std::vector<RimEclipseResultCase*> insertedCases;
// Add cases to case group
for (size_t i = 0; i < typedObjects.size(); i++)
for (size_t i = 0; i < resultCases.size(); i++)
{
RimEclipseResultCase* rimResultReservoir = typedObjects[i];
RimEclipseResultCase* rimResultReservoir = resultCases[i];
proj->assignCaseIdToCase(rimResultReservoir);
@@ -144,19 +153,11 @@ void RicPasteEclipseCasesFeature::addCasesToGridCaseGroup(PdmObjectGroup& object
insertedCases.push_back(rimResultReservoir);
}
// Initialize the new objects
for (size_t i = 0; i < insertedCases.size(); i++)
{
RimEclipseResultCase* rimResultReservoir = insertedCases[i];
rimResultReservoir->initAfterReadRecursively();
}
// Load stuff
for (size_t i = 0; i < insertedCases.size(); i++)
{
RimEclipseResultCase* rimResultReservoir = insertedCases[i];
if (!mainResultCase)
{
rimResultReservoir->openEclipseGridFile();