Click here to Skip to main content
15,886,788 members
Articles / Web Development / ASP.NET

Secrets for Setting Up Continuous Integration

Rate me:
Please Sign up or sign in to vote.
2.88/5 (7 votes)
23 Feb 2009CPOL5 min read 65.4K   54   41  
A few simple tips that should help when you are considering setting up CI
using System.Data;
using GeneratorCustomization;

namespace Descriptors.GeneratorCustomization
{
    /// <summary>
    /// Container for all tables that are lookup tables.
    /// For these tables, some things should be generated differently, 
    /// e.g. a GetAll method should cache the result set.
    /// </summary>
    public class LookupTable
    {
        private readonly string _database;
        private readonly string _diplayColumn;
        private readonly string _table;
  
        /// <summary>
        /// Gets the name of the table that contains lookup table customization data.
        /// </summary>
        public const string TableName = "LookupTable";

        /// <summary>
        /// Create with customization data
        /// </summary>
        private LookupTable(DataRow row)
            : this(row["Database"].ToString(), row["TableName"].ToString(), row["DisplayColumn"].ToString())
        {
        }

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="database">Name of the database the table is in.</param>
        /// <param name="table">Name of the table the column is in.</param>
        /// <param name="displayColumn">Name of the display column.</param>
        private LookupTable(string database, string table, string displayColumn)
        {
            _database = database;
            _table = table;
            _diplayColumn = displayColumn;
        }

        /// <summary>
        /// Name of the display column (i.e. the one to display to the user.).
        /// </summary>
        public string DisplayColumn
        {
            get { return _diplayColumn; }
        }

        /// <summary>
        /// Name of the table the special column is in.
        /// </summary>
        /// <remarks>If this is an empty string then the special rule should apply to ALL tables.</remarks>
        public string Table
        {
            get { return _table; }
        }

        /// <summary>
        /// Name of the database the table is in.
        /// </summary>
        /// <remarks>If this is an empty string then the special rule should apply to ALL tables in ALL databases.</remarks>
        public string Database
        {
            get { return _database; }
        }

        /// <summary>
        /// Instantiate a new excluded table column with all required fields.
        /// </summary>
        /// <param name="database">Name of the database the table is in.</param>
        /// <param name="table">Name of the table the column is in.</param>
        /// <param name="displayColumn">Name of the display column.</param>
        /// <returns></returns>
        public static LookupTable Build(string database, string table, string displayColumn)
        {
            return new LookupTable(database, table, displayColumn);
        }

        /// <summary>
        /// Instantiate a new excluded table column with all required fields.
        /// </summary>
        /// <param name="database">Name of the database the table is in.</param>
        /// <param name="table">Name of the table the column is in.</param>
        public static LookupTable Build(string database, string table)
        {
            DataRow row = GeneratorsData.TableMatchGetRow(TableName, database, table, true);
            if (row == null)
                return null;
            LookupTable lookupTable = new LookupTable(row);
            return lookupTable;
        }

        #region Nested type: Testing

        /// <summary>
        /// Support methods for testing use only
        /// </summary>
        public class Testing
        {
            /// <summary>
            /// Get the test excluded column. Details are:-
            /// TestDatabase; TestTable; TestColumn
            /// </summary>
            /// <returns></returns>
            public static LookupTable GetTestColumn()
            {
                return Build("TestDatabase", "TestTable", "TestColumn");
            }
        }

        #endregion
    }
}

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
Software Developer (Senior) Peer Placements Pty Ltd
Australia Australia
I live in Sydney and have been a developer for almost a decade now. I have a passion for technology and a strong interest in discovering 'better, cleaner, faster' ways to get systems out the door because I believe software development takes too long. If I have an idea I want to realise it as quickly as possible...plus writing systems for someone else I want to deliver quickly so I can move onto the next interesting project!

Comments and Discussions