/// <summary> /// Chargement d'une archive /// </summary> /// <param name="stream">Streamer de chaîne ouvert sur le fichier d'archivage</param> protected void DoLoad(StringStreamer stream) { sections = new SortedList() ; section = null ; string line = stream.ReadLine() ; while (line != null) { if (IsSectionName( line )) section = DoCreateSection( sections, line ) ; else DoAddLineToSection( section, line ) ; line = stream.ReadLine() ; } }
/// <summary> /// Enregistre une archive dans un fichier d'archivage /// </summary> /// <param name="fileName">Nom complet du fichier d'archivage</param> /// <param name="stamp">Timbre de référence à apposer</param> public void ArchiveStore ( string fileName, string stamp ) { StringStreamer streamer = new StringStreamer( fileName, stamp ) ; streamer.Open( false ) ; try { DoStore( streamer ) ; } finally { streamer.Close() ; } }
/// <summary> /// Charge une archive à partir d'un fichier d'archivage /// </summary> /// <param name="fileName">Nom complet du fichier d'archivage</param> /// <param name="stamp">Timbre de référence à contrôler</param> public void ArchiveLoad ( string fileName, string stamp ) { StringStreamer streamer = new StringStreamer( fileName, stamp ) ; streamer.Open( true ) ; try { DoLoad( streamer ) ; } finally { streamer.Close() ; } }
/// <summary> /// Contrôle le timbrage d'un fichier d'archivage /// </summary> /// <param name="fileName">Nom complet du fichier d'archivage</param> /// <param name="stamp">Timbre de référence</param> public void ArchiveCheck( string fileName, string stamp ) { try { StringStreamer streamer = new StringStreamer( fileName, stamp ) ; try { streamer.Open( true ) ; } finally { streamer.Close() ; } } catch (Exception x) { throw new EArchiver( "Echec du contrôle du timbrage", x ) ; } }
/// <summary> /// Enregistrement d'une archive /// </summary> /// <param name="stream">Streamer de chaînes ouvert sur le fichier d'archivage</param> protected void DoStore( StringStreamer stream ) { foreach (DictionaryEntry entry in sections) DoStoreSection( stream, (string) entry.Key, (SortedList) entry.Value ) ; }
/// <summary> /// Enregistrement d'une section /// </summary> /// <param name="stream">Streamer de chaînes ouvert sur le fichier d'archivage</param> /// <param name="sectionName">Nom de la section à enregistrer</param> /// <param name="values">Dictionnaire clé/valeurs associé à la section</param> protected void DoStoreSection( StringStreamer stream, string sectionName, SortedList values ) { if (values.Count == 0) return ; stream.WriteLine( "" ) ; stream.WriteLine( "[" + sectionName + "]" ) ; foreach (DictionaryEntry entry in values) { if (entry.Value == null) stream.WriteLine( (string) entry.Key ) ; else stream.WriteLine( entry.Key + "=" + entry.Value ) ; } }