public void Save(ProgrammazioneGiornaliera elem, BinaryWriter bw)
        {
            // Programmazione Giornaliera
            bw.Write(elem.GetType().ToString());
            bw.Write(elem.Nome);

            // Modello di riferimento
            Modello modello = Documento.getInstance().ModelloRiferimento;

            bw.Write(modello.Size.Width);
            bw.Write(modello.Size.Height);

            // Sequenze
            SequenzaPersister persister = new SequenzaPersister();
            FasciaOraria      fo;
            Sequenza          sq;

            bw.Write(elem.Count() - elem.nDummy());
            for (int i = 0; i < elem.Count(); i++)
            {
                sq = elem[i];
                if (sq == ProgrammazioneGiornaliera.SEQUENZA_DUMMY)
                {
                    continue;
                }
                persister.Save(sq, bw);
                fo = elem.GetFasciaOrariaOf(sq);
                bw.Write(fo.StartQuarter);
                bw.Write(fo.EndQuarter);
            }
        }
Пример #2
0
 static PersisterFactory()
 {
     _persisters                             = new IPersister[Enum.GetNames(typeof(PersisterTypes)).Length];
     _persisters[INFO_TESTO]                 = new InformazioneTestualePersister();
     _persisters[INFO_DATA_ORA]              = new InformazioneDataOraPersister();
     _persisters[IMMAGINE_FISSA]             = new ImmagineFissaPersister();
     _persisters[ANIMAZIONE]                 = new AnimazionePersister();
     _persisters[SEQUENZA]                   = new SequenzaPersister();
     _persisters[PROGRAMMAZIONE_GIORNALIERA] = new ProgrammazioneGiornalieraPersister();
     _persisters[PROGRAMMAZIONE_SETTIMANALE] = new ProgrammazioneSettimanalePersister();
 }
        public ProgrammazioneGiornaliera Retrieve(BinaryReader br)
        {
            // Programmazione Giornaliera
            string nome = br.ReadString();
            ProgrammazioneGiornaliera result = new ProgrammazioneGiornaliera();

            result.Nome = nome;

            // Modello
            Modello modello = Documento.getInstance().ModelloRiferimento;
            int     width   = br.ReadInt32();
            int     height  = br.ReadInt32();

            if (width != modello.Size.Width || height != modello.Size.Height)
            {
                return(null);
            }

            // Sequenze
            SequenzaPersister persister = new SequenzaPersister();
            Sequenza          seq;
            FasciaOraria      fo;
            string            type;
            uint startQuarter, endQuarter;
            int  count = br.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                type         = br.ReadString();
                seq          = persister.Retrieve(br);
                startQuarter = br.ReadUInt32();
                endQuarter   = br.ReadUInt32();
                fo           = new FasciaOraria(startQuarter, endQuarter);
                result.InserisciSequenza(seq, fo);
            }

            // Out
            return(result);
        }