Esempio n. 1
0
        private FileInfo UnloadImage(string projectFolder, string relativePath, ImageRowElement o, ProjectType projectType)
        {
            string folder = Path.GetDirectoryName(Path.Combine(projectFolder, relativePath));
            //if (!Directory.Exists(folder))
            //    Directory.CreateDirectory(folder);

            //string filePath = Path.Combine(projectFolder, relativePath);

            //using (BinaryWriter binWriter =
            //    new BinaryWriter(System.IO.File.Open(filePath, FileMode.Create)))
            //{
            //    binWriter.Write(o.ImageRow.BinaryData);
            //}

            //System.IO.File.SetCreationTime(filePath, o.ImageRow.Creation);
            //System.IO.File.SetLastWriteTime(filePath, o.ImageRow.Modified);

            var fileInfo = new FileInfo()
            {
                Path = Path.Combine(Path.GetDirectoryName(relativePath), Path.GetFileNameWithoutExtension(relativePath)),
                Id   = o.ImageRow.FileName,
                //Attributes = o.ImageRow.Attributes,
                BodyType = o.ImageRow.BodyType,
                Class    = o.GetType().FullName
            };

            string imageFolder = Path.Combine(folder, Path.GetFileNameWithoutExtension(relativePath));

            if (!Directory.Exists(imageFolder))
            {
                Directory.CreateDirectory(imageFolder);
            }

            Image image = (Image)o.ImageRow.Body;

            fileInfo.Items = new FileInfoList();

            foreach (var row in image.Rows)
            {
                UnresolvedPart rowPart           = new UnresolvedPart(row);
                string         imageRowPath      = GetRelativePath(rowPart, projectType);
                string         imageRelativePath = Path.Combine(imageFolder, Path.GetFileName(imageRowPath));
                FileInfo       rowFileInfo       = UnloadElement(projectFolder, imageRelativePath, rowPart, projectType);
                fileInfo.Items.Add(rowFileInfo);
            }

            return(fileInfo);
        }
Esempio n. 2
0
 private Uri GetTargetFolder(ImageRowElement o)
 {
     if ((o is RootPointer) || (o is Configuration) || (o is Version) || (o is Versions))
     {
         return(new Uri("/", UriKind.Relative));
     }
     else if (o is MetadataPart)
     {
         string path = "/" + o.GetType().Name;
         //if (((MetadataPart)o).GeneralProperties != null)
         //    path = path + "/" + ((MetadataPart)o).GeneralProperties.Name;
         path = path + "/";
         return(new Uri(path, UriKind.Relative));
     }
     else if (o is UnresolvedPart)
     {
         return(new Uri("/Unresolved/", UriKind.Relative));
     }
     else
     {
         return(new Uri("", UriKind.Relative));
     }
 }
Esempio n. 3
0
        private string GetRelativePath(ImageRowElement o, ProjectType projectType)
        {
            string path = "";

            if ((o is RootPointer) || (o is Configuration) || (o is Version) || (o is Versions) ||
                (o is UpdateInfo) ||
                (o is ExternalDataProcessor) ||
                (o is ExternalReport))
            {
                path = "";
            }
            else if (o is MetadataPart)
            {
                path = o.GetType().Name;
            }
            else if (o is UnresolvedPart)
            {
                path = "Unresolved";
            }
            else
            {
                path = "";
            }

            string fileName = o.ImageRow.FileName;

            if ((o is MetadataPart) && !String.IsNullOrEmpty(((MetadataPart)o).Name))
            {
                fileName = ((MetadataPart)o).Name;
            }

            string extension = "";

            if (o.ImageRow.BodyType == ImageRowTypes.CompressedMoxcel)
            {
                extension = ".mxl";
            }
            else if (o.ImageRow.BodyType == ImageRowTypes.CompressedUtf8MarkedString)
            {
                extension = ".txt";
            }
            else if (o.ImageRow.BodyType == ImageRowTypes.Utf8MarkedString)
            {
                extension = ".txt";
            }
            else if (o.ImageRow.BodyType == ImageRowTypes.CompressedImage)
            {
                extension = ".img";
            }

            if (o is MetadataPart)
            {
                if (projectType == ProjectType.Debug)
                {
                    extension = ".txt";
                }
                else
                {
                    extension = ".xml";
                }
            }

            return(Path.Combine(path, fileName + extension));
        }
