using System; using System.Collections.Generic; using System.Text; namespace sharpcomparer { public class ProcedureParameter : IComparable { private string specificCatalog; private string specificSchema; private string specificName; private int ordinalPosition; private string parameterMode; private string isResult; private string asLocator; private string parameterName; private string dataType; private int characterMaximumLength; private int characterOctetLength; private string collationCatalog; private string collationSchema; private string collationName; private string characterSetCatalog; private string characterSetSchema; private string characterSetName; private byte numericPrecision; private short numericPrecisionRadix; private int numericScale; private short datetimePrecision; private string intervalType; private string intervalPrecision; public string SpecificCatalog { get { return specificCatalog; } set { specificCatalog = value; } } public string SpecificSchema { get { return specificSchema; } set { specificSchema = value; } } public string SpecificName { get { return specificName; } set { specificName = value; } } public int OrdinalPosition { get { return ordinalPosition; } set { ordinalPosition = value; } } public string ParameterMode { get { return parameterMode; } set { parameterMode = value; } } public string IsResult { get { return isResult; } set { isResult = value; } } public string AsLocator { get { return asLocator; } set { asLocator = value; } } public string ParameterName { get { return parameterName; } set { parameterName = value; } } public string DataType { get { return dataType; } set { dataType = value; } } public int CharacterMaximumLength { get { return characterMaximumLength; } set { characterMaximumLength = value; } } public int CharacterOctetLength { get { return characterOctetLength; } set { characterOctetLength = value; } } public string CollationCatalog { get { return collationCatalog; } set { collationCatalog = value; } } public string CollationSchema { get { return collationSchema; } set { collationSchema = value; } } public string CollationName { get { return collationName; } set { collationName = value; } } public string CharacterSetCatalog { get { return characterSetCatalog; } set { characterSetCatalog = value; } } public string CharacterSetSchema { get { return characterSetSchema; } set { characterSetSchema = value; } } public string CharacterSetName { get { return characterSetName; } set { characterSetName = value; } } public byte NumericPrecision { get { return numericPrecision; } set { numericPrecision = value; } } public short NumericPrecisionRadix { get { return numericPrecisionRadix; } set { numericPrecisionRadix = value; } } public int NumericScale { get { return numericScale; } set { numericScale = value; } } public short DatetimePrecision { get { return datetimePrecision; } set { datetimePrecision = value; } } public string IntervalType { get { return intervalType; } set { intervalType = value; } } public string IntervalPrecision { get { return intervalPrecision; } set { intervalPrecision = value; } } public string Type { get { return CharacterMaximumLength != -1 ? string.Format("{0}({1})", DataType, CharacterMaximumLength) : DataType; } } public ProcedureParameter( string specificCatalog, string specificSchema, string specificName, int ordinalPosition, string parameterMode, string isResult, string asLocator, string parameterName, string dataType, int characterMaximumLength, int characterOctetLength, string collationCatalog, string collationSchema, string collationName, string characterSetCatalog, string characterSetSchema, string characterSetName, byte numericPrecision, short numericPrecisionRadix, int numericScale, short datetimePrecision, string intervalType, string intervalPrecision) { this.specificCatalog = specificCatalog; this.specificSchema = specificSchema; this.specificName = specificName; this.ordinalPosition = ordinalPosition; this.parameterMode = parameterMode; this.isResult = isResult; this.asLocator = asLocator; this.parameterName = parameterName; this.dataType = dataType; this.characterMaximumLength = characterMaximumLength; this.characterOctetLength = characterOctetLength; this.collationCatalog = collationCatalog; this.collationSchema = collationSchema; this.collationName = collationName; this.characterSetCatalog = characterSetCatalog; this.characterSetSchema = characterSetSchema; this.characterSetName = characterSetName; this.numericPrecision = numericPrecision; this.numericPrecisionRadix = numericPrecisionRadix; this.numericScale = numericScale; this.datetimePrecision = datetimePrecision; this.intervalType = intervalType; this.intervalPrecision = intervalPrecision; } public static bool operator ==(ProcedureParameter a, ProcedureParameter b) { if (System.Object.ReferenceEquals(a, b)) { return true; } if (((object)a == null) || ((object)b == null)) { return false; } return a.specificSchema == b.specificSchema && a.specificName == b.specificName && a.ordinalPosition == b.ordinalPosition && a.parameterMode == b.parameterMode && a.isResult == b.isResult && a.asLocator == b.asLocator && a.parameterName == b.parameterName && a.dataType == b.dataType && a.characterMaximumLength == b.characterMaximumLength && a.characterOctetLength == b.characterOctetLength && a.collationCatalog == b.collationCatalog && a.collationSchema == b.collationSchema && a.collationName == b.collationName && a.characterSetCatalog == b.characterSetCatalog && a.characterSetSchema == b.characterSetSchema && a.characterSetName == b.characterSetName && a.numericPrecision == b.numericPrecision && a.numericPrecisionRadix == b.numericPrecisionRadix && a.numericScale == b.numericScale && a.datetimePrecision == b.datetimePrecision && a.intervalType == b.intervalType && a.intervalPrecision == b.intervalPrecision; } public static bool operator !=(ProcedureParameter a, ProcedureParameter b) { return !(a == b); } public override int GetHashCode() { return base.GetHashCode(); } #region IComparable Members public int CompareTo(ProcedureParameter other) { int comparison = parameterName.CompareTo(other.parameterName); return comparison; } #endregion } }