Ejemplo n.º 1
0
 public object Deserialize(global::MongoDB.Bson.IO.BsonReader bsonReader, Type nominalType, IBsonSerializationOptions options)
 {
     CalendarWrapper item = new CalendarWrapper();
     
     bsonReader.ReadStartDocument();
     item.Name = bsonReader.ReadString("_id");
     var binaryData = bsonReader.ReadBinaryData("ContentStream");
     item.Calendar = (ICalendar)new BinaryFormatter().Deserialize(new MemoryStream(binaryData.Bytes));
     bsonReader.ReadEndDocument();
     
     return item;
 }
Ejemplo n.º 2
0
        public object Deserialize(global::MongoDB.Bson.IO.BsonReader bsonReader, Type nominalType, IBsonSerializationOptions options)
        {
            var item = new CalendarWrapper();

            bsonReader.ReadStartDocument();
            item.Name = bsonReader.ReadString("_id");
            var binaryData = bsonReader.ReadBinaryData("ContentStream");

            item.Calendar = (ICalendar) new BinaryFormatter().Deserialize(new MemoryStream(binaryData.Bytes));
            bsonReader.ReadEndDocument();

            return(item);
        }
Ejemplo n.º 3
0
        public object Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            BsonReader bsonReader = (BsonReader)context.Reader;

            CalendarWrapper item = new CalendarWrapper();

            bsonReader.ReadStartDocument();
            item.Name = bsonReader.ReadString(ID);
            var binaryData = bsonReader.ReadBinaryData(CONTENT_STREAM);
            item.Calendar = (ICalendar)new BinaryFormatter().Deserialize(new MemoryStream(binaryData.Bytes));
            bsonReader.ReadEndDocument();

            return item;
        }
Ejemplo n.º 4
0
        public object Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            BsonReader bsonReader = (BsonReader)context.Reader;

            CalendarWrapper item = new CalendarWrapper();

            bsonReader.ReadStartDocument();
            item.Name = bsonReader.ReadString(ID);
            var binaryData = bsonReader.ReadBinaryData(CONTENT_STREAM);

            item.Calendar = (ICalendar) new BinaryFormatter().Deserialize(new MemoryStream(binaryData.Bytes));
            bsonReader.ReadEndDocument();

            return(item);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Store the given <see cref="ICalendar" />.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="calendar">The <see cref="ICalendar" /> to be stored.</param>
        /// <param name="replaceExisting">If <see langword="true" />, any <see cref="ICalendar" /> existing
        /// in the <see cref="IJobStore" /> with the same name and group
        /// should be over-written.</param>
        /// <param name="updateTriggers">If <see langword="true" />, any <see cref="ITrigger" />s existing
        /// in the <see cref="IJobStore" /> that reference an existing
        /// Calendar with the same name with have their next fire time
        /// re-computed with the new <see cref="ICalendar" />.</param>
        public virtual void StoreCalendar(string name, ICalendar calendar, bool replaceExisting,
            bool updateTriggers)
        {
            CalendarWrapper calendarWrapper = new CalendarWrapper()
                {
                    Name = name,
                    Calendar = calendar
                };

            lock (lockObject)
            {
                if (this.Calendars.FindOneByIdAs<BsonDocument>(name) != null
                    && replaceExisting == false)
                {
                    throw new ObjectAlreadyExistsException(string.Format(CultureInfo.InvariantCulture, "Calendar with name '{0}' already exists.", name));
                }

                this.Calendars.Save(calendarWrapper);

                if (updateTriggers)
                {
                    var triggers = this.Triggers.FindAs<IOperableTrigger>(Query.EQ("CalendarName", name));
                    foreach (IOperableTrigger trigger in triggers)
                    {
                        trigger.UpdateWithNewCalendar(calendar, MisfireThreshold);
                        this.Triggers.Save(trigger);
                    }
                }
            }
        }