/////////////////////////////////////////////////////////////////////////////// // // Copyright (c) Microsoft Corporation // // SYNOPSIS // // Defines the class DatabaseNode. // /////////////////////////////////////////////////////////////////////////////// #include "Precompiled.h" #include "dbnode.h" #include "dbpage.h" #include "dbconfig.h" #include "logcomp.h" #include "logcompd.h" #include "snapinnode.cpp" DatabaseNode::DatabaseNode(CSnapInItem* parent) : LoggingMethod(IAS_PROVIDER_MICROSOFT_DB_ACCT, parent) { wchar_t buffer[IAS_MAX_STRING]; if (LoadString( _Module.GetResourceInstance(), IDS_DB_NODE_NAME, buffer, IAS_MAX_STRING ) > 0) { nodeName = buffer; } if (LoadString( _Module.GetResourceInstance(), IDS_DB_NOT_CONFIGURED, buffer, IAS_MAX_STRING ) > 0) { notConfigured = buffer; } m_resultDataItem.nImage = IDBI_NODE_LOCAL_FILE_LOGGING; } DatabaseNode::~DatabaseNode() throw () { } HRESULT DatabaseNode::LoadCachedInfoFromSdo() throw () { // Clear the old info. initString.Empty(); dataSourceName.Empty(); // Load the new info. HRESULT hr = IASLoadDatabaseConfig( GetServerName(), &initString, &dataSourceName ); if (FAILED(hr)) { ShowErrorDialog( 0, IDS_DB_E_CANT_READ_DB_CONFIG, 0, hr, IDS_DB_E_TITLE, GetComponentData()->m_spConsole ); } return hr; } const wchar_t* DatabaseNode::GetServerName() const throw () { return Parent()->GetServerRoot()->m_bstrServerAddress; } LPOLESTR DatabaseNode::GetResultPaneColInfo(int nCol) { LPOLESTR info = L""; switch (nCol) { case 0: { if (nodeName) { info = nodeName; } break; } case 1: { if (dataSourceName) { info = dataSourceName; } else if (notConfigured) { info = notConfigured; } break; } default: { break; } } return info; } HRESULT DatabaseNode::OnPropertyChange( LPARAM arg, LPARAM param, IComponentData* pComponentData, IComponent* pComponent, DATA_OBJECT_TYPES type ) { return LoadCachedInfoFromSdo(); } HRESULT DatabaseNode::SetVerbs(IConsoleVerb* pConsoleVerb) { HRESULT hr = pConsoleVerb->SetVerbState(MMC_VERB_PROPERTIES, ENABLED, TRUE); if (SUCCEEDED(hr)) { hr = pConsoleVerb->SetDefaultVerb(MMC_VERB_PROPERTIES); } return hr; } STDMETHODIMP DatabaseNode::CreatePropertyPages( LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, IUnknown* pUnk, DATA_OBJECT_TYPES type ) { DatabasePage* page = new (std::nothrow) DatabasePage(handle, 0, this); if (page == 0) { return E_OUTOFMEMORY; } HRESULT hr = page->Initialize(configSdo, controlSdo); if (SUCCEEDED(hr)) { hr = lpProvider->AddPage(page->Create()); } if (FAILED(hr)) { ShowErrorDialog( 0, IDS_DB_E_CANT_INIT_DIALOG, 0, hr, IDS_DB_E_TITLE, GetComponentData()->m_spConsole ); delete page; } return hr; } STDMETHODIMP DatabaseNode::QueryPagesFor(DATA_OBJECT_TYPES type) { return S_OK; }