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; }
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); }
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; }
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); }
/// <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); } } } }