// LogODBC.cpp : implementation file // #include "stdafx.h" #include #include "logui.h" #include "LogODBC.h" #include "CnfrmPsD.h" #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CLogODBC property page IMPLEMENT_DYNCREATE(CLogODBC, CPropertyPage) //-------------------------------------------------------------------------- CLogODBC::CLogODBC() : CPropertyPage(CLogODBC::IDD), m_fInitialized( FALSE ) { //{{AFX_DATA_INIT(CLogODBC) m_sz_datasource = _T(""); m_sz_password = _T(""); m_sz_table = _T(""); m_sz_username = _T(""); //}}AFX_DATA_INIT m_szOrigPass.Empty(); m_bPassTyped = FALSE; } //-------------------------------------------------------------------------- CLogODBC::~CLogODBC() { } //-------------------------------------------------------------------------- void CLogODBC::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLogODBC) DDX_Control(pDX, IDC_ODBC_PASSWORD, m_cedit_password); DDX_Text(pDX, IDC_ODBC_DATASOURCE, m_sz_datasource); DDX_Text_SecuredString(pDX, IDC_ODBC_PASSWORD, m_sz_password); DDX_Text(pDX, IDC_ODBC_TABLE, m_sz_table); DDX_Text(pDX, IDC_ODBC_USERNAME, m_sz_username); //}}AFX_DATA_MAP } //-------------------------------------------------------------------------- BEGIN_MESSAGE_MAP(CLogODBC, CPropertyPage) //{{AFX_MSG_MAP(CLogODBC) ON_EN_CHANGE(IDC_ODBC_DATASOURCE, OnChangeOdbcDatasource) ON_EN_CHANGE(IDC_ODBC_PASSWORD, OnChangeOdbcPassword) ON_EN_CHANGE(IDC_ODBC_TABLE, OnChangeOdbcTable) ON_EN_CHANGE(IDC_ODBC_USERNAME, OnChangeOdbcUsername) //}}AFX_MSG_MAP ON_COMMAND(ID_HELP_FINDER, DoHelp) ON_COMMAND(ID_HELP, DoHelp) ON_COMMAND(ID_CONTEXT_HELP, DoHelp) ON_COMMAND(ID_DEFAULT_HELP, DoHelp) END_MESSAGE_MAP() //--------------------------------------------------------------------------- void CLogODBC::DoHelp() { DebugTraceHelp(HIDD_LOGUI_ODBC); WinHelp( HIDD_LOGUI_ODBC ); } //-------------------------------------------------------------------------- BOOL CLogODBC::OnInitDialog() { BOOL bRes = CPropertyPage::OnInitDialog(); CError err; CString csTempPassword; m_szPassword.CopyTo(csTempPassword); CComAuthInfo auth(m_szServer, m_szUserName, csTempPassword); CMetaKey mk(&auth, m_szMeta, METADATA_PERMISSION_READ); do { err = mk.QueryResult(); BREAK_ON_ERR_FAILURE(err); err = mk.QueryValue(MD_LOGSQL_DATA_SOURCES, m_sz_datasource); BREAK_ON_ERR_FAILURE(err); CString csTempPassword; m_sz_password.CopyTo(csTempPassword); err = mk.QueryValue(MD_LOGSQL_PASSWORD, csTempPassword); m_sz_password = csTempPassword; BREAK_ON_ERR_FAILURE(err); err = mk.QueryValue(MD_LOGSQL_TABLE_NAME, m_sz_table); BREAK_ON_ERR_FAILURE(err); err = mk.QueryValue(MD_LOGSQL_USER_NAME, m_sz_username); BREAK_ON_ERR_FAILURE(err); UpdateData(FALSE); } while (FALSE); return bRes; } ///////////////////////////////////////////////////////////////////////////// // CLogODBC message handlers //-------------------------------------------------------------------------- BOOL CLogODBC::OnApply() { BOOL f; UpdateData( TRUE ); // confirm the password if ( m_bPassTyped ) { CConfirmPassDlg dlgPass; m_sz_password.CopyTo(dlgPass.m_szOrigPass); if ( dlgPass.DoModal() != IDOK ) { m_cedit_password.SetFocus(); m_cedit_password.SetSel(0, -1); return FALSE; } } CError err; CString csTempPassword; m_szPassword.CopyTo(csTempPassword); CComAuthInfo auth(m_szServer, m_szUserName, csTempPassword); CMetaKey mk(&auth, m_szMeta, METADATA_PERMISSION_WRITE); // TODO add inheritace override dialog support do { err = mk.QueryResult(); BREAK_ON_ERR_FAILURE(err); err = mk.SetValue(MD_LOGSQL_DATA_SOURCES, m_sz_datasource); BREAK_ON_ERR_FAILURE(err); if (m_bPassTyped) { CString csTempPassword; m_sz_password.CopyTo(csTempPassword); err = mk.SetValue(MD_LOGSQL_PASSWORD, csTempPassword); BREAK_ON_ERR_FAILURE(err); } err = mk.SetValue(MD_LOGSQL_TABLE_NAME, m_sz_table); BREAK_ON_ERR_FAILURE(err); err = mk.SetValue(MD_LOGSQL_USER_NAME, m_sz_username); BREAK_ON_ERR_FAILURE(err); SetModified(FALSE); } while (FALSE); m_sz_password.CopyTo(m_szOrigPass); m_bPassTyped = FALSE; return CPropertyPage::OnApply(); } void CLogODBC::OnChangeOdbcDatasource() { SetModified(); } void CLogODBC::OnChangeOdbcPassword() { m_bPassTyped = TRUE; SetModified(); } void CLogODBC::OnChangeOdbcTable() { SetModified(); } void CLogODBC::OnChangeOdbcUsername() { SetModified(); }