| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetIntegrationObjectAsIfFrom3DSpace ( | 
|   String objectInfo_i, | 
|   String concept_i, | 
|   String filePath_i | 
| ) | 
| { | 
|   Description: 'Read an object from file in the 3DSpace-format, and let the QIntegrator process it as if the data was retrieved from the 3DSpace.' | 
|   TextBody: | 
|   [* | 
|     // objectInfo_i is expected to be the ObjectID, potentially concatenated with additional information that can be used to | 
|     // get the IntegratorID from the applicable APICall. | 
|     objectID := objectInfo_i.Tokenize( LibDIF_Util::SEPARATOR_1() ).Element( 0 ); | 
|      | 
|     // The names of the files are expected to be <concept>_<object_id>.json | 
|     fileName        := concept_i + "_" + objectID + ".json"; | 
|     fileRef         := filePath_i + fileName; | 
|     objectAs3DSpace := LibDIF_Util::ReadTextFile( fileRef ); | 
|      | 
|     info( ">>> ObjectAsIfFrom3DSpace is read from file", fileName ); | 
|     //info( objectAs3DSpace ); | 
|      | 
|     // Create a NVT that contains msg_i as content as request for the QIntegrator. | 
|     requestNVT := LibDIF_IntegrationDataset::CreateRequestForQI( objectAs3DSpace ); | 
|      | 
|     //info( ">>> RequestNVT" ); | 
|     //info( requestNVT.ToString() ); | 
|      | 
|     // Get the IntegratorID from the API-method that would normally called to get the data from the 3DSpace. | 
|     // Expected naming convention: the IntegratorIDs that are used to import data as if it comes from the 3DSpace | 
|     // have the same names as the 'real' IntegratorIDs, with "As3DSpace" appended. | 
|     // The concept is appended to the objectInfo, so it can be used to determine the applicable apiCall. | 
|     integratorID := ""; | 
|     api          := this.GetPlatformAPI( concept_i ); | 
|     apiCall      := api.GetAPICall( objectInfo_i + LibDIF_Util::SEPARATOR_2() + concept_i ); | 
|      | 
|     if( not isnull( apiCall ) ) | 
|     { | 
|       integratorID := apiCall.IntegratorID() + LibDIF_IntegrationDataset::AS_3DSPACE(); | 
|     } | 
|     else | 
|     { | 
|       LibDIF_Util::Error( "APICall not found | ObjectInfo = '" + objectInfo_i + "'" ); | 
|     } | 
|      | 
|     // Trigger the action in the QIntegrator and wait for its reply. | 
|     errMsg      := ""; | 
|     responseNVT := LibInt_IntegratorProxy::SyncNvtRequest( integratorID, "", requestNVT, errMsg ); | 
|      | 
|     if( errMsg <> "" ) | 
|     { | 
|       LibDIF_Util::Info( "ERROR received from QIntegrator" ); | 
|       error( errMsg ); | 
|     } | 
|     else | 
|     { | 
|       //info( "ResponseNVT" ); | 
|       //info( responseNVT.ToString() ); | 
|        | 
|       // Process the data that is received from the QIntegrator. | 
|       this.ProcessDataFromQI( responseNVT, integratorID ); | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |