コード例 #1
0
        /// <summary>
        /// Procesa un mensaje de tipo DDP Update.
        /// Esta funcion utiliza el DDPImportHelper para incorporar la informacion del DDP en formato XML a la base de datos.
        /// </summary>
        /// <param name="msg">Mensaje de DDP Update</param>
        public void ProcessDDPUpdate(DDPUpdateType ddpUpdate)
        {
            DDPUpdate dbupd;

            using (DDPUpdateDataAccess dao = new DDPUpdateDataAccess())
            {
                dbupd = dao.Create(TypeHelper.Map2DB(ddpUpdate), 0);
            }

            if (ddpUpdate.UpdateType != DDPUpdateTypeUpdateType.Item4)
            {
                //Full??
                if (ddpUpdate.UpdateType == DDPUpdateTypeUpdateType.Item3)
                {
                    ICSharpCode.SharpZipLib.Zip.ZipFile zipFile = new ZipFile(new MemoryStream(ddpUpdate.DDPFile));

                    var ddpVersion = InsertCompleteDDP(ddpUpdate, DateTime.UtcNow.AddYears(-100));

                    log.Info("ProcessDDPUpdate: Starting full");
                    DDPImportHelper importer = new DDPImportHelper();
                    ddpVersion.published_at = importer.Import(zipFile.GetInputStream(0), ddpVersion);
                    zipFile.Close();

                    using (DDPVersionDataAccess ddpverda = new DDPVersionDataAccess())
                    {
                        ddpverda.update(ddpVersion);
                    }
                }
                else
                {
                    //Salvamos como updates pendientes y luego el scheduler procesa (incrementales y regulares)
                    ICSharpCode.SharpZipLib.Zip.ZipFile zipFile = new ZipFile(new MemoryStream(ddpUpdate.DDPFile));
                    DDPImportHelper importer = new DDPImportHelper();
                    importer.SavePendingUpdates(zipFile.GetInputStream(0), dbupd.Id);
                    log.Info("ProcessDDPUpdate: Saved in pending updates..");
                    zipFile.Close();
                }
            }
            else
            {
                log.Info("ProcessDDPUpdate: Not processing archived or mixed incr/reg ddpupdate");
            }

            log.Info("ProcessDDPUpdate: DDPUpdate finished");
        }
コード例 #2
0
        public Response DDPUpdate(DDPUpdateType ddpUpdate)
        {
            log.Info("New DDPUpdate message arrived");
            validateSchemaVersion(ddpUpdate.schemaVersion);

            //Create message and enqueue it
            Message msg = new Message(ddpUpdate);

            msg.Label = "ddpUpdate";

            EnqueueMessageInQueue(msg);

            //Build response
            Response response = new Response();

            response.response = responseType.Success;
            log.Info("DDPUpdate Message first validation OK, enqueued");
            return(response);
        }
コード例 #3
0
 static public DDPVersion InsertCompleteDDP(DDPUpdateType ddp, DateTime publishDate)
 {
     return(InsertCompleteDDP(ddp.DDPFileVersionNum, publishDate, ddp.DDPFile));
 }