using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using libtcsoa.Client; using Teamcenter.Services.Strong.Core; using Teamcenter.Soa.Client; using Teamcenter.Soa.Client.Model; using Dataset = Teamcenter.Soa.Client.Model.Strong.Dataset; using ImanFile = Teamcenter.Soa.Client.Model.Strong.ImanFile; using PreferencesResponse = Teamcenter.Services.Strong.Core._2006_03.Session.PreferencesResponse; namespace libtcsoa { public class DatasetDownloadClass : DatasetManagmentClass { //------------------------------------------------------------------------------ #region Klassenfelder //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ #region GetSet Klassenfelder //------------------------------------------------------------------------------ #endregion #endregion //------------------------------------------------------------------------------ #region Konstruktoren //------------------------------------------------------------------------------ /// /// Holt die FSC Url aus den Preferences ("Default_Transient_Server") /// /// public DatasetDownloadClass(string download_folder) : base(download_folder) { } public DatasetDownloadClass(string fsc_url, string download_folder) : base(fsc_url, download_folder) { } #endregion //------------------------------------------------------------------------------ #region Statische Methoden //------------------------------------------------------------------------------ #endregion //------------------------------------------------------------------------------ #region Klassenmethoden //------------------------------------------------------------------------------ public string[] DownloadFile(Dataset dataset) { return DownloadFile(dataset, ""); } public string[] DownloadFile(Dataset dataset, string named_ref_type) { List downloaded_files = new List(); if (dataset == null) return downloaded_files.ToArray(); if (this.AutoRefresh) { Log.Debug("Refresh Dataset before downloading..."); DMService.RefreshObjects(new ModelObject[] { dataset }); } //Holen der Propertys Imanfiles und den Namend RefType DMService.GetProperties(new ModelObject[] { dataset }, new string[] { "ref_list", "ref_names", "object_name" }); //------------------------------------------------------------ Property refListProperty = Session.GetProperty(dataset, "ref_list"); Property reftypeProperty = Session.GetProperty(dataset, "ref_names"); //------------------------------------------------------------ ModelObject[] refObjs = refListProperty.ModelObjectArrayValue; string[] refType = reftypeProperty.DisplayableValues; //------------------------------------------------------------ Log.Info("DatasetName " + dataset.Object_name); for (int i = 0; i < refObjs.Length; i++) { //Prüfen ob es dir richtige NamedReferenceType ist. if (named_ref_type != "" & named_ref_type != refType[i]) continue; if(refObjs[i] is ImanFile) { DMService.GetProperties(new ModelObject[] { refObjs[i] }, new string[] { "original_file_name" }); ImanFile imanfile = (ImanFile)refObjs[i]; GetFileResponse fileResp = FMUtility.GetFiles(new ModelObject[] { refObjs[i] }); FileInfo[] filesinfos = fileResp.GetFiles(); foreach (FileInfo item in filesinfos) { Log.Info("Downloaded Files via TCCS: " + item.FullName); string new_file = Path.Combine(item.DirectoryName, imanfile.Original_file_name); if (File.Exists(new_file)) { try { Log.Debug("OriginalFile allready Exits...Delete File: " + new_file); File.Delete(new_file); } catch (System.IO.IOException ex) { Log.Debug(ex); new_file = Path.Combine(item.DirectoryName, Path.GetRandomFileName() + imanfile.Original_file_name); Log.Debug("File allready in use. Try to set temp file name: " + new_file); } } Log.Info("Rename File from " + item.FullName + " to " + new_file); File.Move(item.FullName, new_file); Log.Debug("NamedReferenceType: " + refType[i] + " OriginalFilename: " + imanfile.Original_file_name); downloaded_files.Add(new_file); } } } return downloaded_files.ToArray(); } public string DownloadFile(string ticket) { if (!string.IsNullOrEmpty(ticket)) { return FMUtility.GetTransientFile(ticket, Path.GetTempPath()).FullName; } return null; } #endregion } }