1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef adabasui_ADABAS_CREATEDB_HXX 25 #include "AdabasNewDb.hxx" 26 #endif 27 #ifndef adabasui_ADABASNEWDB_HRC 28 #include "AdabasNewDb.hrc" 29 #endif 30 31 #ifndef _VOS_PROCESS_HXX_ 32 #include <vos/process.hxx> 33 #endif 34 #ifndef _OSL_PROCESS_H_ 35 #include <osl/process.h> 36 #endif 37 #ifndef _MSGBOX_HXX //autogen 38 #include <vcl/msgbox.hxx> 39 #endif 40 #ifndef _PASSWD_HXX //autogen 41 #include <sfx2/passwd.hxx> 42 #endif 43 #ifndef _URLOBJ_HXX 44 #include <tools/urlobj.hxx> 45 #endif 46 #ifndef _STREAM_HXX 47 #include <tools/stream.hxx> 48 #endif 49 #ifndef _BIGINT_HXX 50 #include <tools/bigint.hxx> 51 #endif 52 #ifndef _TOOLS_DEBUG_HXX 53 #include <tools/debug.hxx> 54 #endif 55 #ifndef _EXTENSIONS_COMPONENT_MODULE_HXX_ 56 #include "Acomponentmodule.hxx" 57 #endif 58 #ifndef _UNOTOOLS_TEMPFILE_HXX 59 #include <unotools/tempfile.hxx> 60 #endif 61 #ifndef _ADABASUI_RESOURCE_HRC_ 62 #include "adabasui_resource.hrc" 63 #endif 64 #ifndef _UCBHELPER_CONTENT_HXX 65 #include <ucbhelper/content.hxx> 66 #endif 67 #ifndef _SV_WAITOBJ_HXX 68 #include <vcl/waitobj.hxx> 69 #endif 70 #ifndef INCLUDED_SVTOOLS_PATHOPTIONS_HXX 71 #include <unotools/pathoptions.hxx> 72 #endif 73 #ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_ 74 #include <toolkit/unohlp.hxx> 75 #endif 76 #ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUE_HPP_ 77 #include <com/sun/star/beans/PropertyValue.hpp> 78 #endif 79 #ifndef _COMPHELPER_EXTRACT_HXX_ 80 #include <comphelper/extract.hxx> 81 #endif 82 #ifndef _UNOTOOLS_TEMPFILE_HXX 83 #include <unotools/tempfile.hxx> 84 #endif 85 #ifndef _UNOTOOLS_LOCALFILEHELPER_HXX 86 #include <unotools/localfilehelper.hxx> 87 #endif 88 #ifndef _COM_SUN_STAR_SDBC_SQLEXCEPTION_HPP_ 89 #include <com/sun/star/sdbc/SQLException.hpp> 90 #endif 91 #ifndef _UNOTOOLS_UCBHELPER_HXX 92 #include <unotools/ucbhelper.hxx> 93 #endif 94 #ifndef _CONNECTIVITY_DBTOOLS_HXX_ 95 #include <connectivity/dbtools.hxx> 96 #endif 97 #ifndef _DBHELPER_DBEXCEPTION_HXX_ 98 #include <connectivity/dbexception.hxx> 99 #endif 100 #include "adabasuistrings.hrc" 101 #ifndef _THREAD_HXX_ 102 #include <osl/thread.hxx> 103 #endif 104 #ifndef _OSL_FILE_HXX_ 105 #include <osl/file.hxx> 106 #endif 107 108 109 using namespace adabasui; 110 using namespace ucbhelper; 111 using namespace utl; 112 using namespace vos; 113 using namespace ::com::sun::star::uno; 114 using namespace ::com::sun::star::beans; 115 using namespace ::com::sun::star::sdbcx; 116 using namespace ::com::sun::star::sdbc; 117 using namespace ::com::sun::star::ucb; 118 using namespace ::com::sun::star::lang; 119 namespace adabasui 120 { 121 class ODatabaseCreator : public ::osl::Thread 122 { 123 Link m_aTerminateHandler; 124 Sequence< PropertyValue> m_aValues; 125 Reference<XCreateCatalog> m_xCreateCatalog; 126 Reference< XMultiServiceFactory > m_xORB; 127 Window* m_pErrorWindow; 128 public: 129 ODatabaseCreator(const Reference<XCreateCatalog>& _rxCreateCatalog 130 ,Window* _pErrorWindow 131 ,const Reference< XMultiServiceFactory >& _xORB 132 ,const Sequence< PropertyValue>& _rValues) 133 : m_aValues(_rValues) 134 , m_xCreateCatalog(_rxCreateCatalog) 135 , m_xORB(_xORB) 136 , m_pErrorWindow(_pErrorWindow) 137 {} 138 139 void setTerminateHandler(const Link& _aTerminateHandler) { m_aTerminateHandler = _aTerminateHandler; } 140 141 protected: 142 143 /// Working method which should be overridden. 144 virtual void SAL_CALL run(); 145 virtual void SAL_CALL onTerminated(); 146 }; 147 148 void SAL_CALL ODatabaseCreator::run() 149 { 150 try 151 { 152 m_xCreateCatalog->createCatalog(m_aValues); 153 } 154 catch(SQLException& e) 155 { 156 ::dbtools::showError(::dbtools::SQLExceptionInfo(e),VCLUnoHelper::GetInterface(m_pErrorWindow),m_xORB); 157 } 158 catch(Exception&) 159 { 160 OSL_ASSERT(0); 161 // showError(::dbtools::SQLExceptionInfo(e),this,); 162 } 163 } 164 void SAL_CALL ODatabaseCreator::onTerminated() 165 { 166 if ( m_aTerminateHandler.IsSet() ) 167 m_aTerminateHandler.Call(NULL); 168 } 169 } 170 DBG_NAME( OAdabasNewDbDlg ) 171 //======================================================================== 172 OAdabasNewDbDlg::OAdabasNewDbDlg( Window* pParent, 173 const Reference<XCreateCatalog>& _rxCreateCatalog, 174 const Reference< XMultiServiceFactory >& _rxORB, 175 sal_Bool _bRestore) 176 :ModalDialog( pParent, ModuleRes( DLG_ADABAS_NEWDB )) 177 ,m_FT_DATABASENAME( this, ModuleRes( FT_DATABASENAME ) ) 178 ,m_ET_DATABASENAME( this, ModuleRes( ET_DATABASENAME ) ) 179 ,m_FL_USER( this, ModuleRes( FL_USER ) ) 180 ,m_FT_SYSUSR( this, ModuleRes( FT_SYSUSR ) ) 181 ,m_FT_CONUSR( this, ModuleRes( FT_CONUSR ) ) 182 ,m_FT_DOMAIN_USR( this, ModuleRes( FT_DOMAIN_USR ) ) 183 ,m_ET_SYSUSR( this, ModuleRes( ET_SYSUSR ) ) 184 ,m_PB_SYSPWD( this, ModuleRes( PB_SYSPWD ) ) 185 ,m_ET_CONUSR( this, ModuleRes( ET_CONUSR ) ) 186 ,m_PB_CONPWD( this, ModuleRes( PB_CONPWD ) ) 187 ,m_ET_DOMAIN_USR( this, ModuleRes( ET_DOMAIN_USR ) ) 188 ,m_PB_DOMAINPWD( this, ModuleRes( PB_DOMAINPWD ) ) 189 ,m_BMP_CON( this, ModuleRes( BMP_CON ) ) 190 ,m_BMP_SYS( this, ModuleRes( BMP_SYS ) ) 191 ,m_BMP_DOMAIN( this, ModuleRes( BMP_DOMAIN ) ) 192 ,m_FT_RESTORE( this, ModuleRes( FT_RESTORE ) ) 193 ,m_ET_RESTORE( this, ModuleRes( ET_RESTORE ) ) 194 ,m_PB_RESTORE( this, ModuleRes( PB_RESTORE ) ) 195 ,m_FL_DBSETTINGS( this, ModuleRes( FL_DBSETTINGS ) ) 196 ,m_FT_SYSDEVSPACE( this, ModuleRes( FT_SYSDEVSPACE ) ) 197 ,m_FT_TRANSACTIONLOG( this, ModuleRes( FT_TRANSACTIONLOG ) ) 198 ,m_FT_DATADEVSPACE( this, ModuleRes( FT_DATADEVSPACE ) ) 199 ,m_ET_SYSDEVSPACE( this, ModuleRes( ET_SYSDEVSPACE ) ) 200 ,m_PB_SYSDEVSPACE( this, ModuleRes( PB_SYSDEVSPACE ) ) 201 ,m_ET_TRANSACTIONLOG( this, ModuleRes( ET_TRANSACTIONLOG ) ) 202 ,m_PB_TRANSACTIONLOG( this, ModuleRes( PB_TRANSACTIONLOG ) ) 203 ,m_ET_DATADEVSPACE( this, ModuleRes( ET_DATADEVSPACE ) ) 204 ,m_PB_DATADEVSPACE( this, ModuleRes( PB_DATADEVSPACE ) ) 205 ,m_FT_TRANSACTIONLOG_SIZE( this, ModuleRes( FT_TRANSACTIONLOG_SIZE ) ) 206 ,m_NF_TRANSACTIONLOG_SIZE( this, ModuleRes( NF_TRANSACTIONLOG_SIZE ) ) 207 ,m_FT_DATADEVSPACE_SIZE( this, ModuleRes( FT_DATADEVSPACE_SIZE ) ) 208 ,m_NF_DATADEVSPACE_SIZE( this, ModuleRes( NF_DATADEVSPACE_SIZE ) ) 209 ,m_FT_CACHE_SIZE( this, ModuleRes( FT_CACHE_SIZE ) ) 210 ,m_NF_CACHE_SIZE( this, ModuleRes( NF_CACHE_SIZE ) ) 211 ,m_FL_END( this, ModuleRes( FL_END ) ) 212 ,m_PB_OK( this, ModuleRes( PB_OK ) ) 213 ,m_PB_CANCEL( this, ModuleRes( PB_CANCEL ) ) 214 ,m_xCreateCatalog(_rxCreateCatalog) 215 ,m_xORB(_rxORB) 216 ,m_bRestore(_bRestore) 217 ,m_nSetBitmap(0) 218 { 219 DBG_CTOR( OAdabasNewDbDlg, NULL ); 220 FreeResource(); 221 if(m_bRestore) 222 { 223 m_FL_DBSETTINGS.SetPosPixel(m_FL_DBSETTINGS.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 224 m_FT_SYSDEVSPACE.SetPosPixel(m_FT_SYSDEVSPACE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 225 m_FT_TRANSACTIONLOG.SetPosPixel(m_FT_TRANSACTIONLOG.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 226 m_FT_DATADEVSPACE.SetPosPixel(m_FT_DATADEVSPACE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 227 m_ET_SYSDEVSPACE.SetPosPixel(m_ET_SYSDEVSPACE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 228 m_PB_SYSDEVSPACE.SetPosPixel(m_PB_SYSDEVSPACE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 229 m_ET_TRANSACTIONLOG.SetPosPixel(m_ET_TRANSACTIONLOG.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 230 m_PB_TRANSACTIONLOG.SetPosPixel(m_PB_TRANSACTIONLOG.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 231 m_ET_DATADEVSPACE.SetPosPixel(m_ET_DATADEVSPACE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 232 m_PB_DATADEVSPACE.SetPosPixel(m_PB_DATADEVSPACE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 233 m_FT_TRANSACTIONLOG_SIZE.SetPosPixel(m_FT_TRANSACTIONLOG_SIZE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 234 m_NF_TRANSACTIONLOG_SIZE.SetPosPixel(m_NF_TRANSACTIONLOG_SIZE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 235 m_FT_DATADEVSPACE_SIZE.SetPosPixel(m_FT_DATADEVSPACE_SIZE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 236 m_NF_DATADEVSPACE_SIZE.SetPosPixel(m_NF_DATADEVSPACE_SIZE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 237 m_FT_CACHE_SIZE.SetPosPixel(m_FT_CACHE_SIZE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 238 m_NF_CACHE_SIZE.SetPosPixel(m_NF_CACHE_SIZE.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 239 m_PB_OK.SetPosPixel(m_PB_OK.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 240 m_PB_CANCEL.SetPosPixel(m_PB_CANCEL.GetPosPixel()-LogicToPixel( Point(0,14), MAP_APPFONT )); 241 242 Size aSize(GetSizePixel().Width(),GetSizePixel().Height()-LogicToPixel( Size(0,14), MAP_APPFONT ).Height()); 243 SetSizePixel(aSize); 244 245 m_FT_SYSUSR.Hide(); 246 m_FT_DOMAIN_USR.Hide(); 247 m_FL_USER.SetText(ModuleRes(STR_BACKUPFILE_LOAD)); 248 m_PB_SYSPWD.Hide(); 249 m_PB_DOMAINPWD.Hide(); 250 m_ET_SYSUSR.Hide(); 251 m_ET_DOMAIN_USR.Hide(); 252 253 m_ET_SYSUSR.SetText(String::CreateFromAscii("DUMMY")); 254 m_BMP_SYS.Hide(); 255 m_BMP_DOMAIN.Hide(); 256 m_ET_RESTORE.SetModifyHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 257 m_ET_RESTORE.SetLoseFocusHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 258 m_ET_RESTORE.SetMaxTextLen(40); 259 } 260 else 261 { 262 m_FT_RESTORE.Hide(); 263 m_ET_RESTORE.Hide(); 264 m_PB_RESTORE.Hide(); 265 266 m_ET_SYSUSR.SetModifyHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 267 m_ET_CONUSR.SetModifyHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 268 m_ET_DOMAIN_USR.Enable(sal_False); 269 270 // m_ET_SYSUSR.setUpperCase(); 271 // m_ET_CONUSR.setUpperCase(); 272 } 273 274 275 m_ET_SYSDEVSPACE.SetLoseFocusHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 276 m_ET_TRANSACTIONLOG.SetLoseFocusHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 277 m_ET_DATADEVSPACE.SetLoseFocusHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 278 279 m_ET_SYSDEVSPACE.SetMaxTextLen(40); 280 m_ET_TRANSACTIONLOG.SetMaxTextLen(40); 281 m_ET_DATADEVSPACE.SetMaxTextLen(40); 282 283 m_NF_TRANSACTIONLOG_SIZE.SetModifyHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 284 m_NF_DATADEVSPACE_SIZE.SetModifyHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 285 m_NF_CACHE_SIZE.SetModifyHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 286 287 m_NF_TRANSACTIONLOG_SIZE.SetMin(10); 288 m_NF_DATADEVSPACE_SIZE.SetMin(10); 289 m_NF_CACHE_SIZE.SetMin(4); 290 291 m_NF_TRANSACTIONLOG_SIZE.SetMax(LONG_MAX); 292 m_NF_DATADEVSPACE_SIZE.SetMax(LONG_MAX); 293 m_NF_CACHE_SIZE.SetMax(LONG_MAX); 294 295 m_NF_TRANSACTIONLOG_SIZE.SetValue(20); 296 m_NF_DATADEVSPACE_SIZE.SetValue(20); 297 m_NF_CACHE_SIZE.SetValue(4); 298 299 m_NF_TRANSACTIONLOG_SIZE.SetDecimalDigits(0); 300 m_NF_DATADEVSPACE_SIZE.SetDecimalDigits(0); 301 m_NF_CACHE_SIZE.SetDecimalDigits(0); 302 303 m_ET_DATABASENAME.SetMaxTextLen( 8 ); //98292 304 305 m_PB_CONPWD.SetClickHdl( LINK(this,OAdabasNewDbDlg,PwdClickHdl)); 306 m_PB_SYSPWD.SetClickHdl( LINK(this,OAdabasNewDbDlg,PwdClickHdl)); 307 m_PB_DOMAINPWD.SetClickHdl( LINK(this,OAdabasNewDbDlg,PwdClickHdl)); 308 309 m_PB_RESTORE.SetClickHdl( LINK(this,OAdabasNewDbDlg,LoadButtonClickHdl)); 310 311 m_PB_SYSDEVSPACE.SetClickHdl( LINK(this,OAdabasNewDbDlg,ButtonClickHdl)); 312 m_PB_TRANSACTIONLOG.SetClickHdl( LINK(this,OAdabasNewDbDlg,ButtonClickHdl)); 313 m_PB_DATADEVSPACE.SetClickHdl( LINK(this,OAdabasNewDbDlg,ButtonClickHdl)); 314 315 m_BMP_CON.SetImage( ModuleRes(UNCHECK_RED) ); 316 m_BMP_SYS.SetImage( ModuleRes(UNCHECK_RED) ); 317 m_BMP_DOMAIN.SetImage( ModuleRes(UNCHECK_RED) ); 318 319 static String s_sRoot(RTL_CONSTASCII_USTRINGPARAM("DBROOT")); 320 static String s_sConfig(RTL_CONSTASCII_USTRINGPARAM("DBCONFIG")); 321 static String s_sWork(RTL_CONSTASCII_USTRINGPARAM("DBWORK")); 322 323 sal_Bool bError = fillEnvironmentVariable(s_sWork,m_sDbWork); 324 if ( bError || !m_sDbWork.Len() ) 325 bError = fillEnvironmentVariable(s_sRoot,m_sDbWork); 326 327 bError = fillEnvironmentVariable(s_sConfig,m_sDbConfig); 328 if ( bError || !m_sDbConfig.Len() ) 329 bError = fillEnvironmentVariable(s_sRoot,m_sDbConfig); 330 331 if ( m_sDbConfig.Len() && m_sDbWork.Len() ) 332 { 333 m_sDbConfig.AppendAscii("/"); 334 m_sDbWork.AppendAscii("/"); 335 336 String sDefaultName,sExt; 337 sDefaultName.AssignAscii("MYDB"); 338 String sConfig = m_sDbConfig; 339 sConfig.AppendAscii("config"); 340 TempFile aDefaultDatabase(sDefaultName,&sExt,&sConfig); 341 aDefaultDatabase.EnableKillingFile(); 342 INetURLObject aURL(aDefaultDatabase.GetURL()); 343 344 m_ET_DATABASENAME.SetText(aURL.GetName()); 345 m_DBName = m_ET_DATABASENAME.GetText(); 346 347 // create temp names for my files 348 // here we need only a name the creation is done by the driver 349 // so we delete the files after we get a valid name 350 // with this we avoiding to mention anything when the user presses cancel 351 352 String aSysExt; 353 sal_Bool bValid = sal_True; 354 { 355 aSysExt.AssignAscii(".sys"); 356 ::utl::TempFile aTmpFile(m_ET_DATABASENAME.GetText(),&aSysExt,&m_sDbWork); 357 aTmpFile.EnableKillingFile(); 358 bValid = aTmpFile.IsValid(); 359 if(bValid) 360 LocalFileHelper::ConvertURLToPhysicalName(aTmpFile.GetURL(),m_SYSDEV_File); 361 } 362 { 363 aSysExt.AssignAscii(".trs"); 364 ::utl::TempFile aTmpFile(m_ET_DATABASENAME.GetText(),&aSysExt,&m_sDbWork); 365 aTmpFile.EnableKillingFile(); 366 bValid = !bValid || aTmpFile.IsValid(); 367 if(aTmpFile.IsValid()) 368 LocalFileHelper::ConvertURLToPhysicalName(aTmpFile.GetURL(),m_TRANSDEV_File); 369 } 370 { 371 aSysExt.AssignAscii(".dat"); 372 ::utl::TempFile aTmpFile(m_ET_DATABASENAME.GetText(),&aSysExt,&m_sDbWork); 373 aTmpFile.EnableKillingFile(); 374 bValid = !bValid || aTmpFile.IsValid(); 375 if(aTmpFile.IsValid()) 376 LocalFileHelper::ConvertURLToPhysicalName(aTmpFile.GetURL(),m_DATADEV_File); 377 } 378 if(!bValid) // we found a file which isn't valid so we report an error message 379 PostUserEvent(LINK(this, OAdabasNewDbDlg, OnNoAccessRights)); 380 381 } 382 383 if(m_SYSDEV_File.Len() < 41 && m_TRANSDEV_File.Len() < 41 && m_DATADEV_File.Len() < 41) 384 { 385 m_ET_SYSDEVSPACE.SetText(m_SYSDEV_File ); 386 m_ET_TRANSACTIONLOG.SetText(m_TRANSDEV_File); 387 m_ET_DATADEVSPACE.SetText(m_DATADEV_File); 388 } 389 else 390 { 391 m_SYSDEV_File = m_TRANSDEV_File = m_DATADEV_File = String(); 392 PostUserEvent(LINK(this, OAdabasNewDbDlg, OnNoDefaultPath)); 393 } 394 395 m_ET_CONUSR.SetText(String::CreateFromAscii("CONTROL")); 396 397 m_PB_OK.SetClickHdl(LINK(this,OAdabasNewDbDlg,ImplOKHdl)); 398 m_PB_OK.Enable(sal_False); 399 400 m_ET_DATABASENAME.SetModifyHdl( LINK(this,OAdabasNewDbDlg,LoseFocusHdl)); 401 402 } 403 // ----------------------------------------------------------------------- 404 OAdabasNewDbDlg::~OAdabasNewDbDlg() 405 { 406 DBG_DTOR( OAdabasNewDbDlg, NULL ); 407 } 408 //------------------------------------------------------------------ 409 IMPL_LINK(OAdabasNewDbDlg, OnError, void*, /*_pArg*/) 410 { 411 String sErrorMsg(ModuleRes(STR_ERROR_IN_ADABAS_INSTALLATION)); 412 ErrorBox(this, WB_OK, sErrorMsg).Execute(); 413 EndDialog(RET_CANCEL); 414 return 0L; 415 } 416 //------------------------------------------------------------------ 417 IMPL_LINK(OAdabasNewDbDlg, OnNoDefaultPath, void*, /*_pArg*/) 418 { 419 String sErrorMsg(ModuleRes(STR_ADABAS_NO_DEFAULTNAME)); 420 ErrorBox(this, WB_OK, sErrorMsg).Execute(); 421 return 0L; 422 } 423 //------------------------------------------------------------------ 424 IMPL_LINK(OAdabasNewDbDlg, OnNoAccessRights, void*, /*_pArg*/) 425 { 426 String sErrorMsg(ModuleRes(STR_ADABAS_NO_ACCESSRIGHTS)); 427 ErrorBox(this, WB_OK, sErrorMsg).Execute(); 428 return 0L; 429 } 430 431 // ----------------------------------------------------------------------- 432 IMPL_LINK( OAdabasNewDbDlg, ImplOKHdl, OKButton*, /*EMPTYARG*/ ) 433 { 434 m_SYSDEV_File = m_ET_SYSDEVSPACE.GetText(); 435 m_TRANSDEV_File = m_ET_TRANSACTIONLOG.GetText(); 436 m_DATADEV_File = m_ET_DATADEVSPACE.GetText(); 437 438 m_Backup_File = m_ET_RESTORE.GetText(); 439 if(m_bRestore) 440 { 441 INetURLObject aURL; 442 aURL.SetSmartProtocol(INET_PROT_FILE); 443 aURL.SetURL(m_Backup_File); 444 Content aContent(aURL.GetURLNoPass(),Reference<XCommandEnvironment>()); 445 try 446 { 447 if(!aContent.isDocument()) 448 { 449 String aString1 = String(ModuleRes(STR_ADABAS_NO_BACKUP_FILE)); 450 String aString2 = String(ModuleRes(STR_STAT_WARNING)); 451 SQLException aSql(aString1,NULL,aString2,1000,Any()); 452 return 0; 453 } 454 455 } 456 catch(Exception&) 457 { 458 String aString1 = String(ModuleRes(STR_ADABAS_NO_BACKUP_FILE)); 459 String aString2 = String(ModuleRes(STR_STAT_WARNING)); 460 SQLException aSql(aString1,NULL,aString2,1000,Any()); 461 throw aSql; 462 } 463 if(m_Backup_File.Len() > 40) 464 { 465 InfoBox aInfo(this,ModuleRes(INFO_STR_MAX_FILE_LENGTH)); 466 String aMsg(aInfo.GetMessText()); 467 aMsg.SearchAndReplace(String::CreateFromAscii("\'#\'"),String::CreateFromAscii("40")); 468 aInfo.SetMessText(aMsg); 469 aInfo.Execute(); 470 return 0; 471 } 472 } 473 else if(m_SYSDEV_File.Len() > 40 || m_TRANSDEV_File.Len() > 40 || m_DATADEV_File.Len() > 40) 474 { 475 InfoBox aInfo(this,ModuleRes(INFO_STR_MAX_FILE_LENGTH)); 476 String aMsg(aInfo.GetMessText()); 477 aMsg.SearchAndReplace(String::CreateFromAscii("\'#\'"),String::CreateFromAscii("40")); 478 aInfo.SetMessText(aMsg); 479 aInfo.Execute(); 480 return 0; 481 } 482 483 484 sal_Bool bOk = sal_False; 485 486 { 487 // we need url 488 String sTemp; 489 bOk = LocalFileHelper::ConvertPhysicalNameToURL(m_DATADEV_File,sTemp); 490 m_DATADEV_File = sTemp; 491 sTemp = String(); 492 bOk = LocalFileHelper::ConvertPhysicalNameToURL(m_SYSDEV_File,sTemp); 493 m_SYSDEV_File = sTemp; 494 sTemp = String(); 495 bOk = LocalFileHelper::ConvertPhysicalNameToURL(m_TRANSDEV_File,sTemp); 496 m_TRANSDEV_File = sTemp; 497 } 498 String aErrorMessage = String(ModuleRes(STR_DEVSPACE_NO_FILE)); 499 if(!m_SYSDEV_File.Len()) 500 aErrorMessage.SearchAndReplace(String::CreateFromAscii("$name$"),String::CreateFromAscii("SYSDEVSPACE")); 501 else if(!m_TRANSDEV_File.Len()) 502 aErrorMessage.SearchAndReplace(String::CreateFromAscii("$name$"),String::CreateFromAscii("TRANSACTIONLOG")); 503 else if(!m_DATADEV_File.Len()) 504 aErrorMessage.SearchAndReplace(String::CreateFromAscii("$name$"),String::CreateFromAscii("DATDEVSPACE")); 505 else if(m_ET_SYSUSR.GetText() == m_ET_CONUSR.GetText()) 506 aErrorMessage = String(ModuleRes(STR_NO_SAME_USER)); 507 else 508 bOk = sal_True; 509 510 511 if (!bOk) 512 { 513 ErrorBox(this, WB_OK, aErrorMessage).Execute(); 514 return sal_False; 515 } 516 517 sal_Int32 nPos = 0; 518 Sequence< PropertyValue> aCreateArgs(m_bRestore ? 14 : 12); 519 aCreateArgs[nPos].Name = PROPERTY_CONTROL_USER; 520 aCreateArgs[nPos++].Value <<= ::rtl::OUString(m_ET_CONUSR.GetText().ToUpperAscii()); 521 aCreateArgs[nPos].Name = PROPERTY_CONTROL_PASSWORD; 522 aCreateArgs[nPos++].Value <<= ::rtl::OUString(m_ConPwd); 523 aCreateArgs[nPos].Name = PROPERTY_USER; 524 aCreateArgs[nPos++].Value <<= ::rtl::OUString(m_ET_SYSUSR.GetText().ToUpperAscii()); 525 aCreateArgs[nPos].Name = PROPERTY_PASSWORD; 526 aCreateArgs[nPos++].Value <<= ::rtl::OUString(m_SysPwd); 527 aCreateArgs[nPos].Name = PROPERTY_DOMAINPASSWORD; 528 aCreateArgs[nPos++].Value <<= ::rtl::OUString(m_DomainPwd); 529 aCreateArgs[nPos].Name = PROPERTY_CACHESIZE; 530 aCreateArgs[nPos++].Value <<= ::rtl::OUString::valueOf(sal_Int32(m_NF_CACHE_SIZE.GetValue()*256)); 531 aCreateArgs[nPos].Name = PROPERTY_DATABASENAME; 532 aCreateArgs[nPos++].Value <<= ::rtl::OUString(m_ET_DATABASENAME.GetText().ToUpperAscii()); 533 aCreateArgs[nPos].Name = PROPERTY_DATADEVSPACE; 534 aCreateArgs[nPos++].Value <<= ::rtl::OUString(m_DATADEV_File); 535 aCreateArgs[nPos].Name = PROPERTY_SYSDEVSPACE; 536 aCreateArgs[nPos++].Value <<= ::rtl::OUString(m_SYSDEV_File); 537 aCreateArgs[nPos].Name = PROPERTY_TRANSACTION_LOG; 538 aCreateArgs[nPos++].Value <<= ::rtl::OUString(m_TRANSDEV_File); 539 aCreateArgs[nPos].Name = PROPERTY_DATADEVSIZE; 540 aCreateArgs[nPos++].Value <<= sal_Int32(m_NF_DATADEVSPACE_SIZE.GetValue()*256); 541 aCreateArgs[nPos].Name = PROPERTY_LOGDEVSIZE; 542 aCreateArgs[nPos++].Value <<= sal_Int32(m_NF_TRANSACTIONLOG_SIZE.GetValue()*256); 543 544 if(m_bRestore) 545 { 546 aCreateArgs[nPos].Name = PROPERTY_RESTOREDATABASE; 547 aCreateArgs[nPos++].Value <<= ::cppu::bool2any(sal_True); 548 aCreateArgs[nPos].Name = PROPERTY_BACKUPNAME; 549 aCreateArgs[nPos++].Value <<= ::rtl::OUString(m_Backup_File); 550 } 551 552 Disable(); 553 554 m_aCreatorWait = ::std::auto_ptr<WaitObject>(new WaitObject(this)); 555 m_aCreatorThread = ::std::auto_ptr<ODatabaseCreator>(new ODatabaseCreator(m_xCreateCatalog,this,m_xORB,aCreateArgs)); 556 m_aCreatorThread->setTerminateHandler(LINK(this,OAdabasNewDbDlg,TerminateHdl)); 557 m_aCreatorThread->create(); 558 559 return sal_True; 560 } 561 //------------------------------------------------------------------------- 562 IMPL_LINK( OAdabasNewDbDlg, TerminateHdl, void*, /*NOTUSABLE*/ ) 563 { 564 EndDialog(RET_OK); 565 return 0; 566 } 567 //------------------------------------------------------------------------ 568 IMPL_LINK( OAdabasNewDbDlg, LoseFocusHdl, Edit *, pEdit ) 569 { 570 if(&m_ET_SYSDEVSPACE == pEdit) 571 m_SYSDEV_File = pEdit->GetText(); 572 else if(&m_ET_TRANSACTIONLOG == pEdit) 573 m_TRANSDEV_File = pEdit->GetText(); 574 else if(&m_ET_DATADEVSPACE == pEdit) 575 m_DATADEV_File = pEdit->GetText(); 576 else if(&m_ET_RESTORE == pEdit) 577 m_Backup_File = pEdit->GetText(); 578 else if(&m_ET_DATABASENAME == pEdit) 579 {// check if the new dbname already exists 580 String sNewDbName = pEdit->GetText(); 581 String sConfig = m_sDbConfig; 582 sConfig.AppendAscii("config/"); 583 sConfig += sNewDbName; 584 if(UCBContentHelper::IsDocument(sConfig)) 585 { 586 String sErrorMessage = String(ModuleRes(STR_ADABAS_DB_EXISTS)); 587 ErrorBox(this, WB_OK, sErrorMessage).Execute(); 588 m_DBName.Erase(); 589 } 590 else if ( m_DBName.SearchAscii(" ") != STRING_NOTFOUND ) 591 { 592 String sErrorMessage = String(ModuleRes(STR_ADABAS_DB_EXISTS)); 593 ErrorBox(this, WB_OK, sErrorMessage).Execute(); 594 m_DBName = m_DBName.GetToken(0,' '); 595 } 596 else 597 m_DBName = sNewDbName; 598 } 599 600 CheckBitmaps(); 601 return 0; 602 } 603 //------------------------------------------------------------------------ 604 IMPL_LINK( OAdabasNewDbDlg, LoadButtonClickHdl, Button *, /*pButton*/ ) 605 { 606 ::sfx2::FileDialogHelper aLoad(WB_3DLOOK | WB_STDMODAL | WB_OPEN); 607 if(!m_Backup_File.Len()) 608 aLoad.SetDisplayDirectory(SvtPathOptions().GetWorkPath()); 609 else 610 aLoad.SetDisplayDirectory(m_Backup_File); 611 if (aLoad.Execute()) 612 { 613 INetURLObject aUrl(aLoad.GetPath()); 614 m_Backup_File = aUrl.PathToFileName(); 615 if(m_Backup_File.Len() > 40) 616 { 617 InfoBox aInfo(this,ModuleRes(INFO_STR_MAX_FILE_LENGTH)); 618 String aMsg(aInfo.GetMessText()); 619 aMsg.SearchAndReplace(String::CreateFromAscii("\'#\'"),String::CreateFromAscii("40")); 620 aInfo.SetMessText(aMsg); 621 } 622 m_ET_RESTORE.SetText(m_Backup_File); 623 } 624 CheckBitmaps(); 625 return 0; 626 } 627 //------------------------------------------------------------------------ 628 IMPL_LINK( OAdabasNewDbDlg, ButtonClickHdl, Button *, pButton ) 629 { 630 WinBits nBits(WB_3DLOOK|WB_STDMODAL|WB_SAVEAS); 631 ::sfx2::FileDialogHelper aFileDlg( static_cast<sal_uInt32>(nBits) ); // new FileDialog( this, nBits ); 632 633 String aPath; 634 if(pButton == &m_PB_SYSDEVSPACE) 635 aPath = m_SYSDEV_File; 636 else if(pButton == &m_PB_TRANSACTIONLOG) 637 aPath = m_TRANSDEV_File; 638 else if(pButton == &m_PB_DATADEVSPACE) 639 aPath = m_DATADEV_File; 640 641 String sUrl; 642 ::utl::LocalFileHelper::ConvertPhysicalNameToURL(aPath,sUrl); 643 aFileDlg.SetDisplayDirectory(sUrl); 644 645 646 647 if (aFileDlg.Execute() == ERRCODE_NONE) 648 { 649 INetURLObject aUrl(aFileDlg.GetPath()); 650 if(pButton == &m_PB_SYSDEVSPACE) 651 { 652 m_SYSDEV_File = aUrl.PathToFileName(); 653 if(m_SYSDEV_File.Len() > 40) 654 { 655 InfoBox aInfo(this,ModuleRes(INFO_STR_MAX_FILE_LENGTH)); 656 String aMsg(aInfo.GetMessText()); 657 aMsg.SearchAndReplace(String::CreateFromAscii("\'#\'"),String::CreateFromAscii("40")); 658 aInfo.SetMessText(aMsg); 659 aInfo.Execute(); 660 return 0; 661 } 662 m_ET_SYSDEVSPACE.SetText(aUrl.PathToFileName()); 663 } 664 else if(pButton == &m_PB_TRANSACTIONLOG) 665 { 666 m_TRANSDEV_File = aUrl.PathToFileName(); 667 if(m_TRANSDEV_File.Len() > 40) 668 { 669 InfoBox aInfo(this,ModuleRes(INFO_STR_MAX_FILE_LENGTH)); 670 String aMsg(aInfo.GetMessText()); 671 aMsg.SearchAndReplace(String::CreateFromAscii("\'#\'"),String::CreateFromAscii("40")); 672 aInfo.SetMessText(aMsg); 673 aInfo.Execute(); 674 return 0; 675 } 676 m_ET_TRANSACTIONLOG.SetText(aUrl.PathToFileName()); 677 } 678 else if(pButton == &m_PB_DATADEVSPACE) 679 { 680 m_DATADEV_File = aUrl.PathToFileName(); 681 if(m_DATADEV_File.Len() > 40) 682 { 683 InfoBox aInfo(this,ModuleRes(INFO_STR_MAX_FILE_LENGTH)); 684 String aMsg(aInfo.GetMessText()); 685 aMsg.SearchAndReplace(String::CreateFromAscii("\'#\'"),String::CreateFromAscii("40")); 686 aInfo.SetMessText(aMsg); 687 aInfo.Execute(); 688 return 0; 689 } 690 m_ET_DATADEVSPACE.SetText(aUrl.PathToFileName()); 691 } 692 } 693 694 CheckBitmaps(); 695 return 0; 696 } 697 //------------------------------------------------------------------------ 698 IMPL_LINK( OAdabasNewDbDlg, PwdClickHdl, Button *, pButton ) 699 { 700 SfxPasswordDialog aDlg(this); 701 aDlg.ShowExtras(SHOWEXTRAS_CONFIRM); 702 if(aDlg.Execute()) 703 { 704 String sPwd = aDlg.GetPassword().ToUpperAscii(); 705 // no space in password allowed 706 if ( sPwd.GetTokenCount(' ') == 1 ) 707 { 708 if(pButton == &m_PB_CONPWD) 709 { 710 m_ConPwd = sPwd; 711 m_nSetBitmap &=~2; 712 } 713 else if(pButton == &m_PB_SYSPWD) 714 { 715 m_SysPwd = sPwd; 716 if(!m_DomainPwd.Len()) 717 { 718 m_nSetBitmap = 1; 719 m_DomainPwd = m_SysPwd; 720 } 721 if(!m_ConPwd.Len()) 722 { 723 m_nSetBitmap |= 2; 724 m_ConPwd = m_SysPwd; 725 } 726 727 } 728 else if(pButton == &m_PB_DOMAINPWD) 729 { 730 m_DomainPwd = sPwd; 731 m_nSetBitmap &=~1; 732 } 733 } 734 else 735 { 736 String sErrorMsg(ModuleRes(STR_ADABAS_PASSWORD_ILLEGAL)); 737 ErrorBox(this, WB_OK, sErrorMsg).Execute(); 738 } 739 } 740 CheckBitmaps(); 741 return 0; 742 } 743 //------------------------------------------------------------------------ 744 void OAdabasNewDbDlg::CheckBitmaps() 745 { 746 sal_Int16 i=0; 747 if(m_ConPwd.Len() && m_ET_CONUSR.GetText().Len()) 748 i++,m_BMP_CON.SetImage(ModuleRes(((m_nSetBitmap & 2) == 2) ? DEFAULT_BLUE : CHECK_GREEN)); 749 else 750 m_BMP_CON.SetImage(ModuleRes(UNCHECK_RED)); 751 752 if(!m_bRestore) 753 { 754 if(m_SysPwd.Len() && m_ET_SYSUSR.GetText().Len()) 755 i++,m_BMP_SYS.SetImage(ModuleRes(CHECK_GREEN)); 756 else 757 m_BMP_SYS.SetImage(ModuleRes(UNCHECK_RED)); 758 759 if(m_DomainPwd.Len() ) 760 i++,m_BMP_DOMAIN.SetImage(ModuleRes(((m_nSetBitmap & 1) == 1) ? DEFAULT_BLUE : CHECK_GREEN)); 761 else 762 m_BMP_DOMAIN.SetImage(ModuleRes(UNCHECK_RED)); 763 } 764 else if(m_Backup_File.Len()) 765 i+=2; 766 767 if(m_ET_SYSDEVSPACE.GetText().Len() && m_ET_TRANSACTIONLOG.GetText().Len() && m_ET_DATADEVSPACE.GetText().Len() && 768 m_ET_SYSDEVSPACE.GetText() != m_ET_TRANSACTIONLOG.GetText() && m_ET_SYSDEVSPACE.GetText() != m_ET_DATADEVSPACE.GetText() && 769 m_ET_DATADEVSPACE.GetText() != m_ET_TRANSACTIONLOG.GetText()) 770 i++; 771 772 if(m_DBName.Len()) 773 i++; 774 775 m_PB_OK.Enable(i == 5); 776 } 777 // ----------------------------------------------------------------------------- 778 sal_Bool OAdabasNewDbDlg::fillEnvironmentVariable(const ::rtl::OUString& _sVariableName,String& _rsValue) 779 { 780 rtl_uString* pDbVar = NULL; 781 sal_Bool bError = sal_False; 782 if(osl_getEnvironment(_sVariableName.pData,&pDbVar) == osl_Process_E_None && pDbVar) 783 { 784 _rsValue = pDbVar; 785 String sTemp; 786 LocalFileHelper::ConvertPhysicalNameToURL(_rsValue,sTemp); 787 _rsValue = sTemp; 788 rtl_uString_release(pDbVar); 789 pDbVar = NULL; 790 791 // ensure dir exists 792 osl::FileBase::RC rc = osl::Directory::createPath(_rsValue); 793 if(rc != osl::FileBase::E_None && rc != osl::FileBase::E_EXIST) 794 { 795 bError = sal_True; 796 PostUserEvent(LINK(this, OAdabasNewDbDlg, OnError)); 797 } 798 } 799 return bError; 800 } 801 // ----------------------------------------------------------------------------- 802