Пример #1
0
        private void UnrollContainers(
            String targetPath,
            out List <String> tempContainers,
            out Stack <ContainerHierarchyEntity> containersHierarchy)
        {
            tempContainers      = new List <String>();
            containersHierarchy = new Stack <ContainerHierarchyEntity>();

            IContentFileWriter contentWriter = new ContentFileWriter();

            IContainerFile topContainer = ContainerReaderService.ReadFile(targetPath, false);

            containersHierarchy.Push(new ContainerHierarchyEntity(topContainer));

            foreach (var containerPath in CommandGroup.NestedTargetPath.Parts)
            {
                var containerFile = containersHierarchy.Peek().ContainerFile;
                var contentFile   = containerFile.GetContentFileByPath(containerPath);
                //if (contentFile.FileType == ContentFileType.Edata)
                //{
                ContainerReaderService.LoadContent(contentFile);
                byte[] content = contentFile.Content;

                //Czytamy z pamięci żeby szybciej było, ale nie łądujemy zawartości żeby oszczedzić miejsce.
                var virtualContainer = ContainerReaderService.ReadRaw(content, false);

                //Tutaj mieć na uwadze, że ten sposób pozyskiwania ścieżki jest bardzo podatny na problemy, miejsce wolne itd.
                String lastPath = Path.Combine(Path.GetDirectoryName(targetPath), Path.GetFileName(contentFile.Path));
                contentWriter.Write(lastPath, content);

                virtualContainer.Path = lastPath;

                //Tutaj brakuje jakiejś możliwosci zmiany ścieżki dla kontenera
                //i zmiany stanu z wirtualnego do przechowywanego na dysku.

                containersHierarchy.Push(new ContainerHierarchyEntity(virtualContainer, containerPath));

                tempContainers.Add(lastPath);
                //}
            }
        }
Пример #2
0
        protected void LoadContentFiles(IEnumerable <IContentFile> files)
        {
            var notLoadedFiles = files.Where(x => !x.IsContentLoaded);

            ContainerReaderService.LoadContent(notLoadedFiles);
        }