using System; using System.Data; using System.Collections; using System.Diagnostics; using System.Data.SqlClient; using System.Xml.Serialization; using UDDI; namespace UDDI.API.Business { public class Phone { [XmlAttribute("useType")] public string UseType; [XmlText] public string Value; public Phone() { } public Phone( string phone, string useType ) { Value = phone; UseType = useType; } internal void Validate() { Utility.ValidateLength( ref UseType, "useType", UDDI.Constants.Lengths.UseType ); Utility.ValidateLength( ref Value, "phone", UDDI.Constants.Lengths.Phone ); } public void Save( long contactID ) { // // Create a command object to invoke the stored procedure // SqlCommand cmd = new SqlCommand( "net_contact_phone_save", ConnectionManager.GetConnection() ); cmd.Transaction = ConnectionManager.GetTransaction(); cmd.CommandType = CommandType.StoredProcedure; // // Input parameters // cmd.Parameters.Add( new SqlParameter( "@contactID", SqlDbType.BigInt ) ).Direction = ParameterDirection.Input; cmd.Parameters.Add( new SqlParameter( "@phone", SqlDbType.NVarChar, UDDI.Constants.Lengths.Phone ) ).Direction = ParameterDirection.Input; cmd.Parameters.Add( new SqlParameter( "@useType", SqlDbType.NVarChar, UDDI.Constants.Lengths.UseType ) ).Direction = ParameterDirection.Input; // // Set parameter values // SqlParameterAccessor parmacc = new SqlParameterAccessor( cmd.Parameters ); parmacc.SetLong( "@contactID", contactID ); parmacc.SetString( "@phone", Value ); parmacc.SetString( "@useType", UseType ); cmd.ExecuteNonQuery(); } } public class PhoneCollection : CollectionBase { internal void Validate() { foreach( Phone phone in this ) { phone.Validate(); } } public void Save( long contactID ) { // // Walk collection and call save on individual contact instances // foreach( Phone phone in this ) phone.Save( contactID ); } public void Get( long contactID ) { // // Create a command object to invoke the stored procedure net_get_contacts // SqlStoredProcedureAccessor cmd = new SqlStoredProcedureAccessor( "net_contact_phones_get" ); // // Add parameters and set values // cmd.Parameters.Add( "@contactID", SqlDbType.BigInt, ParameterDirection.Input ); cmd.Parameters.SetLong( "@contactID", contactID ); // // Run the stored procedure // SqlDataReaderAccessor reader = cmd.ExecuteReader(); try { Read( reader ); #if never // // Phones for this contact will be contained in the resultset // while( rdr.Read() ) { // // construct a new contact from the data in this row, fully populate contact and add to collection // this.Add( dracc.GetString( PhoneIndex ), dracc.GetString( UseTypeIndex ) ); } #endif } finally { reader.Close(); } } public void Read( SqlDataReaderAccessor reader ) { const int UseTypeIndex = 0; const int PhoneIndex = 1; // // Phones for this contact will be contained in the resultset // while( reader.Read() ) { // // construct a new contact from the data in this row, fully populate contact and add to collection // this.Add( reader.GetString( PhoneIndex ), reader.GetString( UseTypeIndex ) ); } } public Phone this[int index] { get { return ( Phone )List[ index]; } set { List[ index ] = value; } } public int Add( Phone phoneObject ) { return List.Add( phoneObject ); } public int Add( string phone ) { return( Add( phone, null ) ); } public int Add( string phone, string useType ) { return List.Add( new Phone( phone, useType ) ); } public void Insert( int index, Phone value ) { List.Insert( index, value ); } public int IndexOf( Phone value ) { return List.IndexOf( value ); } public bool Contains( Phone value ) { return List.Contains( value ); } public void Remove( Phone value ) { List.Remove( value ); } public void CopyTo( Phone[] array, int index ) { List.CopyTo( array, index ); } } }