Esempio n. 1
0
        private void creaFotografiaMancante(FileInfo fiFotoMancante, int numFotogramma)
        {
            bool success = false;


//			using( TransactionScope transaction = new TransactionScope() ) {

            try {
                Fotografia foto = new Fotografia();
                foto.id = Guid.NewGuid();
                foto.dataOraAcquisizione = fiFotoMancante.CreationTime;
                foto.giornata            = Convert.ToDateTime(PathUtil.giornoFromPath(fiFotoMancante.FullName));
                string idFotografo = PathUtil.fotografoIDFromPath(fiFotoMancante.FullName);
                foto.fotografo = UnitOfWorkScope.currentDbContext.Fotografi.SingleOrDefault(f => f.id == idFotografo);
                foto.numero    = numFotogramma;

                // il nome del file, lo memorizzo solamente relativo
                // scarto la parte iniziale di tutto il path togliendo il nome della cartella di base delle foto.
                // Questo perché le stesse foto le devono vedere altri computer della rete che
                // vedono il percorso condiviso in maniera differente.
                foto.nomeFile = PathUtil.nomeRelativoFoto(fiFotoMancante);

                // caricaMetadatiImmagine( foto );

                UnitOfWorkScope.currentDbContext.Fotografie.Add(foto);

                int test = UnitOfWorkScope.currentDbContext.SaveChanges();

                // Mark the transaction as complete.
                success = true;
//					transaction.Complete();
                contaFotoAggiunte++;

                _giornale.Debug("Inserita nuova foto: " + foto.ToString() + "test=" + test);
            } catch (Exception ee) {
                _giornale.Error("Non riesco ad inserire una foto. Nel db non c'è ma nel filesystem si: " + fiFotoMancante, ee);
            }


//			}

            _giornale.Debug("success = " + success);
        }
        /**
         * dato il nome del file della immagine, creo l'oggetto Fotografia e lo aggiungo al suo contenitore
         * (in pratica faccio una insert nel database).
         */
        private Fotografia aggiungiFoto(FileInfo fileInfo, int numFotogramma, DateTime tempoScarico)
        {
            _giornale.Debug("Sto per aggiungere la foto " + fileInfo + " al database");

            // Ad ogni foto persisto.
            // Se per esempio ho 500 foto da salvare, non posso permettermi che se una salta, perdo anche le altre 499 !
            Fotografia foto = null;

            LumenEntities objContext = UnitOfWorkScope.currentDbContext;

            foto    = new Fotografia();
            foto.id = Guid.NewGuid();
            foto.dataOraAcquisizione = tempoScarico;
            foto.fotografo           = _fotografo;
            foto.evento        = _evento;
            foto.didascalia    = _paramScarica.flashCardConfig.didascalia;
            foto.numero        = numFotogramma;
            foto.faseDelGiorno = (short?)_paramScarica.faseDelGiorno;
            foto.giornata      = LumenApplication.Instance.stato.giornataLavorativa;

            // il nome del file, lo memorizzo solamente relativo
            // scarto la parte iniziale di tutto il path togliendo il nome della cartella di base delle foto.
            // Questo perché le stesse foto le devono vedere altri computer della rete che
            // vedono il percorso condiviso in maniera differente.
            foto.nomeFile = PathUtil.nomeRelativoFoto(fileInfo);

            caricaMetadatiImmagine(fileInfo.FullName, foto);

            if (foto.dataOraScatto == null || foto.dataOraScatto == DateTime.MinValue)
            {
                foto.dataOraScatto = fileInfo.CreationTime;
            }

            objContext.Fotografie.Add(foto);

            objContext.SaveChanges();

            _giornale.Debug("Inserita nuova foto: " + foto.ToString() + " ora sono " + contaAggiunteDb);

            return(foto);
        }
