#region License
// The PostgreSQL License
//
// Copyright (C) 2018 The Npgsql Development Team
//
// Permission to use, copy, modify, and distribute this software and its
// documentation for any purpose, without fee, and without a written
// agreement is hereby granted, provided that the above copyright notice
// and this paragraph and the following two paragraphs appear in all copies.
//
// IN NO EVENT SHALL THE NPGSQL DEVELOPMENT TEAM BE LIABLE TO ANY PARTY
// FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
// INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
// DOCUMENTATION, EVEN IF THE NPGSQL DEVELOPMENT TEAM HAS BEEN ADVISED OF
// THE POSSIBILITY OF SUCH DAMAGE.
//
// THE NPGSQL DEVELOPMENT TEAM SPECIFICALLY DISCLAIMS ANY WARRANTIES,
// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
// ON AN "AS IS" BASIS, AND THE NPGSQL DEVELOPMENT TEAM HAS NO OBLIGATIONS
// TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
#endregion
using System;
using System.Data;
using System.Data.Common;
using JetBrains.Annotations;
namespace Npgsql
{
///
/// Represents the method that handles the RowUpdated events.
///
/// The source of the event.
/// A NpgsqlRowUpdatedEventArgs that contains the event data.
public delegate void NpgsqlRowUpdatedEventHandler(Object sender, NpgsqlRowUpdatedEventArgs e);
///
/// Represents the method that handles the RowUpdating events.
///
/// The source of the event.
/// A NpgsqlRowUpdatingEventArgs that contains the event data.
public delegate void NpgsqlRowUpdatingEventHandler(Object sender, NpgsqlRowUpdatingEventArgs e);
///
/// This class represents an adapter from many commands: select, update, insert and delete to fill Datasets.
///
[System.ComponentModel.DesignerCategory("")]
public sealed class NpgsqlDataAdapter : DbDataAdapter
{
///
/// Row updated event.
///
[PublicAPI]
public event NpgsqlRowUpdatedEventHandler RowUpdated;
///
/// Row updating event.
///
public event NpgsqlRowUpdatingEventHandler RowUpdating;
///
/// Default constructor.
///
public NpgsqlDataAdapter() {}
///
/// Constructor.
///
///
public NpgsqlDataAdapter(NpgsqlCommand selectCommand)
{
SelectCommand = selectCommand;
}
///
/// Constructor.
///
///
///
public NpgsqlDataAdapter(string selectCommandText, NpgsqlConnection selectConnection)
: this(new NpgsqlCommand(selectCommandText, selectConnection)) {}
///
/// Constructor.
///
///
///
public NpgsqlDataAdapter(string selectCommandText, string selectConnectionString)
: this(selectCommandText, new NpgsqlConnection(selectConnectionString)) {}
///
/// Create row updated event.
///
protected override RowUpdatedEventArgs CreateRowUpdatedEvent([NotNull] DataRow dataRow, [NotNull] IDbCommand command,
System.Data.StatementType statementType,
[NotNull] DataTableMapping tableMapping)
{
return new NpgsqlRowUpdatedEventArgs(dataRow, command, statementType, tableMapping);
}
///
/// Create row updating event.
///
protected override RowUpdatingEventArgs CreateRowUpdatingEvent([NotNull] DataRow dataRow, [NotNull] IDbCommand command,
System.Data.StatementType statementType,
[NotNull] DataTableMapping tableMapping)
{
return new NpgsqlRowUpdatingEventArgs(dataRow, command, statementType, tableMapping);
}
///
/// Raise the RowUpdated event.
///
///
protected override void OnRowUpdated([NotNull] RowUpdatedEventArgs value)
{
//base.OnRowUpdated(value);
if (RowUpdated != null && value is NpgsqlRowUpdatedEventArgs)
RowUpdated(this, (NpgsqlRowUpdatedEventArgs)value);
}
///
/// Raise the RowUpdating event.
///
///
protected override void OnRowUpdating([NotNull] RowUpdatingEventArgs value)
{
if (RowUpdating != null && value is NpgsqlRowUpdatingEventArgs)
RowUpdating(this, (NpgsqlRowUpdatingEventArgs) value);
}
///
/// Delete command.
///
public new NpgsqlCommand DeleteCommand
{
get { return (NpgsqlCommand)base.DeleteCommand; }
set { base.DeleteCommand = value; }
}
///
/// Select command.
///
public new NpgsqlCommand SelectCommand
{
get { return (NpgsqlCommand)base.SelectCommand; }
set { base.SelectCommand = value; }
}
///
/// Update command.
///
public new NpgsqlCommand UpdateCommand
{
get { return (NpgsqlCommand)base.UpdateCommand; }
set { base.UpdateCommand = value; }
}
///
/// Insert command.
///
public new NpgsqlCommand InsertCommand
{
get { return (NpgsqlCommand)base.InsertCommand; }
set { base.InsertCommand = value; }
}
}
#pragma warning disable 1591
public class NpgsqlRowUpdatingEventArgs : RowUpdatingEventArgs
{
public NpgsqlRowUpdatingEventArgs(DataRow dataRow, IDbCommand command, System.Data.StatementType statementType,
DataTableMapping tableMapping)
: base(dataRow, command, statementType, tableMapping) {}
}
public class NpgsqlRowUpdatedEventArgs : RowUpdatedEventArgs
{
public NpgsqlRowUpdatedEventArgs(DataRow dataRow, IDbCommand command, System.Data.StatementType statementType,
DataTableMapping tableMapping)
: base(dataRow, command, statementType, tableMapping) {}
}
#pragma warning restore 1591
}