Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/18/15 10:54:32 (10 years ago)
Author:
bburlacu
Message:

#2276: Merged trunk changes.

Location:
branches/HeuristicLab.DatasetRefactor/sources
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.DatasetRefactor/sources

  • branches/HeuristicLab.DatasetRefactor/sources/HeuristicLab.Persistence

  • branches/HeuristicLab.DatasetRefactor/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlGenerator.cs

    r11171 r12031  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    3030using HeuristicLab.Persistence.Interfaces;
    3131using HeuristicLab.Tracing;
    32 using ICSharpCode.SharpZipLib.Zip;
    3332
    3433namespace HeuristicLab.Persistence.Default.Xml {
     
    286285    /// <param name="filename">The filename.</param>
    287286    public static void Serialize(object o, string filename) {
    288       Serialize(o, filename, ConfigurationService.Instance.GetConfiguration(new XmlFormat()), false, 5);
     287      Serialize(o, filename, ConfigurationService.Instance.GetConfiguration(new XmlFormat()), false, CompressionLevel.Optimal);
    289288    }
    290289
     
    297296    /// <param name="filename">The filename.</param>
    298297    /// <param name="compression">ZIP file compression level</param>
    299     public static void Serialize(object o, string filename, int compression) {
     298    public static void Serialize(object o, string filename, CompressionLevel compression) {
    300299      Serialize(o, filename, ConfigurationService.Instance.GetConfiguration(new XmlFormat()), false, compression);
    301300    }
     
    309308    /// <param name="config">The configuration.</param>
    310309    public static void Serialize(object obj, string filename, Configuration config) {
    311       Serialize(obj, filename, config, false, 5);
     310      Serialize(obj, filename, config, false, CompressionLevel.Optimal);
    312311    }
    313312
     
    320319    /// <param name="includeAssemblies">if set to <c>true</c> include needed assemblies.</param>
    321320    /// <param name="compression">The ZIP compression level.</param>
    322     public static void Serialize(object obj, string filename, Configuration config, bool includeAssemblies, int compression) {
     321    public static void Serialize(object obj, string filename, Configuration config, bool includeAssemblies, CompressionLevel compression) {
    323322      try {
    324323        string tempfile = Path.GetTempFileName();
     
    328327          serializer.InterleaveTypeInformation = false;
    329328          XmlGenerator generator = new XmlGenerator();
    330           using (ZipOutputStream zipStream = new ZipOutputStream(stream)) {
    331             zipStream.IsStreamOwner = false;
    332             zipStream.SetLevel(compression);
    333             zipStream.PutNextEntry(new ZipEntry("data.xml") { DateTime = DateTime.MinValue });
    334             StreamWriter writer = new StreamWriter(zipStream);
    335             foreach (ISerializationToken token in serializer) {
    336               string line = generator.Format(token);
    337               writer.Write(line);
     329          using (ZipArchive zipArchive = new ZipArchive(stream, ZipArchiveMode.Create)) {
     330            ZipArchiveEntry entry = zipArchive.CreateEntry("data.xml", compression);
     331            using (StreamWriter writer = new StreamWriter(entry.Open())) {
     332              foreach (ISerializationToken token in serializer) {
     333                string line = generator.Format(token);
     334                writer.Write(line);
     335              }
    338336            }
    339             writer.Flush();
    340             zipStream.PutNextEntry(new ZipEntry("typecache.xml") { DateTime = DateTime.MinValue });
    341             foreach (string line in generator.Format(serializer.TypeCache)) {
    342               writer.Write(line);
     337            entry = zipArchive.CreateEntry("typecache.xml", compression);
     338            using (StreamWriter writer = new StreamWriter(entry.Open())) {
     339              foreach (string line in generator.Format(serializer.TypeCache)) {
     340                writer.Write(line);
     341              }
    343342            }
    344             writer.Flush();
    345343            if (includeAssemblies) {
    346344              foreach (string name in serializer.RequiredFiles) {
     
    350348                  continue;
    351349                }
    352                 zipStream.PutNextEntry(new ZipEntry(Path.GetFileName(uri.PathAndQuery)));
    353                 FileStream reader = File.OpenRead(uri.PathAndQuery);
    354                 byte[] buffer = new byte[1024 * 1024];
    355                 while (true) {
    356                   int bytesRead = reader.Read(buffer, 0, 1024 * 1024);
    357                   if (bytesRead == 0)
    358                     break;
    359                   zipStream.Write(buffer, 0, bytesRead);
     350                entry = zipArchive.CreateEntry(Path.GetFileName(uri.PathAndQuery), compression);
     351                using (BinaryWriter bw = new BinaryWriter(entry.Open())) {
     352                  using (FileStream reader = File.OpenRead(uri.PathAndQuery)) {
     353                    byte[] buffer = new byte[1024 * 1024];
     354                    while (true) {
     355                      int bytesRead = reader.Read(buffer, 0, 1024 * 1024);
     356                      if (bytesRead == 0)
     357                        break;
     358                      bw.Write(buffer, 0, bytesRead);
     359                    }
     360                  }
    360361                }
    361                 writer.Flush();
    362362              }
    363363            }
     
    407407        Serializer serializer = new Serializer(obj, config);
    408408        Serialize(stream, serializer);
    409       } catch (PersistenceException) {
     409      }
     410      catch (PersistenceException) {
    410411        throw;
    411       } catch (Exception e) {
     412      }
     413      catch (Exception e) {
    412414        throw new PersistenceException("Unexpected exception during Serialization.", e);
    413415      }
     
    427429        Serialize(stream, serializer);
    428430        types = serializer.SerializedTypes;
    429       } catch (PersistenceException) {
     431      }
     432      catch (PersistenceException) {
    430433        throw;
    431       } catch (Exception e) {
     434      }
     435      catch (Exception e) {
    432436        throw new PersistenceException("Unexpected exception during Serialization.", e);
    433437      }
Note: See TracChangeset for help on using the changeset viewer.