LONG CuDlgDomPropDDb::OnUpdateData (WPARAM wParam, LPARAM lParam) { // cast received parameters int nNodeHandle = (int)wParam; LPIPMUPDATEPARAMS pUps = (LPIPMUPDATEPARAMS)lParam; ASSERT (nNodeHandle != -1); ASSERT (pUps); // ignore selected actions on filters switch (pUps->nIpmHint) { case 0: //case FILTER_DOM_SYSTEMOBJECTS: //case FILTER_DOM_BASEOWNER: //case FILTER_DOM_OTHEROWNER: break; case FILTER_DOM_BKREFRESH_DETAIL: if (m_Data.m_refreshParams.MustRefresh(pUps->pSFilter->bOnLoad, pUps->pSFilter->refreshtime)) break; // need to update else return 0; // no need to update break; default: return 0L; // nothing to change on the display } ResetDisplay(); // Get info on the object DATABASEPARAMS DbParams; memset (&DbParams, 0, sizeof (DbParams)); LPTREERECORD lpRecord = (LPTREERECORD)pUps->pStruct; ASSERT (lpRecord); // // Get Detail Info // lstrcpy ((LPTSTR)DbParams.objectname, (LPCTSTR)lpRecord->objName); DbParams.DbType = lpRecord->parentDbType; int dummySesHndl; int iResult = GetDetailInfo ((LPUCHAR)GetVirtNodeName(nNodeHandle), OT_DATABASE, &DbParams, FALSE, &dummySesHndl); if (iResult != RES_SUCCESS) { ASSERT (FALSE); // Reset m_Data CuDomPropDataDDb tempData; tempData.m_refreshParams = m_Data.m_refreshParams; m_Data = tempData; // Refresh display RefreshDisplay(); return 0L; } // Update refresh info m_Data.m_refreshParams.UpdateRefreshParams(); // update member variables, for display/load/save purpose m_Data.m_csOwner = DbParams.szOwner ; m_Data.m_csLocDb = DbParams.szDbDev ; m_Data.m_csLocChk = DbParams.szChkpDev; m_Data.m_csLocJnl = DbParams.szJrnlDev; m_Data.m_csLocDmp = DbParams.szDmpDev; m_Data.m_csLocSrt = DbParams.szSortDev; // liberate detail structure FreeAttachedPointers (&DbParams, OT_DATABASE); // // Get name of Coordinator Database // int iret; LPUCHAR aparentsTemp[MAXPLEVEL]; LPUCHAR aparentsResult[MAXPLEVEL]; UCHAR bufParResult0[MAXOBJECTNAME]; UCHAR bufParResult1[MAXOBJECTNAME]; UCHAR bufParResult2[MAXOBJECTNAME]; UCHAR buf[MAXOBJECTNAME]; UCHAR bufOwner[MAXOBJECTNAME]; UCHAR bufComplim[MAXOBJECTNAME]; aparentsResult[0] = bufParResult0; aparentsResult[1] = bufParResult1; aparentsResult[2] = bufParResult2; memset (&bufComplim, '\0', sizeof(bufComplim)); memset (&bufOwner, '\0', sizeof(bufOwner)); aparentsTemp[0] = lpRecord->objName; aparentsTemp[1] = aparentsTemp[2] = NULL; iret = DOMGetFirstRelObject(nNodeHandle, OTR_CDB, 1, // level, aparentsTemp, // Temp mandatory! TRUE, // bwithsystem NULL, // base owner NULL, // other owner aparentsResult, buf, bufOwner, bufComplim); if (iret != RES_SUCCESS) { ASSERT (FALSE); // Reset m_Data CuDomPropDataDDb tempData; m_Data = tempData; // Refresh display RefreshDisplay(); return 0L; } m_Data.m_csCoordinator = buf; // Refresh display RefreshDisplay(); return 0L; }
LONG CuDlgDomPropRoleXGrantedDb::OnUpdateData (WPARAM wParam, LPARAM lParam) { // cast received parameters int nNodeHandle = (int)wParam; LPIPMUPDATEPARAMS pUps = (LPIPMUPDATEPARAMS)lParam; ASSERT (nNodeHandle != -1); ASSERT (pUps); // ignore selected actions on filters switch (pUps->nIpmHint) { case 0: case FILTER_DOM_SYSTEMOBJECTS: // can be system objects (replicator dd_xyz) //case FILTER_DOM_BASEOWNER: //case FILTER_DOM_OTHEROWNER: break; case FILTER_DOM_BKREFRESH: // eligible if UpdateType is compatible with DomGetFirst/Next object type, // or is ot_virtnode, which means refresh for all whatever the type is if (pUps->pSFilter->UpdateType != OT_VIRTNODE && pUps->pSFilter->UpdateType != OT_DATABASE) return 0L; break; case FILTER_SETTING_CHANGE: VDBA_OnGeneralSettingChange(&m_cListCtrl); return 0L; default: return 0L; // nothing to change on the display } // Get info on the current item LPTREERECORD lpRecord = (LPTREERECORD)pUps->pStruct; ASSERT (lpRecord); ResetDisplay(); // // Get list of granted objects // m_Data.m_uaRoleXGrantedDb.RemoveAll(); int iret; LPUCHAR aparentsTemp[MAXPLEVEL]; UCHAR buf[MAXOBJECTNAME]; UCHAR bufOwner[MAXOBJECTNAME]; UCHAR bufComplim[MAXOBJECTNAME]; memset (&bufComplim, '\0', sizeof(bufComplim)); memset (&bufOwner, '\0', sizeof(bufOwner)); // Xref return code LPUCHAR aparentsResult[MAXPLEVEL]; UCHAR bufParResult0[MAXOBJECTNAME]; UCHAR bufParResult1[MAXOBJECTNAME]; UCHAR bufParResult2[MAXOBJECTNAME]; aparentsResult[0] = bufParResult0; aparentsResult[1] = bufParResult1; aparentsResult[2] = bufParResult2; // prepare parenthood with schema where relevant aparentsTemp[0] = lpRecord->objName; aparentsTemp[1] = aparentsTemp[2] = NULL; BOOL bError = FALSE; for (int index = 0; index < NBDBGRANTED; index++) { iret = DOMGetFirstRelObject(nNodeHandle, aGrantedType[index], 1, // level, aparentsTemp, // Temp mandatory! pUps->pSFilter->bWithSystem, // bwithsystem NULL, // base owner NULL, // other owner aparentsResult, buf, bufOwner, bufComplim); if (iret != RES_SUCCESS && iret != RES_ENDOFDATA) { bError = TRUE; continue; } else { while (iret == RES_SUCCESS) { CuGrantedDb grantedDb((const char *)buf, // obj name (const char *)_T(""), // No obj owner (const char *)_T(""), // No obj parent aGrantedType[index] // grant type ); CuMultFlag *pRefGrantedDb = m_Data.m_uaRoleXGrantedDb.Find(&grantedDb); if (pRefGrantedDb) m_Data.m_uaRoleXGrantedDb.Merge(pRefGrantedDb, &grantedDb); else m_Data.m_uaRoleXGrantedDb.Add(grantedDb); iret = DOMGetNextRelObject(aparentsResult, buf, bufOwner, bufComplim); } } } // Manage error case if (bError) { /* "<Data Unavailable>" */ CuGrantedDb grantedDb1(VDBA_MfcResourceString (IDS_DATA_UNAVAILABLE)); m_Data.m_uaRoleXGrantedDb.Add(grantedDb1); } // Manage no granted object if (m_Data.m_uaRoleXGrantedDb.GetCount() == 0) { CuGrantedDb grantedDb2(VDBA_MfcResourceString (IDS_E_NO_GRANTED_DB)); m_Data.m_uaRoleXGrantedDb.Add(grantedDb2); } ASSERT (m_Data.m_uaRoleXGrantedDb.GetCount() > 0 ); // Refresh display RefreshDisplay(); return 0L; }