Esempio n. 4
0
        private FileInfo UnloadElement(string projectFolder, string relativePath, ImageRowElement o, ProjectType projectType)
        {
            string folder = Path.GetDirectoryName(Path.Combine(projectFolder, relativePath));

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            string filePath = Path.Combine(projectFolder, relativePath);

            if ((o is UnresolvedPart) && (o.ImageRow.BodyType == ImageRowTypes.CompressedUtf8MarkedString))
            {
                using (StreamWriter outfile = new StreamWriter(filePath))
                {
                    try
                    {
                        DataSerializer dw = new DataSerializer();
                        outfile.Write(
                            dw.Serialize(
                                dw.Deserialize(o.ImageRow.Body as string)
                                )
                            );
                    }
                    catch (Exception)
                    {
                        outfile.Write(o.ImageRow.Body as string);
                    }
                }
            }
            else if (o is UnresolvedPart)
            {
                using (BinaryWriter binWriter =
                           new BinaryWriter(System.IO.File.Open(filePath, FileMode.Create)))
                {
                    binWriter.Write(o.ImageRow.BinaryData);
                }
            }
            else if (o is MetadataPart)
            {
                if (projectType == ProjectType.Debug)
                {
                    using (StreamWriter outfile = new StreamWriter(filePath))
                    {
                        DataSerializer dw = new DataSerializer();
                        outfile.Write(
                            dw.Serialize(
                                dw.Deserialize(((MetadataPart)o).ImageRow.Body as string)
                                )
                            );
                    }
                }
                else
                {
                    var settings = new XmlWriterSettings()
                    {
                        Indent = true
                    };
                    using (XmlWriter xmlWriter = XmlWriter.Create(filePath, settings))
                    {
                        System.Windows.Markup.XamlWriter.Save(o, xmlWriter);
                    }
                }
            }
            else
            {
                using (StreamWriter outfile = new StreamWriter(filePath))
                {
                    try
                    {
                        DataSerializer reader  = new DataSerializer();
                        var            content = reader.Deserialize(o.ImageRow.Body as string);
                        DataSerializer dw      = new DataSerializer();
                        outfile.Write(dw.Serialize(content));
                    }
                    catch (Exception)
                    {
                        outfile.Write(o.ImageRow.Body);
                    }
                }
            }

            System.IO.File.SetCreationTime(filePath, o.ImageRow.Creation);
            System.IO.File.SetLastWriteTime(filePath, o.ImageRow.Modified);

            var fileInfo = new FileInfo()
            {
                Path = relativePath,
                Id   = o.ImageRow.FileName,
                //Attributes = o.ImageRow.Attributes,
                BodyType = o.ImageRow.BodyType,
                Class    = o.GetType().FullName
            };

            return(fileInfo);
        }
Esempio n. 5
0
        private void UnloadObject(string folder, ImageRowElement o, ProjectType projectType)
        {
            string subFolder = folder + GetTargetFolder(o).ToString() + "\\";

            if (!Directory.Exists(subFolder))
            {
                Directory.CreateDirectory(subFolder);
            }

            string extension = "";

            if (o.ImageRow.BodyType == ImageRowTypes.CompressedMoxcel)
            {
                extension = ".mxl";
            }
            else if (o.ImageRow.BodyType == ImageRowTypes.CompressedUtf8MarkedString)
            {
                extension = ".txt";
            }
            else if (o.ImageRow.BodyType == ImageRowTypes.Utf8MarkedString)
            {
                extension = ".txt";
            }
            else if (o.ImageRow.BodyType == ImageRowTypes.CompressedImage)
            {
                extension = ".img";
            }

            if (o is MetadataPart)
            {
                if (projectType == ProjectType.String)
                {
                    extension = ".txt";
                }
                else
                {
                    extension = ".xml";
                }
            }

            var fileName = o.ImageRow.FileName;

            if ((o is MetadataPart) && ((MetadataPart)o).GeneralProperties != null)
            {
                fileName = ((MetadataPart)o).GeneralProperties.Name;
            }

            Uri relativeUri = new Uri(GetTargetFolder(o).ToString() + fileName + extension, UriKind.Relative);

            string filePath = subFolder + "\\" + fileName + extension;

            if (o.ImageRow.BodyType == ImageRowTypes.CompressedImage)
            {
                using (BinaryWriter binWriter =
                           new BinaryWriter(System.IO.File.Open(filePath, FileMode.Create)))
                {
                    binWriter.Write(o.ImageRow.BinaryData);
                }
            }
            else if (o.ImageRow.BodyType == ImageRowTypes.CompressedMoxcel)
            {
                using (BinaryWriter binWriter =
                           new BinaryWriter(System.IO.File.Open(filePath, FileMode.Create)))
                {
                    binWriter.Write(o.ImageRow.Body as byte[]);
                }
            }
            else if (o is MetadataPart)
            {
                if (projectType == ProjectType.String)
                {
                    using (StreamWriter outfile = new StreamWriter(filePath))
                    {
                        ////DataContractJsonSerializer js = new DataContractJsonSerializer(((MetadataPart)o).Body.GetType());
                        ////js.WriteObject(outfile.BaseStream, ((MetadataPart)o).Body);
                        //DataSerializer reader = new DataSerializer();
                        //var content = reader.Deserialize(o.ImageRow.Body as string);
                        DataSerializer dw = new DataSerializer();
                        outfile.Write(dw.Serialize(((MetadataPart)o).Body));
                    }
                }
                else
                {
                    var settings = new XmlWriterSettings()
                    {
                        Indent = true
                    };
                    using (XmlWriter xmlWriter = XmlWriter.Create(filePath, settings))
                    {
                        System.Windows.Markup.XamlWriter.Save(o, xmlWriter);
                    }
                }
            }
            else
            {
                using (StreamWriter outfile = new StreamWriter(filePath))
                {
                    try
                    {
                        DataSerializer reader  = new DataSerializer();
                        var            content = reader.Deserialize(o.ImageRow.Body as string);
                        DataSerializer dw      = new DataSerializer();
                        outfile.Write(dw.Serialize(content));
                    }
                    catch (Exception)
                    {
                        outfile.Write(o.ImageRow.Body);
                    }
                }
            }

            System.IO.File.SetCreationTime(filePath, o.ImageRow.Creation);
            System.IO.File.SetLastWriteTime(filePath, o.ImageRow.Modified);

            lock (this._settings)
            {
                var fileInfo = new FileInfo()
                {
                    Path       = relativeUri.ToString(),
                    Id         = o.ImageRow.FileName,
                    Attributes = o.ImageRow.Attributes,
                    BodyType   = o.ImageRow.BodyType,
                    Class      = o.GetType().Name
                };
                this._settings.Files.Add(fileInfo);
            }
        }