//./ ADD NAME=oTZCMWKSO_GetWKS_FileName // Source Module=tzcmwkso.c ///////////////////////////////////////////////////////////////////////////// // // OPERATION: oTZCMREPO_GetWKS_FileName // // PURPOSE: To retrieve the Zeidon WorkStation( RepositoryClient ) // file name // // PARAMETERS: pchZeidonWKS - a pointer to a string which is returned // with the fully qualified RepositoryClient File Name. // // RETURNS: 0 - FileName successfully retrieved // -1 - Error encountered // ///////////////////////////////////////////////////////////////////////////// //./ END + 2 zOPER_EXPORT zSHORT OPERATION oTZCMWKSO_GetWKS_FileName( zPCHAR pchZeidonWKS, zLONG lMaxLth ) { if ( SysGetEnvVar( pchZeidonWKS, "ZEIDON", lMaxLth ) == 0 ) { ofnTZCMWKSO_AppendSlash( pchZeidonWKS ); strcat_s( pchZeidonWKS, lMaxLth, "TZCMWKS8.POR" ); return( 0 ); } return( -1 ); }
zOPER_EXPORT zSHORT OPERATION BuildXODsOnLPLR( zVIEW vSubtask ) { // This routine does not actually save LODs, but only builds the XODs // on the LPLR. zVIEW vDTE; zVIEW vLPLR; zVIEW vLOD_List; zVIEW vLOD; zVIEW vXOD; zSHORT nRC; zCHAR szMsg[ zSHORT_MESSAGE_LTH + 1 ]; zCHAR szLOD_Name[ 33 ]; zCHAR szFileName[ zMAX_FILESPEC_LTH + 1 ]; GetViewByName( &vDTE, "TE_DB_Environ", vSubtask, zLEVEL_TASK ); GetViewByName( &vLOD_List, "TZZOLFLO", vSubtask, zLEVEL_TASK ); GetViewByName( &vLPLR, "TaskLPLR", vSubtask, zLEVEL_TASK ); // Save Subtask for use by XOD build routine. SetNameForView( vSubtask, "TE_Window", vSubtask, zLEVEL_TASK ); // For each selected LOD, build the XOD using the current DBMS and // commit as file to LPLR, unless the LOD does not have a POD. // Note that we are not looking to see if the DBMS identified // in the POD.TE_SourceZKey matches the current DBMS. We will save // selected LODs with the current DBMS no matter how they were saved // last time. for ( nRC = SetCursorFirstSelectedEntity( vLOD_List, "W_MetaDef", "" ); nRC >= zCURSOR_SET; nRC = SetCursorNextSelectedEntity( vLOD_List, "W_MetaDef", "" ) ) { GetStringFromAttribute( szLOD_Name, vLOD_List, "W_MetaDef", "Name" ); nRC = ActivateMetaOI( vSubtask, &vLOD, vLOD_List, zREFER_LOD_META, zCURRENT_OI ); if ( nRC < 0 ) { zstrcpy( szMsg, "Could not Activate LOD: " ); zstrcat( szMsg, szLOD_Name ); zstrcat( szMsg, ".\nAborting Build" ); MessageSend( vSubtask, "TE00426", "Physical Data Model", szMsg, zMSGQ_OBJECT_CONSTRAINT_ERROR, zBEEP ); return( 0 ); } else { // Send message that we are building the LOD. zstrcpy( szMsg, "Building executable for LOD: " ); zstrcat( szMsg, szLOD_Name ); zstrcat( szMsg, "." ); MB_SetMessage( vSubtask, 1, szMsg ); // Make sure the TE_SourceZKey attribute is set because it determines // what DBMS_Source is used in building the XOD. if ( CheckExistenceOfEntity( vLOD, "POD" ) >= zCURSOR_SET ) SetAttributeFromAttribute( vLOD, "POD", "TE_SourceZKey", vDTE, "TE_DBMS_Source", "ZKey" ); // Build the XOD in memory. oTZZOXODO_SaveXOD( vSubtask, vLOD ); SetNameForView( vLOD, "TZZOLODO", vSubtask, zLEVEL_TASK ); GetViewByName( &vXOD, "TZZOXODO", vSubtask, zLEVEL_TASK ); DropMetaOI( vSubtask, vLOD ); // Commit the XOD to LPLR file. GetStringFromAttribute( szFileName, vLPLR, "LPLR", "ExecDir" ); ofnTZCMWKSO_AppendSlash( szFileName ); zstrcat( szFileName, szLOD_Name ); zstrcat( szFileName, ".XOD" ); TraceLineS( "*** Committing workstation file: ", szFileName ); CommitOI_ToFile( vXOD, szFileName, zSINGLE ); } } MB_SetMessage( vSubtask, 1, "Build of XODs complete." ); return( 0 ); }
static void ProcessXods( HWND hWnd, zVIEW vSubtask, zCHAR *cTE_Name, zCHAR *cLogFile, zCHAR cNet ) { FILE *fLog=NULL; zVIEW vTaskLPLR = NULL; zCHAR szMsg[ 256 ]; zVIEW vTZTEDBLO, vDTE, vCM_List; zVIEW vLOD, vLOD_List, vXOD; zVIEW vTemp = NULL; zVIEW vT=NULL; zSHORT nRC; RECT rect; LPLIBRARY hLib = NULL; zCHAR szLODName[ 32 ]; zCHAR szFileName[ 256 ]; zCHAR szNetwork[ 256 ]; if ( cLogFile && cLogFile[0] ) fLog = fopen( cLogFile, "w"); memset (szNetwork, 0, 256); SysReadZeidonIni( -1, "[Zeidon]", "DefaultNetWork", szNetwork ); if (*szNetwork == 0) { strcpy( szMsg, "No default Network set" ); MessageBox( hWnd, szMsg, "Error Running xodgen", MB_OK | MB_ICONSTOP | MB_APPLMODAL ); zstrcat( szMsg, "\n" ); if ( fLog ) { fputs( szMsg,fLog ); fclose (fLog); } return; } ActivateOI_FromFile( &vTZTEDBLO, "tztedblo", vSubtask, "tztedblo.xdl", zMULTIPLE ); SetNameForView( vTZTEDBLO, "TZTEDBLO", 0, zLEVEL_TASK ); //oTZTENVRO_GetUpdViewForDTE_P nRC = RetrieveViewForMetaList( vSubtask, vSubtask, &vCM_List, zSOURCE_DTE_META ); nRC = ActivateMetaOI( &vDTE, vCM_List, zSOURCE_DTE_META, zSINGLE | zACTIVATE_ROOTONLY ); if ( nRC < 0 ) { strcpy( szMsg, "Internal error activating TE" ); MessageBox( hWnd, szMsg, "Error Running xodgen", MB_OK | MB_ICONSTOP | MB_APPLMODAL ); zstrcat( szMsg, "\n" ); if ( fLog ) { fputs( szMsg,fLog ); fclose (fLog); } return; } SetNameForView( vDTE, "TE_DB_Environ", vSubtask, zLEVEL_TASK ); // Position on given DBMS Source nRC = SetCursorFirstEntityByString( vDTE, "TE_DBMS_Source", "Name", cTE_Name, 0 ); if ( nRC < zCURSOR_SET ) { strcpy( szMsg, "Invalid TE Name :"); strcat( szMsg, cTE_Name ); MessageBox( hWnd, szMsg, "Error Running xodgen", MB_OK | MB_ICONSTOP | MB_APPLMODAL ); zstrcat( szMsg, "\n" ); if ( fLog ) { fputs( szMsg,fLog ); fclose (fLog); } return; } nRC = GetViewByName( &vTaskLPLR, "TaskLPLR", 0, zLEVEL_TASK ); assert(nRC >= 0 ) ; // Check for network build if ( cNet ) { // Use default network for Ton Beller (DBMS = "Network Server") SetCursorFirstEntityByString( vTZTEDBLO, "TE_DBMS_Source", "Network", szNetwork, 0 ); SetAttributeFromAttribute( vDTE, "TE_DBMS_Source", "DBMS", vTZTEDBLO, "TE_DBMS_Source", "DBMS" ); SetAttributeFromAttribute( vDTE, "TE_DBMS_Source", "Network", vTZTEDBLO, "TE_DBMS_Source", "Network" ); } else { // Position on corresponding DBMS entry in DB Handler object. SetCursorFirstEntityByAttr( vTZTEDBLO, "TE_DBMS_Source", "DBMS", vDTE, "TE_DBMS_Source", "DBMS", 0 ); } //zwTZTEUPDD_BuildXODsOnLPLR( zVIEW vSubtask ) // Create a view that lists all LODs. RetrieveViewForMetaList( vSubtask, vSubtask, &vLOD_List, zREFER_LOD_META ); OrderEntityForView( vLOD_List, "W_MetaDef", "Name A" ); SetNameForView( vLOD_List, "TZZOLFLO", vSubtask, zLEVEL_TASK ); // Loop through each of the LOD's // WMetaType.Type= zREFER_LOD_META // for ( nRC = SetCursorFirstEntity( vLOD_List, "W_MetaDef", "" ); nRC >= zCURSOR_SET; nRC = SetCursorNextEntity( vLOD_List, "W_MetaDef", "" ) ) { GetStringFromAttribute( szLODName, vLOD_List, "W_MetaDef", "Name" ); nRC = ActivateMetaOI( &vLOD, vLOD_List, zREFER_LOD_META, zCURRENT_OI ); if ( nRC < 0 ) { zstrcpy( szMsg, "Could not Activate LOD: " ); zstrcat( szMsg, szLODName ); zstrcat( szMsg, ".\nAborting Build" ); MessageBox( hWnd, szMsg, "Error Running xodgen", MB_OK | MB_ICONSTOP | MB_APPLMODAL ); zstrcat( szMsg, "\n" ); if ( fLog ) { fputs( szMsg,fLog ); fclose (fLog); } return ; } else { // Send message that we are building the LOD. strcpy( szMsg, "Building executable for LOD: " ); strcat( szMsg, szLODName ); strcat( szMsg, "." ); strcpy( szOutLine, szMsg ); GetClientRect( hWnd, &rect ); InvalidateRect( hWnd, &rect, TRUE ); UpdateWindow( hWnd ); if ( fLog ) { zstrcat( szMsg, "\n" ); fputs( szMsg,fLog ); } else TraceLineS( szMsg, "" ); // Make sure the TE_SourceZKey attribute is set because it determines // what DBMS_Source is used in building the XOD. if ( CheckExistenceOfEntity( vLOD, "POD" ) >= zCURSOR_SET ) SetAttributeFromAttribute ( vLOD, "POD", "TE_SourceZKey", vDTE, "TE_DBMS_Source", "ZKey" ); // Build the XOD in memory oTZZOXODO_SaveXOD( vLOD ); SetNameForView( vLOD, "TZZOLODO", 0, zLEVEL_TASK ); DropMetaOI( vSubtask, vLOD ); // Commit the XOD to LPLR file. GetViewByName( &vXOD, "TZZOXODO", 0, zLEVEL_TASK ); GetStringFromAttribute( szFileName, vTaskLPLR, "LPLR", "ExecDir" ); ofnTZCMWKSO_AppendSlash( szFileName ); zstrcat( szFileName, szLODName ); zstrcat( szFileName, ".XOD" ); CommitOI_ToFile( vXOD, szFileName, zSINGLE ); } } if (fLog) fclose (fLog); else TraceLineS( "Completed XOD build", "" ); return; }