Пример #1
0
        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
     });
 }
Пример #3
0
        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();
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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é");
            }
        }
Пример #7
0
        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);
            }
        }
Пример #8
0
        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;
 }
Пример #10
0
 /// <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
     });
 }
Пример #11
0
        /// <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);
        }
Пример #12
0
        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);
            }
        }
Пример #14
0
        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);
        }
Пример #15
0
        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, ';');
        }
Пример #16
0
        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);
        }
Пример #17
0
        /// <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));
                    }
                }
            }
        }
Пример #18
0
        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();
        }
Пример #19
0
        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);
        }
Пример #20
0
        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
     });
 }
Пример #22
0
 /// <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)
 {
 }
Пример #24
0
        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();
        }
Пример #25
0
        /// <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);
        }
Пример #26
0
        /// <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);
        }
Пример #27
0
 /// <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)
 {
 }