SOA Service Client : Download Dataset from Teamcenter

How about downloading file present in Dataset ?

Consider we have UID for dataset which is to be downloaded i.e its named reference is to be downloaded

Get the Model object from UID

ModelObject[] modelObjects = getModelObjectsFromUIDs( arrayOfUIDs,tcConnection );

private static ModelObject[] getModelObjectsFromUIDs(String[] arrayOfUIDs, Connection connection)
{
    ModelObject[] arrModelObjects = null;
    if (arrayOfUIDs.length > 0)
    {
        ArrayList<ModelObject> modelObjects = 
        new ArrayList<ModelObject>(arrayOfUIDs.length);
        DataManagementService dataManagementService = 
       DataManagementService.getService(connection);
        ServiceData loadObjects = 
        dataManagementService.loadObjects(arrayOfUIDs); //Load objects for provided UIDs

       for (int i = 0; i < loadObjects.sizeOfPlainObjects(); i++)
        {
            modelObjects.add(loadObjects.getPlainObject(i));
        }
        if (modelObjects != null && modelObjects.size() > 0)
        {
            arrModelObjects = modelObjects.toArray(new ModelObject[0]);
        }
      }
    return arrModelObjects;
}

Now Load the ref_list property on dataset which actually contain the files names

dataManagementService.getProperties( modelObjects, new String[]{ "ref_list" } );
Dataset  dataset =null;
ModelObject[] files = null;
if ( modelObject instanceof Dataset )
{
   dataset = ( Dataset )  modelObject;
   files = dataset.get_ref_list();//Gives named referenced objects
}

Check if named reference is actually the required file

ArrayList<ModelObject> al = new ArrayList<ModelObject>();

for (int i = 0; i < files.length; i++)
{
   if ( files[i] instanceof ImanFile )
   al.add( files[i] );

}

ModelObject[] newFiles = al.toArray( new ModelObject[al.size()] ); 

//Load the original name for files
dataManagementService.getProperties( newFiles, new String[]{"original_file_name"} );

Get/Download the Files
//FileManagementUtility is in package com.teamcenter.soa.client
 FileManagementUtility fileManagementUtility = null;

//Get the Fms_BootStrap_Urls Preference
SessionService localSessionService = SessionService.getService(getTcConnection());
Session.ScopedPreferenceNames[] arrayOfScopedPreferenceNames = 
new Session.ScopedPreferenceNames[1];

arrayOfScopedPreferenceNames[0] = new Session.ScopedPreferenceNames();
arrayOfScopedPreferenceNames[0].names = new String[] { "Fms_BootStrap_Urls" };
arrayOfScopedPreferenceNames[0].scope = paramString2;
Session.MultiPreferencesResponse localMultiPreferencesResponse =
localSessionService.getPreferences(arrayOfScopedPreferenceNames);

String bootStrapURL=localMultiPreferencesResponse.preferences[0].values[0];
try
{
//strDirPath is folder path /location where file will be downloaded
fileManagementUtility = new FileManagementUtility( localConnection, null,
null, new String[]{ bootStrapURL }, strDirPath);
GetFileResponse responseFiles = 
fileManagementUtility.getFiles( modelObjects );//Download the files but with Tc internal name
File[] filesFromModelObjects = responseFiles.getFiles();
}

Rename the file to Original name based on ref list model objects ->newFiles and downloaded files -> filesFromModelObjects
for(File fSrc : filesFromModelObjects)
{
    ImanFile imFle = (ImanFile) newFiles[i];
    String originalFileName = imFle.get_original_file_name();
    File fTmpDest = new File(strDirPath + File.separator + originalFileName);
    fSrc.renameTo(fTmpDest);
}

Explanation : Important API 

dataManagementService.loadObjects(arrayOfUIDs);

dataset.get_ref_list()

localSessionService.getPreferences(arrayOfScopedPreferenceNames);

fileManagementUtility.getFiles( modelObjects );

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值