public void CheckIn(WorkSessionStateContainer hibernationContainer, Guid workSessionId) { HibernatedItem item = new HibernatedItem(workSessionId, hibernationContainer.Descriptor.DocumentPathOrID, DateTime.Now, WorkSessionStateDatabaseSerializer.Serialize(hibernationContainer.Descriptor), WorkSessionStateDatabaseSerializer.Serialize(hibernationContainer.Chamber)); CurrentHibernationStorage.CheckIn(item); }
public static WorkSessionStateContainer Deserialize(HibernatedItem item, bool descriptorOnly) { var formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); HibernationChamberDescriptor header = (HibernationChamberDescriptor)formatter.Deserialize(new MemoryStream(item.Header)); HibernationChamber body = descriptorOnly ? null : (HibernationChamber)formatter.Deserialize(new MemoryStream(item.Content)); return(new WorkSessionStateContainer(header, body)); }
public void CheckIn(HibernatedItem item) { if (HasItem(item.WorkSessionId)) { UpdateItem(item); } else { AddItem(item); } }
protected WorkSessionStateContainer CheckOut(Guid workSessionId, bool descriptorOnly) { HibernatedItem item = CurrentHibernationStorage.CheckOut(workSessionId); WorkSessionStateContainer container = null; if (item != null) { container = WorkSessionStateDatabaseSerializer.Deserialize(item, descriptorOnly); CurrentHibernationStorage.DeleteItem(workSessionId); } return(container); }
void AddItem(HibernatedItem item) { using (SqlConnection connection = new SqlConnection(settings.ConnectionString)) { string commandText = "INSERT INTO [#TableName#] ([#WorkSessionId#], [#DocumentId#], [#HibernationTime#], [#Header#], [#Content#]) VALUES (@WorkSessionId, @DocumentId, @HibernationTime, @Header, @Content)"; commandText = HibernationTableQueryHelper.PatchSQLCommandText(commandText, settings); SqlCommand command = new SqlCommand(commandText, connection); command.Parameters.Add(new SqlParameter("@WorkSessionId", item.WorkSessionId)); command.Parameters.Add(new SqlParameter("@DocumentId", item.DocumentId)); command.Parameters.Add(new SqlParameter("@HibernationTime", item.HibernationTime)); command.Parameters.Add(new SqlParameter("@Header", item.Header)); command.Parameters.Add(new SqlParameter("@Content", item.Content)); connection.Open(); command.ExecuteNonQuery(); connection.Close(); } }
void UpdateItem(HibernatedItem item) { using (SqlConnection connection = new SqlConnection(settings.ConnectionString)) { string commandText = "UPDATE [#TableName#] SET [#DocumentId#]=@DocumentId, [#HibernationTime#]=@HibernationTime, [#Header#]=@Header, [#Content#]=@Content WHERE [#WorkSessionId#]=@WorkSessionId"; commandText = HibernationTableQueryHelper.PatchSQLCommandText(commandText, settings); SqlCommand command = new SqlCommand(commandText, connection); command.Parameters.Add(new SqlParameter("@WorkSessionId", item.WorkSessionId)); command.Parameters.Add(new SqlParameter("@DocumentId", item.DocumentId)); command.Parameters.Add(new SqlParameter("@HibernationTime", item.HibernationTime)); command.Parameters.Add(new SqlParameter("@Header", item.Header)); command.Parameters.Add(new SqlParameter("@Content", item.Content)); connection.Open(); command.ExecuteNonQuery(); connection.Close(); } }
public HibernatedItem GetItemByWorkSessionId(Guid workSessionId) { HibernatedItem item = null; using (SqlConnection connection = new SqlConnection(settings.ConnectionString)) { string commandText = "SELECT [#WorkSessionId#], [#DocumentId#], [#HibernationTime#], [#Header#], [#Content#] FROM [#TableName#] WHERE [#WorkSessionId#] = @WorkSessionId"; commandText = HibernationTableQueryHelper.PatchSQLCommandText(commandText, settings); SqlCommand command = new SqlCommand(commandText, connection); command.Parameters.Add(new SqlParameter("WorkSessionId", workSessionId)); connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { if (reader.Read()) { item = new HibernatedItem(workSessionId); item.DocumentId = (string)reader[settings.ColumnNames.DocumentId]; item.HibernationTime = Convert.ToDateTime(reader[settings.ColumnNames.HibernationTime]); item.Header = (byte[])reader[settings.ColumnNames.Header]; item.Content = (byte[])reader[settings.ColumnNames.Content]; } connection.Close(); } } return(item); }