X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMEDSImpl%2FSALOMEDSImpl_StudyManager.cxx;h=0cde58ca02f31f526205915feace753d54364b10;hb=9439b391a124cb1734469512a85b64516f90efcf;hp=ebf67aeca7c1caa8739666e4af8b3221db0b6e26;hpb=323c9e0b0e3750872e5e6618e1fe769eb9a77694;p=modules%2Fkernel.git diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.cxx index ebf67aeca..0cde58ca0 100644 --- a/src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.cxx +++ b/src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.cxx @@ -15,7 +15,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // File : SALOMEDSImpl_StudyManager.cxx // Author : Sergey RUIN @@ -23,8 +23,6 @@ #include "SALOMEDSImpl_StudyManager.hxx" -using namespace std; - #include #include #include @@ -52,6 +50,8 @@ using namespace std; #include #include +using namespace std; + IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_StudyManager, MMgt_TShared ) IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_StudyManager, MMgt_TShared ) @@ -153,16 +153,16 @@ Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::Open(const TCollection_Asc } catch (HDFexception) { -#ifndef WNT - char eStr[strlen(aUrl.ToCString())+17]; -#else +//#ifndef WNT +// char eStr[strlen(aUrl.ToCString())+17]; +//#else char *eStr; eStr = new char[strlen(aUrl.ToCString())+17]; -#endif +//#endif sprintf(eStr,"Can't open file %s",aUrl.ToCString()); -#ifdef WNT +//#ifdef WNT delete [] eStr; -#endif +//#endif _errorCode = TCollection_AsciiString(eStr); return NULL; } @@ -195,11 +195,11 @@ Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::Open(const TCollection_Asc } catch (HDFexception) { -#ifndef WNT - char eStr[strlen(aUrl.ToCString())+17]; -#else +//#ifndef WNT +// char eStr[strlen(aUrl.ToCString())+17]; +//#else char *eStr = new char [strlen(aUrl.ToCString())+17]; -#endif +//#endif sprintf(eStr,"Can't open file %s", aUrl.ToCString()); _errorCode = TCollection_AsciiString(eStr); return NULL; @@ -209,7 +209,7 @@ Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::Open(const TCollection_Asc if (isASCII) { Handle(TColStd_HSequenceOfAsciiString) aFilesToRemove = new TColStd_HSequenceOfAsciiString; - aFilesToRemove->Append(aHDFUrl); + aFilesToRemove->Append("hdf_from_ascii.hdf"); SALOMEDSImpl_Tool::RemoveTemporaryFiles(SALOMEDSImpl_Tool::GetDirFromPath(aHDFUrl), aFilesToRemove, true); } @@ -624,7 +624,7 @@ bool SALOMEDSImpl_StudyManager::Impl_SaveAs(const TCollection_AsciiString& aUrl, if (Engine != NULL) { - unsigned char* aStream; + Handle(SALOMEDSImpl_TMPFile) aStream; long length; if (theASCII) aStream = Engine->SaveASCII(sco, @@ -643,7 +643,7 @@ bool SALOMEDSImpl_StudyManager::Impl_SaveAs(const TCollection_AsciiString& aUrl, HDFdataset *hdf_dataset = new HDFdataset("FILE_STREAM", hdf_sco_group, HDF_STRING, aHDFSize, 1); hdf_dataset->CreateOnDisk(); - hdf_dataset->WriteOnDisk(aStream); //Save the stream in the HDF file + hdf_dataset->WriteOnDisk(aStream->Data()); //Save the stream in the HDF file hdf_dataset->CloseOnDisk(); } @@ -663,8 +663,6 @@ bool SALOMEDSImpl_StudyManager::Impl_SaveAs(const TCollection_AsciiString& aUrl, hdf_dataset=0; //will be deleted by hdf_sco_AuxFiles destructor // Creation of the persistance reference attribute Translate_IOR_to_persistentID (sco, Engine, theMultiFile, theASCII); - - if(aStream != NULL) delete [] aStream; } } hdf_sco_group->CloseOnDisk(); @@ -741,6 +739,16 @@ bool SALOMEDSImpl_StudyManager::Impl_SaveAs(const TCollection_AsciiString& aUrl, _errorCode = "HDFexception ! "; return false; } + catch(std::exception& exc) + { + _errorCode = const_cast(exc.what()); + return false; + } + catch(...) + { + _errorCode = "Unknown exception ! "; + return false; + } if (theASCII) { // save file in ASCII format HDFascii::ConvertFromHDFToASCII(aUrl.ToCString(), true); } @@ -892,12 +900,11 @@ bool SALOMEDSImpl_StudyManager::CopyLabel(const Handle(SALOMEDSImpl_Study)& theS Handle(SALOMEDSImpl_SObject) aSO = theSourceStudy->FindObjectID(anEntry.ToCString()); int anObjID; long aLen; - unsigned char* aStream = theEngine->CopyFrom(aSO, anObjID, aLen); + Handle(SALOMEDSImpl_TMPFile) aStream = theEngine->CopyFrom(aSO, anObjID, aLen); TCollection_ExtendedString aResStr(""); for(a = 0; a < aLen; a++) { - aResStr += TCollection_ExtendedString(ToExtCharacter((Standard_Character)aStream[a])); + aResStr += TCollection_ExtendedString(ToExtCharacter(Standard_Character(aStream->Get(a)))); } - if(aStream != NULL) delete [] aStream; SALOMEDSImpl_AttributeInteger::Set(aAuxTargetLabel, anObjID); SALOMEDSImpl_AttributeName::Set(aAuxTargetLabel, aResStr); continue;