Click here to Skip to main content
15,885,126 members
Articles / Desktop Programming / Windows Forms

Do You Really Want To Be Agile?

Rate me:
Please Sign up or sign in to vote.
4.91/5 (50 votes)
29 Dec 2011CPOL44 min read 97.8K   735   112  
A walk on the wild side using Relationship Oriented Programming.
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Clifton.Data</name>
    </assembly>
    <members>
        <member name="M:Clifton.Data.RowTransactionSandbox.Add(System.Collections.Generic.List{System.String})">
            <summary>
            Add identity fields (as value 0)
            </summary>
            <param name="identFields"></param>
        </member>
        <member name="M:Clifton.Data.RowTransactionSandbox.ClearTransactionLog">
            <summary>
            Called when the current row has changed.  When the current row changes, discard all previous transactions.
            </summary>
        </member>
        <member name="M:Clifton.Data.RowTransactionSandbox.UpdateSource(System.Collections.Generic.List{Clifton.Data.TransactionRecordPacket})">
            <summary>
            Synchronize the source with the sandbox transactions and prepares for a new "Add" operation.
            Existing non-PK transactions are preserved so that subsequent add operations re-use the
            previous transaction's data.
            </summary>
            <param name="trpList"></param>
        </member>
        <member name="P:Clifton.Data.RowTransactionSandbox.Tag">
            <summary>
            Gets/sets tag
            </summary>
        </member>
        <member name="P:Clifton.Data.RowTransactionSandbox.State">
            <summary>
            Gets/sets state
            </summary>
        </member>
        <member name="P:Clifton.Data.RowTransactionSandbox.Row">
            <summary>
            Gets/sets row
            </summary>
        </member>
        <member name="P:Clifton.Data.RowTransactionSandbox.SandboxTable">
            <summary>
            Gets/sets sandboxTable
            </summary>
        </member>
        <member name="P:Clifton.Data.RowTransactionSandbox.SourceLogger">
            <summary>
            Gets/sets sourceTable
            </summary>
        </member>
        <member name="P:Clifton.Data.RowColumnKey.ColumnName">
            <summary>
            Gets/sets columnName
            </summary>
        </member>
        <member name="P:Clifton.Data.RowColumnKey.Row">
            <summary>
            Gets/sets row
            </summary>
        </member>
        <member name="T:Clifton.Data.DataTableTransactionException">
            <summary>
            Exception class for exceptions occurring in the DataTableTransaction module.
            </summary>
        </member>
        <member name="T:Clifton.Data.TransactionEventArgs">
            <summary>
            Encapsulates the transaction record associated with a transaction event.
            </summary>
        </member>
        <member name="F:Clifton.Data.TransactionEventArgs.record">
            <summary>
            The transaction record.
            </summary>
        </member>
        <member name="M:Clifton.Data.TransactionEventArgs.#ctor(Clifton.Data.DataTableTransactionRecord)">
            <summary>
            Constructor.
            </summary>
            <param name="record">The transaction record.</param>
        </member>
        <member name="P:Clifton.Data.TransactionEventArgs.Record">
            <summary>
            Gets the transaction record associated with the event.
            </summary>
        </member>
        <member name="P:Clifton.Data.RowAddedEventArgs.Record">
            <summary>
            Gets/sets record
            </summary>
        </member>
        <member name="P:Clifton.Data.RowDeletedEventArgs.Record">
            <summary>
            Gets/sets record
            </summary>
        </member>
        <member name="T:Clifton.Data.DataTableTransactionLog">
            <summary>
            Manages row and field changes for a specific DataTable.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionLog.transactions">
            <summary>
            The log of transactions.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionLog.sourceTable">
            <summary>
            The table on which we are tracking transactions.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionLog.doLogging">
            <summary>
            Enables (the default) or disables logging.  Logging is disabled
            during Revert and Apply.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionLog.logOnlyNewFieldChanges">
            <summary>
            During data table synchronization with a row transaction manager, we want to turn off logging of 
            logging of new rows and existing fields, as these create duplicate entries, but we still want
            new field assignments to be added to the transaction log, as these result from events firing on
            the new row that populate additional fields.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionLog.lastAcceptedChangeIndex">
            <summary>
            The last transaction record index on which table transactions were accepted.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionLog.uncommittedRows">
            <summary>
            Tracks records that haven't been added to the DataTable yet.  These are "Detached" rows.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.#ctor">
            <summary>
            Constructor.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.#ctor(System.Data.DataTable)">
            <summary>
            Constructor.
            </summary>
            <param name="sourceTable">The source DataTable.</param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.ClearLog">
            <summary>
            Clears the transaction log.  Logging is automatically re-enabled.
            The pending ColumnChanged list is also cleared.  This method should not
            be called during ColumnChanging.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.SuspendLogging">
            <summary>
            Suspends logging.  Used during Revert and Apply to prevent logging of already
            logged transactions.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.ResumeLogging">
            <summary>
            Resumes logging.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.AcceptChanges">
            <summary>
            Accept all transactions and set the last accepted change index
            to the last transaction.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.RejectChanges">
            <summary>
            Remove the transactions to the point where last accepted.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.CollectUncommittedRows">
            <summary>
            Remove all transactions for rows that haven't been committed (added to the DataTable).
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.Revert(System.Int32)">
            <summary>
            Rolls back the transaction occurring at the specified index.
            </summary>
            <param name="idx">The transaction index to roll back.</param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.Apply(System.Int32)">
            <summary>
            Applies the transaction occurring at the specified index.
            </summary>
            <param name="idx">The transaction index to apply.</param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.Unhook">
            <summary>
            Unhook our event handlers from the source table.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.OnTableCleared(System.Object,System.Data.DataTableClearEventArgs)">
            <summary>
            We do not support undoing a Clear action.  This simply clears the internal collections and state.
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.OnTableNewRow(System.Object,System.Data.DataTableNewRowEventArgs)">
            <summary>
            Log the new row and add it to the uncommitted row collection.
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.LogDefaultValues(System.Data.DataRow)">
            <summary>
            Add transactions for any default values defined in the DataColumn's of the row,
            when adding a new row.  This method is called only by the OnTableNewRow handler.
            </summary>
            <param name="row"></param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.OnRowChanged(System.Object,System.Data.DataRowChangeEventArgs)">
            <summary>
            Event handler for the RowChanged event.  If the event is "add row", the associated
            uncommitted rows are removed.  This event also calls the transaction logger's RowAdded
            event.
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.OnColumnChanging(System.Object,System.Data.DataColumnChangeEventArgs)">
            <summary>
            Adds a transaction for the column being changed and adds the column to the
            pending list of records waiting for the "Changed" event, which finalizes the
            new value (allowing the application to change the new value before the Changed
            event records it).
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.LogExists(System.String)">
            <summary>
            Returns true if a log entry already exists for the specified column name.
            </summary>
            <param name="columnName"></param>
            <returns></returns>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.OnColumnChanged(System.Object,System.Data.DataColumnChangeEventArgs)">
            <summary>
            Applies the new value to the transaction record, having given the application
            the opportunity to change the ProposedValue.
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.OnRowDeleting(System.Object,System.Data.DataRowChangeEventArgs)">
            <summary>
            The row deleting event fires when the row has being removed fro the collection.
            We can't use the row deleted event to record the row field values because the row
            has been then marked as deleted and accessing the fields throws an exception.
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.OnTransactionAdding(Clifton.Data.TransactionEventArgs)">
            <summary>
            Fires the TransactionAdding event.
            </summary>
            <param name="e"></param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.OnTransactionAdded(Clifton.Data.TransactionEventArgs)">
            <summary>
            Fires the TransactionAdded event.
            </summary>
            <param name="e"></param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.Compact">
            <summary>
            Eliminate non-unique field changes and remove all transactions
            prior to a row delete.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionLog.DeleteTransactions(System.String,System.Object)">
            <summary>
            Deletes transactions in the logger for records where the field value equals the value specified.
            </summary>
        </member>
        <member name="E:Clifton.Data.DataTableTransactionLog.TransactionAdding">
            <summary>
            Triggered before the transaction is added to the log.
            </summary>
        </member>
        <member name="E:Clifton.Data.DataTableTransactionLog.TransactionAdded">
            <summary>
            Triggered after the transaction is added to the log.
            </summary>
        </member>
        <member name="E:Clifton.Data.DataTableTransactionLog.RowAdding">
            <summary>
            Triggered after handling a TableNewRow event.
            </summary>
        </member>
        <member name="E:Clifton.Data.DataTableTransactionLog.RowAdded">
            <summary>
            Triggered after handling a RowAdded event, which adds the row to the DataTable's row collection.
            </summary>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionLog.DoLogging">
            <summary>
            Returns false if the local logger is disabled or if the source table is in "BlockEvents" mode, which
            may have been set by another logger associated with the same table.
            </summary>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionLog.SourceTable">
            <summary>
            Gets/sets the source data table.
            </summary>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionLog.Log">
            <summary>
            Gets the transaction log for the associated data table.
            </summary>
        </member>
        <member name="T:Clifton.Data.DataTableTransactionLog.TransactionDlgt">
            <summary>
            Delegate used with the TransactionAdding and TransactionAdded events.
            </summary>
            <param name="sender">The instance of this class.</param>
            <param name="e">The TransactionEVentARgs instance.</param>
        </member>
        <member name="T:Clifton.Data.TransactionRecordPacket">
            <summary>
            Manages the record information required to synchronize two DataTables.
            </summary>
        </member>
        <member name="F:Clifton.Data.TransactionRecordPacket.pkValues">
            <summary>
            An indexable list of pk field names and their pk values.
            </summary>
        </member>
        <member name="F:Clifton.Data.TransactionRecordPacket.tranType">
            <summary>
            The record transaction type.
            </summary>
        </member>
        <member name="F:Clifton.Data.TransactionRecordPacket.columnName">
            <summary>
            The field name being changed (for change transactions).
            </summary>
        </member>
        <member name="F:Clifton.Data.TransactionRecordPacket.newValue">
            <summary>
            The new value of the field (for change transactions).
            </summary>
        </member>
        <member name="M:Clifton.Data.TransactionRecordPacket.#ctor">
            <summary>
            Default constructor.
            </summary>
        </member>
        <member name="M:Clifton.Data.TransactionRecordPacket.#ctor(Clifton.Data.DataTableTransactionRecord)">
            <summary>
            Constructor.
            </summary>
            <param name="record">The record to "packetize".</param>
        </member>
        <member name="P:Clifton.Data.TransactionRecordPacket.PrimaryKeyValues">
            <summary>
            Gets the indexable primary key field name / field value dictionary.
            </summary>
        </member>
        <member name="P:Clifton.Data.TransactionRecordPacket.TransactionType">
            <summary>
            Gets/sets the transaction type.
            </summary>
        </member>
        <member name="P:Clifton.Data.TransactionRecordPacket.ColumnName">
            <summary>
            Gets/sets the column name of the changing field.
            </summary>
        </member>
        <member name="P:Clifton.Data.TransactionRecordPacket.NewValue">
            <summary>
            Gets/sets the new value of the changing field.
            </summary>
        </member>
        <member name="T:Clifton.Data.TableTransactionSandbox">
            <summary>
            Creates a deep copy of the source DataTable and tracks changes to the table with an
            internal transaction manager.  On a call to UpdateSource, the transactions are posted
            to the source synchronization manager and the source table is updated.  Care should be
            taken that this sandbox is used for manageable DataTable sizes.
            </summary>
        </member>
        <member name="M:Clifton.Data.TableTransactionSandbox.#ctor">
            <summary>
            Constructor.
            </summary>
        </member>
        <member name="M:Clifton.Data.TableTransactionSandbox.BeginInit">
            <summary>
            Does nothing.
            </summary>
        </member>
        <member name="M:Clifton.Data.TableTransactionSandbox.EndInit">
            <summary>
            If instantiated declaratively, initializes the internal objects.
            </summary>
        </member>
        <member name="M:Clifton.Data.TableTransactionSandbox.Initialize">
            <summary>
            Clones the DataTable encapsulated by the source logger and initializes the internal
            logger and synchronization managers.
            </summary>
        </member>
        <member name="M:Clifton.Data.TableTransactionSandbox.UpdateSource">
            <summary>
            Call this method to update the source table with all the transactions that have
            taken place in the sandbox.
            </summary>
        </member>
        <member name="P:Clifton.Data.TableTransactionSandbox.Tag">
            <summary>
            Gets/sets tag
            </summary>
        </member>
        <member name="P:Clifton.Data.TableTransactionSandbox.SandboxTable">
            <summary>
            Gets/sets sandboxTable
            </summary>
        </member>
        <member name="P:Clifton.Data.TableTransactionSandbox.SourceLogger">
            <summary>
            Gets/sets sourceTable
            </summary>
        </member>
        <member name="M:Clifton.Data.DataHelpers.ConvertToDbBool(System.Object)">
            <summary>
            Return an integer 0 or 1.  Accepts objects of string type 
            whose values can be "0" or "1" or "false" or "true", and
            boolean types, and types convertable to an int.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataHelpers.ConvertFromDbBool(System.Object)">
            <summary>
            Converts a DB boolean (which should be an integer or bool) to a System.Boolean.
            </summary>
        </member>
        <member name="T:Clifton.Data.DataTableTransactionRecord">
            <summary>
            A wrapper for a transaction row, encapsulating the type of transaction, the primary
            key associated with the transaction, old and new values (when a field changes) and 
            internally manages the entire field-value list when a row is deleted.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionRecord.row">
            <summary>
            The row to which this transaction applies.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionRecord.transNum">
            <summary>
            The transaction number.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionRecord.transType">
            <summary>
            The transaction type.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionRecord.columnName">
            <summary>
            The column name, used only when a field changes.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionRecord.oldValue">
            <summary>
            The old field value, used only when a field changes.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionRecord.newValue">
            <summary>
            The new field value, used only when a field changes.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableTransactionRecord.columnValues">
            <summary>
            The collection of field-values populated only when a row is deleted,
            so that the row can be recovered.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionRecord.#ctor(System.Int32,System.Data.DataRow,Clifton.Data.DataTableTransactionRecord.RecordType)">
            <summary>
            Constructor used to instantiate a row change (add/delete) transaction.
            </summary>
            <param name="transNum">The associated transaction number.  Can be any integer value.</param>
            <param name="row">The row being added/deleted.</param>
            <param name="transType">The transaction type.  Throws DataTableTransactionException if the transaction is ChangeField.</param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionRecord.#ctor(System.Int32,System.Data.DataRow,System.String,System.Object,System.Object)">
            <summary>
            Constructor used to instantiate a field change transaction.
            </summary>
            <param name="transNum">The transaction number.  This can be any integer value.</param>
            <param name="row">The row being added/deleted.</param>
            <param name="columnName">The column name of the field being changed.</param>
            <param name="oldValue">The old field's value.</param>
            <param name="newValue">The new field's value.</param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionRecord.AddColumnNameValuePair(System.String,System.Object)">
            <summary>
            Adds the value associated with a field to the internal field-value collection used when deleting a row.
            </summary>
            <param name="name">The column name.</param>
            <param name="val">The associated value.</param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionRecord.GetValue(System.String)">
            <summary>
            Gets the value from the field-value collection for the specified field.  Used to retrieve a field value
            for a row that has been deleted.
            </summary>
            <param name="columnName"></param>
            <returns></returns>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionRecord.GetGuaranteedRowValue(System.String)">
            <summary>
            Returns the value of the row's column, even if the row has been deleted.
            This is useful to acquire the PK fields for a deleted row.
            </summary>
            <param name="fieldName"></param>
            <returns></returns>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionRecord.Initialize">
            <summary>
            Common initialization called by constructors.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionRecord.RestoreRowFields(System.Data.DataRow)">
            <summary>
            Restores all row fields saved in the transaction record's field-value collection.
            </summary>
            <param name="record"></param>
            <param name="row"></param>
        </member>
        <member name="M:Clifton.Data.DataTableTransactionRecord.SaveRowFields(System.Data.DataRow)">
            <summary>
            Saves all row fields to the transaction record's field-value collection.
            </summary>
            <param name="record"></param>
            <param name="row"></param>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionRecord.ColumnValues">
            <summary>
            Gets/sets the field name/field value dictionary.  This property is settable
            so that the dictionary can be shared by multiple rows.
            </summary>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionRecord.WasDeleted">
            <summary>
            Get the state of the field-value buffer, which indicates that a the collection of field-values
            has been populated, thus the row has been deleted at some point.  True if the collection is
            populated, false if the collection is empty.
            </summary>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionRecord.TransNum">
            <summary>
            Get the transaction number associated with this transaction.
            </summary>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionRecord.NewValue">
            <summary>
            Gets the new field value.  Throws DataTableTransactionException if the transaction type is not ChangeField.
            </summary>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionRecord.OldValue">
            <summary>
            Gets the old field value.  Throws DataTableTransactionException if the transaction type is not ChangeField.
            </summary>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionRecord.ColumnName">
            <summary>
            Gets the name of the column associated with the the transaction.  
            Throws DataTableTransactionException if the transaction type is not ChangeField.
            </summary>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionRecord.TransactionType">
            <summary>
            Gets/sets the transaction type.
            </summary>
        </member>
        <member name="P:Clifton.Data.DataTableTransactionRecord.Row">
            <summary>
            The row to which this transaction applies.
            </summary>
        </member>
        <member name="T:Clifton.Data.DataTableTransactionRecord.RecordType">
            <summary>
            Enumerates the supported transaction types: add row, delete row, and change field.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableSynchronizationManager.firstSyncTransaction">
            <summary>
            The first unsync'd transaction in the logger's transaction log.
            </summary>
        </member>
        <member name="F:Clifton.Data.DataTableSynchronizationManager.syncd">
            <summary>
            Synchronization state.  Set to false after the first set of transactions is applied.
            Set to true on construction and after synchronization.
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableSynchronizationManager.Sync">
            <summary>
            Synchronizes, by applying, the records in the transaction log.  This method assumes
            that rows will be identified by their primary keys.  Adding a new row does not fix up
            forward references, as does DataTableTransactionLog.Apply, because it is assumed that
            a new row transaction is going to be seen here for the first time (rather than undoing
            a delete, for example).
            </summary>
        </member>
        <member name="M:Clifton.Data.DataTableSynchronizationManager.SetupSort">
            <summary>
            Sets up the Sort property for the log's internal DataView.  This method need only
            be used when synchronizing a DataTable with TransactionRecordPacket records.
            </summary>
        </member>
        <member name="T:Clifton.Data.DBFalse">
            <summary>
            For bit fields, returns a 0.
            </summary>
        </member>
        <member name="T:Clifton.Data.DBTrue">
            <summary>
            For bit fields, returns a 1.
            </summary>
        </member>
    </members>
</doc>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect Interacx
United States United States
Blog: https://marcclifton.wordpress.com/
Home Page: http://www.marcclifton.com
Research: http://www.higherorderprogramming.com/
GitHub: https://github.com/cliftonm

All my life I have been passionate about architecture / software design, as this is the cornerstone to a maintainable and extensible application. As such, I have enjoyed exploring some crazy ideas and discovering that they are not so crazy after all. I also love writing about my ideas and seeing the community response. As a consultant, I've enjoyed working in a wide range of industries such as aerospace, boatyard management, remote sensing, emergency services / data management, and casino operations. I've done a variety of pro-bono work non-profit organizations related to nature conservancy, drug recovery and women's health.

Comments and Discussions