public bool WorkInProgress() { if (SourceFileItem.WorkInProgress()) { return(true); } switch (TypeContainer) { case TypeContainer.Video: if (SpriteVideoFileItem != null && SpriteVideoFileItem.WorkInProgress()) { return(true); } return(EncodedFileItems.Any(f => f.WorkInProgress())); case TypeContainer.Image: if (OverlayFileItem != null && OverlayFileItem.WorkInProgress()) { return(true); } return(false); default: return(false); } }
/// <summary> /// 创建执行数据泵时所需的上下文对象。 /// </summary> /// <param name="metadata">元数据。</param> /// <param name="source">数据源。</param> /// <returns>执行上下文。</returns> public override DataPumpExecutionContext CreateContext(SourceFileItem source) { return(new DataPumpControllableExecutionContext(Metadata, source) { Owner = this }); }
public void TestCancelMethod(Pump pump, SourceFileItem source, MultiTaskReporterBase reporter, params ExtractItem[] items) { DataPumpBase dp = pump.GetDataPump(); DataPumpExecutionContext context = dp.Execute(source, reporter, items); context.Cancel(); }
private Pump CreatePump(String savePath, String dbFileName, IDevice device, out SourceFileItem souce) { SourceFileItem item = new SourceFileItem(); item.ItemType = SourceFileItemType.NormalPath; item.Config = @"/system/build.prop"; souce = item; Pump pump = new Pump(savePath, dbFileName); switch (device.DeviceType) { case EnumDeviceType.SDCard: pump.OSType = EnumOSType.SDCard; pump.Type = EnumPump.SDCard; break; case EnumDeviceType.SIM: pump.OSType = EnumOSType.SIMCard; pump.Type = EnumPump.SIMCard; break; case EnumDeviceType.Phone when device is Device dev: pump.OSType = dev.OSType; pump.Type = EnumPump.USB; break; default: return(null); } pump.Source = device; pump.ScanModel = ScanFileModel.Expert; return(pump); }
private void HandleWithSDCardPath(Device device, DataPumpControllableExecutionContext context) { SourceFileItem source = context.Source; String path = FileHelper.ConnectLinuxPath(device.SDCardPath, source.SDCardConfig); source.Local = device.CopyFile(path, context.TargetDirectory, context.Reporter); }
public bool WorkInProgress() { if (SourceFileItem.WorkInProgress()) { return(true); } switch (TypeContainer) { case TypeContainer.Video: if (SpriteVideoFileItem != null && SpriteVideoFileItem.WorkInProgress()) { return(true); } return(EncodedFileItems.Any(f => f.WorkInProgress())); case TypeContainer.Overlay: if (OverlayFileItem != null && OverlayFileItem.WorkInProgress()) { return(true); } return(false); default: Debug.WriteLine("Type container non géré " + TypeContainer); throw new InvalidOperationException("type container non géré"); } }
private void btnForceTrigger_Click(object sender, RoutedEventArgs e) { SourceFileItem file = _dataGrid.SelectedItem as SourceFileItem; if (file != null) { FileWatcherModel.Execute(file); } return; var mPropertiesService = VEFModule.UnityContainer.Resolve(typeof(IPropertiesService), "") as IPropertiesService; SourceFileItem filex = _dataGrid.SelectedItem as SourceFileItem; if (filex.FileType == FileType.fbx) { FBXFileConverter test = new FBXFileConverter(); test.Convert(filex.SourceFilePath, filex.DestinationFolder, filex.DestinationFileName); string fbxfilename = @"F:\Projekte\coop\XGame\_devFolder\Work\Character\[email protected]"; string skeletonfilename = @"F:\Projekte\coop\XGame\data\assets\TestModel.SKELETON"; string meshfilename = @"F:\Projekte\coop\XGame\data\assets\TestModel.MESH"; string logfilename = "log.txt"; string animname = "WalkBase"; int start = Int32.MinValue; int stop = Int32.MaxValue; float rate = 0; DLL_FBXToOgre tmp = new DLL_FBXToOgre(); tmp.Test_AddFBXAnimationToExisting(fbxfilename, skeletonfilename, meshfilename, logfilename, animname, start, stop, rate); } }
public void ConstructionWorksAsExpected() { // --- Act var si = new SourceFileItem("myitem.z80asm"); // --- Assert si.ShouldNotBeNull(); si.Filename.ShouldBe("myitem.z80asm"); si.Parent.ShouldBeNull(); }
/// <summary> /// 初始化类型 XLY.SF.Project.DataPump.DataPumpTaskContext 实例。 /// </summary> /// <param name="pumpDescriptor">对任务进行描述的元数据。</param> /// <param name="source">数据源。如果不需要数据源则设置为null。</param> internal DataPumpExecutionContext(Pump pumpDescriptor, SourceFileItem source) { PumpDescriptor = pumpDescriptor ?? throw new ArgumentNullException("metadata"); if (String.IsNullOrWhiteSpace(pumpDescriptor.SavePath)) { throw new ArgumentNullException("targetDirectory"); } Source = source; TargetDirectory = pumpDescriptor.SourceStorePath; }
/// <summary> /// 创建执行数据泵时所需的上下文对象。 /// </summary> /// <param name="source">数据源。</param> /// <returns>执行上下文。</returns> public virtual DataPumpExecutionContext CreateContext(SourceFileItem source) { if (!IsInit) { throw new InvalidOperationException("Data pump need initialize"); } return(new DataPumpExecutionContext(Metadata, source) { Owner = this }); }
/// <summary> /// 执行数据泵。 /// </summary> /// <param name="dataPump">元数据。</param> /// <param name="source">数据源。</param> /// <param name="reporter">异步通知器。</param> /// <param name="items">提取项列表。</param> /// <returns>数据泵任务执行上下文。</returns> public static DataPumpExecutionContext Execute(this DataPumpBase dataPump, SourceFileItem source, MultiTaskReporterBase reporter, params ExtractItem[] items) { DataPumpExecutionContext context = dataPump.CreateContext(source); context.ExtractItems = items; DataPumpControllableExecutionContext contextEx = context as DataPumpControllableExecutionContext; if (contextEx != null) { contextEx.Reporter = reporter; } dataPump.Execute(context); return(context); }
public void Extract(SourceFileItem item, IAsyncProgress asyn) { if (Context == null) { return; } Context.UnsafeSource = item; DataPumpControllableExecutionContext contextEx = Context as DataPumpControllableExecutionContext; if (contextEx != null) { contextEx.Reporter = asyn; } DataPump.Execute(Context); }
/// <summary> /// 使用特定的执行上下文执行服务。 /// </summary> /// <param name="context">执行上下文。</param> protected override void ExecuteCore(DataPumpControllableExecutionContext context) { SourceFileItem source = context.Source; if (source.ItemType == SourceFileItemType.NormalPath) { string path = source.Config.TrimEnd("#F"); if (path.StartsWith("/data/data/")) { path = ("/data/" + path.TrimStart("/data/data/")); } path = path.Replace("/", @"\"); source.Local = FileHelper.ConnectPath(context.TargetDirectory, path); } }
private void HandleWithNormalPath(DataPumpExecutionContext context) { SourceFileItem source = context.Source; String path = source.Config.TrimEnd("#F").Replace("/", @"\"); if (path.StartsWith(@"\data")) { path = path.TrimStart(@"\data"); } else if (path.StartsWith(@"\system")) { path = path.TrimStart(@"\system"); } source.Local = FileHelper.ConnectPath(context.TargetDirectory, path); FileService.ExportAppFile(path, context.TargetDirectory); }
private void HandleWithFileExtension(DataPumpExecutionContext context) { SourceFileItem source = context.Source; String[] configs = source.Config.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (configs.Length == 0) { return; } KeyValueItem kv = new KeyValueItem { Key = configs[0].TrimStart("$"), Value = configs[1] }; source.Local = FileHelper.ConnectPath(context.TargetDirectory, kv.Key); FileService.ExportMediaFile(kv, context.TargetDirectory, ';'); }
public void IncludeWorksWithSingleItem() { // --- Arrange var si = new SourceFileItem("myitem.z80asm"); // --- Act var child = new SourceFileItem("mychild"); si.Include(child); // --- Assert si.ShouldNotBeNull(); si.Filename.ShouldBe("myitem.z80asm"); si.Parent.ShouldBeNull(); si.Includes.Count.ShouldBe(1); si.Includes.ShouldContain(child); child.Parent.ShouldBe(si); }
/// <summary> /// 使用特定的执行上下文执行服务。 /// </summary> /// <param name="context">执行上下文。</param> protected override void ExecuteCore(DataPumpControllableExecutionContext context) { SourceFileItem source = context.Source; if (source.ItemType != SourceFileItemType.FileExtension) { throw new InvalidOperationException("Only support FileExtension"); } MTPDevice mtpDevice = GetMTPDevice(); if (mtpDevice == null) { return; } //2.解析文件类型和文件后缀名列表 var filetype = Regex.Match(source.Config, @"^\$(\S+),").Groups[1].Value; var extensions = source.Config.Substring(filetype.Length).Split(';').Select(ex => string.Format(".{0}", ex)); //3.获取文件列表 var fileNodes = mtpDevice.GetFiles(extensions); //4.拷贝文件 String sourcePath; String destPath; foreach (var fileNode in fileNodes) { sourcePath = fileNode.GetFullPath(); destPath = Path.Combine(Metadata.SourceStorePath, filetype, sourcePath); FileHelper.CreateDirectory(destPath); if (MtpDeviceManager.Instance.CopyFileFromDevice(mtpDevice, fileNode, destPath)) { var copyfile = new FileInfo(Path.Combine(destPath, fileNode.Name)); if (copyfile.Exists) { //修改文件的 创建时间、最后修改时间、最后访问时间 MtpDeviceManager.Instance.GetDate(mtpDevice, fileNode); File.SetCreationTime(copyfile.FullName, CovertMTPDateTime(fileNode.DateCreated)); File.SetLastWriteTime(copyfile.FullName, CovertMTPDateTime(fileNode.DateModified)); File.SetLastAccessTime(copyfile.FullName, CovertMTPDateTime(fileNode.DateAuthored)); } } } }
public void IncludeDoesNotAddRepeatedItem() { // --- Arrange var si = new SourceFileItem("myitem.z80asm"); // --- Act var child1 = new SourceFileItem("mychild"); var result1 = si.Include(child1); var child2 = new SourceFileItem("mychild"); var result2 = si.Include(child2); // --- Assert result1.ShouldBeTrue(); result2.ShouldBeFalse(); si.Parent.ShouldBeNull(); si.Includes.Count.ShouldBe(1); si.Includes.ShouldContain(child1); child1.Parent.ShouldBe(si); si.Includes.ShouldNotContain(child2); child2.Parent.ShouldBeNull(); }
public void IncludeWorksWithMultipleItems() { // --- Arrange var si = new SourceFileItem("myitem.z80asm"); // --- Act var child1 = new SourceFileItem("mychild1"); si.Include(child1); var child2 = new SourceFileItem("mychild2"); si.Include(child2); // --- Assert si.Parent.ShouldBeNull(); si.Includes.Count.ShouldBe(2); si.Includes.ShouldContain(child1); child1.Parent.ShouldBe(si); si.Includes.ShouldContain(child2); child2.Parent.ShouldBe(si); }
private static Pump CreatePump(IDevice device, out SourceFileItem souce) { Pump pump = null; switch (device.DeviceType) { case EnumDeviceType.SDCard: pump = new Pump { OSType = EnumOSType.SDCard, Type = EnumPump.SDCard }; break; case EnumDeviceType.SIM: pump = new Pump { OSType = EnumOSType.SIMCard, Type = EnumPump.SIMCard }; break; case EnumDeviceType.Phone when device is Device dev: pump = new Pump { OSType = dev.OSType, Type = EnumPump.Mirror }; break; default: souce = null; return(null); } SourceFileItem item = new SourceFileItem(); item.ItemType = SourceFileItemType.NormalPath; item.Config = @"/system/build.prop"; souce = item; pump.Source = device; pump.ScanModel = ScanFileModel.Quick; return(pump); }
/// <summary> /// 创建执行数据泵时所需的上下文对象。 /// </summary> /// <param name="metadata">元数据。</param> /// <param name="targetDirectory">数据保存目录。</param> /// <param name="source">数据源。</param> /// <returns>执行上下文。</returns> public override DataPumpExecutionContext CreateContext(Pump metadata, String targetDirectory, SourceFileItem source) { return(new DataPumpControllableExecutionContext(metadata, targetDirectory, source) { Owner = this }); }
/// <summary> /// 创建执行数据泵时所需的上下文对象。 /// </summary> /// <param name="metadata">元数据。</param> /// <param name="targetDirectory">数据保存目录。</param> /// <param name="source">数据源。</param> /// <returns>执行上下文。</returns> public virtual DataPumpExecutionContext CreateContext(Pump metadata, String targetDirectory, SourceFileItem source) { return(new DataPumpExecutionContext(metadata, targetDirectory, source) { Owner = this }); }
/// <summary> /// 初始化类型 XLY.SF.Project.DataPump.DataPumpControllableExecutionContext 实例。 /// </summary> /// <param name="metadata">对任务进行描述的元数据。</param> /// <param name="source">数据源。如果不需要数据源则设置为null。</param> internal DataPumpControllableExecutionContext(Pump metadata, SourceFileItem source) : base(metadata, source) { }
public void TestCancelMethod(Pump pump, String savePath, SourceFileItem source, IAsyncProgress reporter, IEnumerable <ExtractItem> items = null) { DataPumpExecutionContext context = pump.Execute(savePath, source, reporter, items); context.Cancel(); }
/// <summary> /// 执行数据泵。 /// </summary> /// <param name="pump">元数据。</param> /// <param name="savePath">保存路径。</param> /// <param name="source">数据源。</param> /// <param name="reporter">异步通知器。</param> /// <param name="items">提取项列表。</param> /// <returns>数据泵任务执行上下文。</returns> public static DataPumpExecutionContext Execute(this Pump pump, String savePath, SourceFileItem source, IAsyncProgress reporter, IEnumerable <ExtractItem> items = null) { DataPumpBase dataPump = pump.GetDataPump(); DataPumpExecutionContext context = dataPump.CreateContext(pump, savePath, source); DataPumpControllableExecutionContext contextEx = context as DataPumpControllableExecutionContext; if (contextEx != null) { contextEx.Reporter = reporter; } dataPump.Execute(context); return(context); }
/// <summary> /// 创建执行上下文。 /// </summary> /// <param name="dataPump">数据泵。</param> /// <param name="metaData">元数据。</param> /// <param name="rootSavePath">保存路径。</param> /// <param name="source">数据源。</param> /// <param name="extractItems">提取项列表。</param> /// <param name="asyn">异步通知器。</param> /// <returns>执行上下文。</returns> internal static DataPumpExecutionContext CreateContext(this DataPumpBase dataPump, Pump metaData, String rootSavePath, SourceFileItem source, IEnumerable <ExtractItem> extractItems, IAsyncProgress asyn = null) { DataPumpExecutionContext context = dataPump.CreateContext(metaData, rootSavePath, source); context.ExtractItems = extractItems; DataPumpControllableExecutionContext contextEx = context as DataPumpControllableExecutionContext; if (contextEx != null) { contextEx.Reporter = asyn; } return(contextEx); }
/// <summary> /// 初始化类型 XLY.SF.Project.DataPump.DataPumpControllableExecutionContext 实例。 /// </summary> /// <param name="metadata">对任务进行描述的元数据。</param> /// <param name="targetDirectory">数据保存目录。</param> /// <param name="source">数据源。如果不需要数据源则设置为null。</param> internal DataPumpControllableExecutionContext(Pump metadata, String targetDirectory, SourceFileItem source) : base(metadata, targetDirectory, source) { }