#pragma warning( push ,0) #include #include #include #include "BaseObject.h" #include "ObjectID.h" // #include "ObjProject.h" // #include "ObjWell.h" // #include "ObjWelllogRound.h" // #include "ObjDiscreteWellLog.h" #pragma warning( pop ) BEGIN_OSGDATAMODEL_NAMESPACE; sObjectClassIDKey::sObjectClassIDKey() { } sObjectClassIDKey::sObjectClassIDKey( QUuid ObjectClassID ) { m_ObjectClassID = ObjectClassID ; } bool sObjectClassIDKey::operator !=( const sObjectClassIDKey& s ) { return m_ObjectClassID != s.m_ObjectClassID; } bool sObjectClassIDKey::operator < ( const sObjectClassIDKey& s ) const { return m_ObjectClassID < s.m_ObjectClassID; } // CBaseObjectImpl::~CBaseObjectImpl() // { // DeleteAllChild(); // } // QString CPaiObjectHelper::GetUniqueChildName(PaiObject *pPaiObject,QString strPreFixName ) // { // if(! pPaiObject->GetObjectByName ( strPreFixName ) ) // return strPreFixName; // return pPaiObject->GetNextChildName(strPreFixName); // } // void CBaseObjectImpl::Init(QUuid classID) // { // m_classTypeID = classID; // } // QUuid CBaseObjectImpl::GetTypeID() const // { // return m_classTypeID; // } // PaiObject *CPaiObjectHelper::GetRoot(PaiObject * pThis) // { // PaiObject *pRoot = pThis; // while( pRoot && pRoot->GetParent() ) // { // pRoot = pRoot->GetParent(); // } // return pRoot; // } // bool CBaseObject::Contains(const QUuid& id) // { // if(this->m_pPaiObject != NULL) // { // return NULL != (m_pPaiObject->GetObject(id)); // } // return false; // } // std::vector CPaiObjectHelper::GetAllSymbolObject( CBaseObject * pOSGObject ) // { // std::vector vAllChildrenandSelf; // std::vector vAllChildren; // CPaiObjectHelper::RecursionGetAllChild( dynamic_cast(pOSGObject),vAllChildrenandSelf); // foreach (PaiObject* pChild,vAllChildrenandSelf) // { // QString t_name = pChild->GetName(); // if ( !(pChild->GetChildrenCount()) ) // { // //判断是否为图像 如果不是则continue // if (t_name.right(4).left(1) != ".") continue; // if( dynamic_cast( pChild ) ) // vAllChildren.push_back(dynamic_cast( pChild )); // } // } // return vAllChildren; // } // CBaseObject * CPaiObjectHelper::GetSubtree( CBaseObject * pThis,QString strRelativeFolderPath ) // { // QStringList folderNamelist = strRelativeFolderPath.split("/"); // CBaseObject * pViewObject= pThis; // foreach ( QString strfolderName, folderNamelist ) // { // pViewObject = dynamic_cast(GetChildByName(dynamic_cast(pViewObject),strfolderName) ); // if( !pViewObject) return NULL; // } // return pViewObject; // } // PaiObject* CPaiObjectHelper::GetChildByName(PaiObject*pObject,QString name) // { // QList lstChildren; // pObject->GetChildren(lstChildren); // foreach(PaiObject * pChildObject, lstChildren) // { // if((pChildObject->GetName()) == name) return pChildObject; // } // return NULL; // } // pai::ios::welllog::DataObject* CBaseObjectImpl::GetDbObject() // { // return NULL; // } // bool CPaiObjectHelper::SerializeDB( CObjectArchive &ar,pai::ios::welllog::DataObject *pDbObject ,pai::objectmodel::PaiObject *pPaiObject ) // { // if( ar.IsStoring() ) // { // //保存到数据库 // long long dataID = 0; // if( pDbObject ) // { // dataID = pDbObject->GetDataID(); // if( pPaiObject ) // { // pDbObject->SetName( pPaiObject->GetName().toStdString() ); // } // if( dataID==0 ) // { // pai::datamodel::CObjDiscreteWellLog *discreteWellLog = dynamic_cast(pPaiObject); // if(discreteWellLog) // { // discreteWellLog->SaveDBObject(); // } // else // { // pDbObject->Save(); // } // }else // { // pDbObject->Update(); // } // dataID = pDbObject->GetDataID(); // } // ar<< dataID; // }else // { // long long dataID(0); // ar >> dataID; // if( pDbObject && dataID > 0) // { // pDbObject->SetDataID( dataID ); // pDbObject->Get( dataID ); // } // } // return true; // } CObjectGenralFactory< sObjectClassIDKey,CBaseObject >& CBaseObject::GetFatory() { static COSGObjectFactory fatory; return fatory; } /*void CPaiObjectHelper::RecursionGetAllChild(PaiObject* pThis,std::vector &vChild) { if( !pThis ) return; vChild.push_back( pThis ) ; QListvChildThis ; pThis->GetChildren(vChildThis); foreach( PaiObject *pChild,vChildThis ) { RecursionGetAllChild(pChild, vChild ); } } void CPaiObjectHelper::RecursionGetAllChildren( PaiObject* pThis,std::vector &vChild ) { std::vector vPaiChild; RecursionGetAllChild( pThis,vPaiChild ); foreach( PaiObject* pObject,vPaiChild ) { if( dynamic_cast( pObject ) ) { vChild.push_back( dynamic_cast( pObject ) ); } } }*/ // void CBaseObjectImpl::Delete() // { // // PaiObject*pPai=GetParent(); // // if(pPai) pPai->RemoveChild(this,false); // // SetParent(NULL); // DeleteAllChild(); // delete this; // } // bool CBaseObjectImpl::Serialize( CObjectArchive &ar ) // { // pai::ios::welllog::DataObject* pDbObject = GetDbObject(); // QFile *pFile = dynamic_cast( ar.GetDevice() ); // bool bToDisk = pFile ? true :false; // if(ar.IsStoring()) // { // BEGIN_WRITE_OBJECT( ar,1 ); // BEGIN_WRITE_BLOCK( ar, 1); // //保存到数据库 // if( bToDisk &&pDbObject) // { // CPaiObjectHelper::SerializeDB( ar,pDbObject,this ); // } // //保存自己的信息 // ar << GetID(); // ar << GetName(); // ar < lstChildren; // GetChildren(lstChildren); // int nChildCout = lstChildren.size(); // ar << nChildCout; // for( long i = 0 ; i< nChildCout;++i ) // { // CBaseObject* pChild = dynamic_cast( lstChildren[i] ); // assert( pChild ); // ar << lstChildren[i] ->GetTypeID().toString(); // pChild->Serialize( ar ); // } // } // END_WRITE_BLOCK( ar, 1 ); // END_WRITE_OBJECT( ar ); // } // else // { // BEGIN_READ_OBJECT( ar,1 ); // BEGIN_READ_BLOCK( 1 ); // if( bToDisk &&pDbObject) // { // CPaiObjectHelper::SerializeDB( ar,pDbObject,this ); // } // //加载自己的信息 // QString strTmp; // ar >> strTmp; // SetID(strTmp ); // QString strName; // ar >> strName; // SetName( strName); // QString gstrName; // ar >>gstrName; // SetGhostName(gstrName); // //加载所有的孩子 // if( bToDisk ) // { // DeleteAllChild(); // int nChildCout(0); // ar >> nChildCout; // for( long i = 0 ; i< nChildCout;++i ) // { // ar >> strTmp; // QUuid classID = QUuid(strTmp); // CBaseObject *pChild = GetFatory().CreateObject( classID ); // PaiObject *pPaiObject = dynamic_cast( pChild ); // CBaseObjectImpl *pChildImp = dynamic_cast( pChild ); // if( pChildImp ) // { // pChildImp->Init( classID ); // } // if( pChild ) // { // pChild->Serialize( ar ); // AddChild( pPaiObject ); // }else // { // assert( false); // ar.SkipObject(); // } // } // } // END_READ_BLOCK( 1 ); // END_READ_OBJECT( ar ); // } // return true; // } CBaseObject *CBaseObject::CloneObject() { // PaiObject *pPaiObject = this->GetPaiObject(); // if( pPaiObject ) // { // CBaseObject *pClone = GetFatory().CreateObject( pPaiObject->GetTypeID() ); // if( pClone ) // { // pClone->CopyFrom( this ); // pClone->GetPaiObject()->SetID(QUuid::createUuid()); // return pClone; // } // } return NULL; } CBaseObject *CBaseObject::GhostObject() { return NULL; // CBaseObjectImpl* result=dynamic_cast(CloneObject()); // if(!result) return NULL; // result->SetGhostName(result->GetPaiObject()->GetName()+OBJ_GHOST_MARK+QString::fromStdString(GenTimeStamp())); // result->SetVisibleOnTree(false); // return result; } void CBaseObject::CopyFrom( CBaseObject *pOSGObjectOther ) { // QByteArray byteArr; // { // CObjectArchive ar( byteArr, eStore ); // pOSGObjectOther->Serialize( ar ); // } // CObjectArchive ar( byteArr, eLoad ); // this->Serialize( ar ); } // void CBaseObject::SetTemplateKey(QVariant TemplateKey) // { // m_TemplateKey=TemplateKey; // } // QVariant CBaseObject::GetTemplateKey() // { // if(m_TemplateKey!=QVariant()) return m_TemplateKey; // PaiObject* paiObject = this->GetPaiObject(); // if(paiObject != NULL) // { // // QUuid val=QUuid::createUuid(); // // m_TemplateKey=QVariant(val); // return QVariant(paiObject->GetTypeID()); // } // return QVariant(); // } // bool CBaseObjectImpl::HasChildren(PaiObject* pChild) // { // QList objectList; // PaiObject::GetChildren(objectList); // if(objectList.size() > 0) // { // foreach(PaiObject* obj,objectList) // { // if(obj == pChild) // { // return true; // } // } // } // return false; // } // bool CBaseObjectImpl::AddChild(PaiObject* pChild, bool mountNow ) // { // CObjProject::AddIDMap( pChild->GetID(),dynamic_cast( pChild) ); // QUuid id=GetTypeID(); // if(id==GetClassID_SingleWellMapFolder() // ||id==GetClassID_WorkflowFolder() // ||id==GetClassID_SingleMethodFolder() // ) // { // if(GetChildrenCount()==0){ // PaiObject *pPai=GetParent(); // CObjProject::RemoveIDMap( dynamic_cast(this ) ); // if(pPai) // pPai->RemoveChild(this,false); // SetVisibleOnTree(true); // CObjProject::AddIDMap( GetID(), dynamic_cast( this)); // pPai=GetParent(); // if(pPai) // pPai->AddChild(this,MountOnTree); // } // } // if(mountNow) return PaiObject::AddChild( pChild,MountOnTree ); // else return PaiObject::AddChild( pChild,MountNoTree ); // } // bool CBaseObjectImpl::InsertChild(int iIndex,PaiObject* pChild) // { // CObjProject::AddIDMap( pChild->GetID(), dynamic_cast( pChild)); // /* // if(pChild&&pChild->GetParent()&&pChild->GetParent()) { // QListlists; // pChild->GetParent()->GetChildren(lists); // if(lists.size()GetParent()->AddChild(pChild); // } // else if(iIndex<1) { // iIndex=0; // return PaiObject::InsertChild( iIndex, pChild ); // } // return true; // } // */ // return PaiObject::InsertChild( iIndex, pChild ); // } // bool CBaseObjectImpl::RemoveChild(PaiObject* pChild, bool bDelete ) // { // CObjProject::RemoveIDMap( dynamic_cast(pChild ) ); // // m_EventAgent.RemoveObjectChild(this, pChild ); // return PaiObject::RemoveChild( pChild,bDelete ); // } // bool CBaseObjectImpl::isExistsName(QString name) // { // QList objs; // if(this->GetParent() != NULL) // { // GetParent()->GetChildren(objs); // } // foreach(PaiObject* obj, objs) // { // if(obj != NULL && obj != this && obj->GetName().compare(name,Qt::CaseInsensitive)==0) // { // return true; // } // } // return false; // } // void CBaseObjectImpl::DeleteAllChild() // { // QList::iterator it = m_children.begin(); // while ( it != m_children.end() ) // { // PaiObject* pChild = (*it); // // m_EventAgent.RemoveObjectChild(this, pChild ); // CObjProject::RemoveIDMap( dynamic_cast( pChild ) ); // pChild->Delete(); // ++it; // } // m_children.clear(); // } // void CBaseObjectImpl::SetVisibleOnTree(bool visible) // { // SetFlagEnable(PaiObject::VisibibleOnTree,visible); // } // CBaseObjectImpl::CBaseObjectImpl() // { // } // bool CBaseObjectImpl::TakeChild(PaiObject* pChild) // { // if( m_children.contains( pChild ) ) // { // // m_EventAgent.RemoveObjectChild( this,pChild ); // m_children.removeAll( pChild ); // return true; // } // return false; // } // int CBaseObjectImpl::GetChildPos(PaiObject* pChild) // { // int o=-1; // for(int i=0;i