File: System\Data\Common\RowUpdatedEventArgs.cs
Project: ndp\fx\src\data\System.Data.csproj (System.Data)
//------------------------------------------------------------------------------
// <copyright file="RowUpdatedEventArgs.cs" company="Microsoft">
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
// <owner current="true" primary="true">Microsoft</owner>
// <owner current="true" primary="false">Microsoft</owner>
//------------------------------------------------------------------------------
 
namespace System.Data.Common {
 
    using System;
    using System.ComponentModel;
    using System.Collections;
    using System.Data;
 
/*
    public delegate void RowUpdatedEventHandler(object sender, RowUpdatedEventArgs e);
*/
 
    public class RowUpdatedEventArgs : System.EventArgs {
        private IDbCommand _command;
        private StatementType _statementType;
        private DataTableMapping _tableMapping;
        private Exception _errors;
 
        private DataRow _dataRow;
        private DataRow[] _dataRows;
 
        private UpdateStatus _status; // UpdateStatus.Continue; /*0*/
        private int _recordsAffected;
 
        public RowUpdatedEventArgs(DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping) {
            switch(statementType) {
            case StatementType.Select:
            case StatementType.Insert:
            case StatementType.Update:
            case StatementType.Delete:
            case StatementType.Batch:
                break;
            default:
                throw ADP.InvalidStatementType(statementType);
            }
            _dataRow = dataRow;
            _command = command;
            _statementType = statementType;
            _tableMapping = tableMapping;
        }
 
        public IDbCommand Command {
            get {
                return _command;
            }
        }
 
        public Exception Errors {
            get {
                return _errors;
            }
            set {
                _errors = value;
            }
        }
 
        public int RecordsAffected {
            get {
                return _recordsAffected;
            }
        }
 
        public DataRow Row {
            get {                
                return _dataRow;
            }
        }
 
        internal DataRow[] Rows {
            get {
                return _dataRows;
            }
        }
 
        public int RowCount {
            get {
                DataRow[] dataRows = _dataRows;
                return ((null != dataRows) ? dataRows.Length : ((null != _dataRow) ? 1 : 0));
            }
        }
 
        public StatementType StatementType {
            get {
                return _statementType;
            }
        }
        
        public UpdateStatus Status {
            get {
                return _status;
            }
            set {
                switch(value) {
                case UpdateStatus.Continue:
                case UpdateStatus.ErrorsOccurred:
                case UpdateStatus.SkipCurrentRow:
                case UpdateStatus.SkipAllRemainingRows:
                    _status = value;
                    break;
                default:
                    throw ADP.InvalidUpdateStatus(value);
                }
            }
        }
 
        public DataTableMapping TableMapping {
            get {
                return _tableMapping;
            }
        }
 
        internal void AdapterInit(DataRow[] dataRows) {
            _statementType = StatementType.Batch;
            _dataRows = dataRows;
 
            if ((null != dataRows) && (1 == dataRows.Length)) { // WebData 100063
                _dataRow = dataRows[0];
            }
        }
 
        internal void AdapterInit(int recordsAffected) {
            _recordsAffected = recordsAffected;
        }
 
        public void CopyToRows(DataRow[] array) {
            CopyToRows(array, 0);
        }
 
        public void CopyToRows(DataRow[] array, int arrayIndex) {
            DataRow[] dataRows = _dataRows;
            if (null != dataRows) {
                dataRows.CopyTo(array, arrayIndex);
            }
            else {
                if (null == array) {
                    throw ADP.ArgumentNull("array");
                }
                array[arrayIndex] = Row;
            }
        }
    }
}