Hello Martin,
I am able to read the file names and file content with X++ and below but not able to send it to DMF
CloudBlobDirectory cloudBlobDirectory;// The directory of the blob container
container con;
cloudBlobDirectory = cloudBlobContainer.GetDirectoryReference(“SainaCloudConsulting\Test1”);//File path where the files are stored
System.Collections.IEnumerable lstEnumarable = cloudBlobDirectory.ListBlobs(false, 0, null, null);
System.Collections.IEnumerator lstEnumarator = lstEnumarable.GetEnumerator();
List filenames = new List(Types::String);
while(lstEnumarator.MoveNext())
{
IListBlobItem item = lstEnumarator.Current;
if(item is CloudBlockBlob)
{
CloudBlockBlob blob = item;
blob.FetchAttributes(null, null, null);
con = str2con(blob.name, “/”);
filenames.addStart(conPeek(con,conlen(con)));
}
}
With above code I have all file names from azure storage account.
I have below code to send the file to DMF data project from user manually by browsing
class XYZCustGroupImport
{
private static DMFDefinitionGroup findDMFDefinitionGroup()
{
DMFDefinitionGroup definitionGroup;
select firstonly definitionGroup
where definitionGroup.DefinitionGroupName == 'CustGroupImport'; //DMF import data project
return definitionGroup;
}
private static DMFDefinitionGroupEntity findDMFDefinitionGroupEntity(DMFDefinitionGroup _definitionGroup)
{
DMFDefinitionGroupEntity definitionGroupEntity;
DMFEntity dmfEntity;
select firstonly RecId, Entity from definitionGroupEntity exists join dmfEntity
where definitionGroupEntity.DefinitionGroup == _definitionGroup.DefinitionGroupName
&& dmfEntity.EntityName == definitionGroupEntity.Entity
&& dmfEntity.TargetEntity == dataentityviewstr(CustCustomerGroupEntity);
if (!definitionGroupEntity)
{
throw error(strFmt("@DMF:DMFNoEntityExists", _definitionGroup.DefinitionGroupName));
}
return definitionGroupEntity;
}
private static DMFLocalFilePath applyTransforms(SharedServiceUnitFileID _uploadedStatement, DMFDefinitionGroup definitionGroup)
{
DMFDefinitionGroupEntity definitionGroupEntity = XYZCustGroupImport::findDMFDefinitionGroupEntity(definitionGroup);
DMFExecutionId executionId = DMFUtil::setupNewExecution(definitionGroup.DefinitionGroupName);
DMFDefinitionGroupExecution execution = DMFDefinitionGroupExecution::find(
definitionGroup.DefinitionGroupName,
definitionGroupEntity.Entity,
executionId,
true);
execution.IsTransformed = NoYes::No;
DMFLocalFilePath filePath = execution.applyTransforms(_uploadedStatement);
DMFExecution e = DMFExecution::find(executionId, true);
e.delete();
return filePath;
}
public static void main(Args _args)
{
SharedServiceUnitFileID fileId;
//Get the file from user
FileUploadTemporaryStorageResult result = File::GetFileFromUser() as FileUploadTemporaryStorageResult;
if (result && result.getUploadStatus())
{
fileId = result.getFileId();
DMFDefinitionGroup definitionGroup = XYZCustGroupImport::findDMFDefinitionGroup();
XYZCustGroupImport::applyTransforms(fileId, definitionGroup);
DMFDefinitionGroupEntity definitionGroupEntity = XYZCustGroupImport::findDMFDefinitionGroupEntity(definitionGroup);
DMFExecutionId executionId = DMFUtil::setupNewExecution(definitionGroup.DefinitionGroupName);
// Find execution
DMFDefinitionGroupExecution execution = DMFDefinitionGroupExecution::find(definitionGroup.DefinitionGroupName, definitionGroupEntity.Entity,
executionId, true);
execution.FilePath = fileId;
execution.IsTransformed = NoYes::Yes;
execution.update();
// Import the file via quick import DMF
DMFQuickImportExport::doPGImport(definitionGroup.DefinitionGroupName, executionId, true);
//deletes file
result.deleteResult();
}
}
}
But I am not able to incorporate the code which I have, to get filenames from azure blob into the code that sending the file to DMF
I have to something with below line which will take the file from user manually
FileUploadTemporaryStorageResult result = File::GetFileFromUser() as FileUploadTemporaryStorageResult;
Please suggest if we can do something on it