Пример #1
0
        /// <summary>
        /// Saves the collection of PublishRequests into the database for recovery.
        /// </summary>
        /// <param name="requestCollection">The request collection.</param>
        /// <param name="isQueuedRequest">if set to <c>true</c> [is queued request].</param>
        /// <returns>True if successful otherwise false.</returns>
        public static bool SaveToDatabase(IEnumerable <PublishRequest> requestCollection, bool isQueuedRequest)
        {
            if (requestCollection.Count() > 0)
            {
                return(false);
            }

            try
            {
                using (var databaseContext = new ZentityAdministrationDataContext(Utilities.ZentityConnectionString))
                {
                    List <PublishRequestRecovery> requestCollectionDB = new List <PublishRequestRecovery>();
                    int loopIndexNew = 0;
                    int loopIndexOld = 0;

                    foreach (var sourceRequest in requestCollection)
                    {
                        var existingRequestDB = databaseContext.PublishRequestRecoveries.Where(request => request.InstanceId == sourceRequest.InstanceId).FirstOrDefault();
                        if (existingRequestDB == default(PublishRequestRecovery))
                        {
                            PublishRequestRecovery newRequestDB = new PublishRequestRecovery
                            {
                                InstanceId         = sourceRequest.InstanceId,
                                DataModelNamespace = sourceRequest.DataModelNamespace,
                                ResourceTypeName   = sourceRequest.ResourceTypeName,
                                IsQueuedRequest    = isQueuedRequest,
                                QueueOrder         = isQueuedRequest ? loopIndexNew++ : 0,
                                ObjectData         = sourceRequest.SerializeToXElement()
                            };
                            requestCollectionDB.Add(newRequestDB);
                        }
                        else
                        {
                            existingRequestDB.IsQueuedRequest = isQueuedRequest;
                            existingRequestDB.QueueOrder      = loopIndexOld++;
                            existingRequestDB.ObjectData      = sourceRequest.SerializeToXElement();
                            databaseContext.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
                        }
                    }

                    if (requestCollectionDB.Count > 0)
                    {
                        databaseContext.PublishRequestRecoveries.InsertAllOnSubmit(requestCollectionDB);
                    }

                    databaseContext.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
                    return(true);
                }
            }
            catch (Exception ex)
            {
                Globals.TraceMessage(TraceEventType.Error, ex.ToString(), ex.Message);
            }

            return(false);
        }
Пример #2
0
        /// <summary>
        /// Saves the PublishRequest into database for recovery.
        /// </summary>
        /// <param name="isQueuedRequest">if set to <c>true</c> [is queued request].</param>
        /// <returns>True if successful otherwise false.</returns>
        internal bool SaveToDatabase(bool isQueuedRequest)
        {
            try
            {
                using (var databaseContext = new ZentityAdministrationDataContext(Utilities.ZentityConnectionString))
                {
                    var existingRequestDB = databaseContext.PublishRequestRecoveries.Where(request => request.InstanceId == this.InstanceId).FirstOrDefault();
                    if (existingRequestDB == default(PublishRequestRecovery))
                    {
                        // If this is a queued request then fetch the highest QueueOrder number.
                        int currentQueueOrder = 0;
                        if (isQueuedRequest)
                        {
                            var queueOrderList = databaseContext.PublishRequestRecoveries.Where(request => request.IsQueuedRequest).Select(request => request.QueueOrder);
                            if (queueOrderList.Count() > 0)
                            {
                                currentQueueOrder = queueOrderList.Max();
                            }
                        }

                        // Create the new PublishRequestRecovery object and add to the database
                        PublishRequestRecovery newPublishRequestDB = new PublishRequestRecovery
                        {
                            InstanceId         = this.InstanceId,
                            DataModelNamespace = this.DataModelNamespace,
                            ResourceTypeName   = this.ResourceTypeName,
                            IsQueuedRequest    = isQueuedRequest,
                            QueueOrder         = currentQueueOrder + 1,
                            ObjectData         = this.SerializeToXElement()
                        };

                        databaseContext.PublishRequestRecoveries.InsertOnSubmit(newPublishRequestDB);
                    }
                    else
                    {
                        if (existingRequestDB.IsQueuedRequest && isQueuedRequest == false)
                        {
                            existingRequestDB.QueueOrder = 0;
                        }
                        existingRequestDB.DataModelNamespace = this.DataModelNamespace;
                        existingRequestDB.ResourceTypeName   = this.ResourceTypeName;
                        existingRequestDB.IsQueuedRequest    = isQueuedRequest;
                        existingRequestDB.ObjectData         = this.SerializeToXElement();
                    }

                    databaseContext.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
                }
            }
            catch (Exception ex)
            {
                Globals.TraceMessage(TraceEventType.Error, ex.ToString(), ex.Message);
            }

            return(false);
        }
Пример #3
0
        /// <summary>
        /// Deserializes PublishRequest from the XElement property (ObjectData) of PublishRequestDB.
        /// </summary>
        /// <param name="publishRequestDB">The publish request from DB.</param>
        /// <returns>PublishRequest from the XElement property (ObjectData) of PublishRequestDB</returns>
        internal static PublishRequest DeserializeFromXElement(this PublishRequestRecovery publishRequestDB)
        {
            Globals.TraceMessage(TraceEventType.Verbose, string.Empty, Properties.Messages.StartedFunctionMessage);
            if (publishRequestDB != null)
            {
                try
                {
                    DataContractSerializer serializer = new DataContractSerializer(typeof(PublishRequest));
                    return((PublishRequest)serializer.ReadObject(publishRequestDB.ObjectData.CreateReader(ReaderOptions.OmitDuplicateNamespaces)));
                }
                catch (Exception ex)
                {
                    Globals.TraceMessage(TraceEventType.Error, ex.ToString(), ex.Message);
                }
            }

            Globals.TraceMessage(TraceEventType.Verbose, Properties.Messages.NullEmptyMessage, Properties.Messages.NullEmptyTitle);
            return(null);
        }
Пример #4
0
 partial void DeletePublishRequestRecovery(PublishRequestRecovery instance);
Пример #5
0
 partial void UpdatePublishRequestRecovery(PublishRequestRecovery instance);
Пример #6
0
 partial void InsertPublishRequestRecovery(PublishRequestRecovery instance);