Esempio n. 3
0
        public bool  modificaMetadatiFotografie(IEnumerable <Fotografia> fotografie, MetadatiFoto metadati)
        {
            bool esito = false;

            try
            {
                // riattacco l'entità che non si sa mai
                if (metadati.evento != null)
                {
                    try {
                        Evento e = metadati.evento;
                        OrmUtil.forseAttacca <Evento>(ref e);
                    } catch (Exception ee) {
                        _giornale.Debug("Potenziale errore", ee);
                    }
                }

                foreach (Fotografia f in fotografie)
                {
                    Fotografia fotografia = f;
                    try {
                        OrmUtil.forseAttacca(ref fotografia);
                    } catch (Exception ee) {
                        _giornale.Debug("Potenziale errore", ee);
                        fotografia = UnitOfWorkScope.currentDbContext.Fotografie.Single(f2 => f2.id == f.id);
                    }

#if DEBUG
                    String didascaliaNew = null;
                    if (metadati.usoDidascalia)
                    {
                        if (!String.IsNullOrWhiteSpace(metadati.didascalia))
                        {
                            didascaliaNew = metadati.didascalia.TrimEnd().ToUpper();
                        }
                    }

                    string strDidascaliaOld    = fotografia.didascalia;
                    string strFaseDelGiornoOld = fotografia.faseDelGiorno == null ? "empty" : FaseDelGiornoUtil.valoreToString(fotografia.faseDelGiorno);
                    string strEventoOld        = fotografia.evento == null ? "empty" : fotografia.evento.descrizione;

                    string strFaseDelGiornoNew = metadati.faseDelGiorno == null ? "empty" : metadati.faseDelGiorno.ToString();
                    string strEventoNew        = metadati.evento == null ? "empty" : metadati.evento.descrizione;

                    String msg = String.Format("Modificati metadati: {0} da: dida:{1} faseGG:{2} evento:{3} in dida:{4} faseGG:{5} evento:{6}",
                                               fotografia.ToString(),
                                               strDidascaliaOld,
                                               strFaseDelGiornoOld,
                                               strEventoOld,
                                               didascaliaNew,
                                               strFaseDelGiornoNew,
                                               strEventoNew
                                               );
#endif

                    modificaMetadatiFotografie(fotografia, metadati);

#if DEBUG
                    _giornale.Debug(msg);
#endif
                }

                UnitOfWorkScope.currentDbContext.SaveChanges();
                _giornale.Debug("Modifica metadati salvataggio eseguito. Ora committo la transazione");

                _giornale.Info("Commit metadati andato a buon fine");

                esito = true;
            } catch (Exception eee) {
                _giornale.Error("Modifica metadati", eee);
                esito = false;
                _giornale.Error("Impossibile modificare metadati", eee);
            }

            return(esito);
        }
Esempio n. 4
0
        /**
         * dato il nome del file della immagine, creo l'oggetto Fotografia e lo aggiungo al suo contenitore
         * (in pratica faccio una insert nel database).
         */
        private Fotografia aggiungiFotoDB(Fotografia foto, string nomeFileClone)
        {
            // Ad ogni foto persisto.
            // Se per esempio ho 500 foto da salvare, non posso permettermi che se una salta, perdo anche le altre 499 !
            Fotografia fotoClone = null;

            LumenEntities objContext = UnitOfWorkScope.currentDbContext;

            try
            {
                fotoClone    = new Fotografia();
                fotoClone.id = Guid.NewGuid();
                fotoClone.dataOraAcquisizione = foto.dataOraAcquisizione;

                Fotografo f = foto.fotografo;
                OrmUtil.forseAttacca <Fotografo>(ref f);
                fotoClone.fotografo = f;

                if (foto.evento != null)
                {
                    Evento e = foto.evento;
                    OrmUtil.forseAttacca <Evento>(ref e);
                    fotoClone.evento = e;
                }

                fotoClone.didascalia    = foto.didascalia;
                fotoClone.numero        = foto.numero;
                fotoClone.correzioniXml = foto.correzioniXml;

                if (foto.imgOrig != null)
                {
                    fotoClone.imgOrig = (IImmagine)foto.imgOrig.Clone();
                }
                if (foto.imgProvino != null)
                {
                    fotoClone.imgProvino = (IImmagine)foto.imgProvino.Clone();
                }
                if (foto.imgRisultante != null)
                {
                    fotoClone.imgRisultante = (IImmagine)foto.imgRisultante.Clone();
                }

                fotoClone.faseDelGiorno = foto.faseDelGiorno;
                fotoClone.giornata      = foto.giornata;

                // il nome del file, lo memorizzo solamente relativo
                // scarto la parte iniziale di tutto il path togliendo il nome della cartella di base delle foto.
                // Questo perché le stesse foto le devono vedere altri computer della rete che
                // vedono il percorso condiviso in maniera differente.
                fotoClone.nomeFile = nomeFileClone;

                objContext.Fotografie.Add(fotoClone);

                objContext.SaveChanges();
                ++conta;

                _giornale.Debug("Clonata nuova foto: " + foto.ToString() + " ora sono " + conta);
            }
            catch (Exception ee)
            {
                _giornale.Error("Non riesco ad inserire una foto clonata. Nel db non c'è ma nel filesystem si: " + fotoClone.nomeFile, ee);
            }

            return(foto);
        }