You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
305 lines
6.7 KiB
305 lines
6.7 KiB
using System;
|
|
using System.Collections;
|
|
using System.Diagnostics;
|
|
using System.Xml.Serialization;
|
|
|
|
using Microsoft.Uddi;
|
|
|
|
namespace Microsoft.Uddi.Business
|
|
{
|
|
/// <summary>
|
|
/// The address structure is a simple list of AddressLine elements within the address container.
|
|
/// Each addressLine element is a simple string. Uddi compliant registries are responsible for
|
|
/// preserving the order of any addressLine data provided. Address structures also have two optional
|
|
/// attributes for recording the useType (freeform text) and sortCode data. The sortCode values
|
|
/// are not significant within a Uddi registry, but may be used by user interfaces that present
|
|
/// address information in some ordered fashion using the values provided in the sortCode attribute.
|
|
/// </summary>
|
|
public class Address : UddiCore
|
|
{
|
|
private string sortCode;
|
|
private string useType;
|
|
private string tModelKey;
|
|
private AddressLineCollection addressLines;
|
|
|
|
/// <summary>
|
|
/// Optional attribute that can be used to drive the behavior of external display mechanisms
|
|
/// that sort addresses. The suggested values for sortCode include numeric ordering values
|
|
/// (e.g. 1, 2, 3), alphabetic character ordering values (e.g. a, b, c) or the first n positions
|
|
/// of relevant data within the address.
|
|
/// </summary>
|
|
[XmlAttribute("sortCode")]
|
|
public string SortCode
|
|
{
|
|
get { return sortCode; }
|
|
set { sortCode = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Optional attribute that is used to describe the type of address in freeform text.
|
|
/// Suggested examples include “headquarters”, “sales office”, “billing department”, etc.
|
|
/// </summary>
|
|
[XmlAttribute("useType")]
|
|
public string UseType
|
|
{
|
|
get { return useType; }
|
|
set { useType = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Optional attribute that is used to describe the address using a tModel.
|
|
/// </summary>
|
|
[XmlAttribute("tModelKey")]
|
|
public string TModelKey
|
|
{
|
|
get { return tModelKey; }
|
|
set { tModelKey = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// AddressLine elements contain string data with a suggested line length limit of
|
|
/// 40 character positions. Address line order is significant and will always be
|
|
/// returned by the Uddi compliant registry in the order originally provided during
|
|
/// a call to save_business.
|
|
/// </summary>
|
|
[XmlElement("addressLine")]
|
|
public AddressLineCollection AddressLines
|
|
{
|
|
get
|
|
{
|
|
if( null == addressLines )
|
|
{
|
|
addressLines = new AddressLineCollection();
|
|
}
|
|
|
|
return addressLines;
|
|
}
|
|
|
|
set { addressLines = value; }
|
|
}
|
|
|
|
public Address() : this( "", "" )
|
|
{}
|
|
|
|
public Address( string sortCode, string useType )
|
|
{
|
|
SortCode = sortCode;
|
|
UseType = useType;
|
|
}
|
|
|
|
public Address( string tModelKey )
|
|
{
|
|
SortCode = sortCode;
|
|
TModelKey = tModelKey;
|
|
}
|
|
}
|
|
|
|
public class AddressLine : UddiCore
|
|
{
|
|
private string keyName;
|
|
private string keyValue;
|
|
private string text;
|
|
|
|
public AddressLine() : this( "", null, null )
|
|
{}
|
|
|
|
public AddressLine( string text ) : this( text, null, null )
|
|
{}
|
|
|
|
public AddressLine( string text, string keyName, string keyValue )
|
|
{
|
|
Text = text;
|
|
KeyName = keyName;
|
|
KeyValue = keyValue;
|
|
}
|
|
|
|
[ XmlAttribute( "keyName" ) ]
|
|
public string KeyName
|
|
{
|
|
get { return keyName; }
|
|
set { keyName = value; }
|
|
}
|
|
|
|
[ XmlAttribute( "keyValue" ) ]
|
|
public string KeyValue
|
|
{
|
|
get { return keyValue; }
|
|
set { keyValue = value; }
|
|
}
|
|
|
|
[ XmlText ]
|
|
public string Text
|
|
{
|
|
get { return text; }
|
|
set { text = value; }
|
|
}
|
|
}
|
|
|
|
public class AddressCollection : CollectionBase
|
|
{
|
|
public Address this[ int index ]
|
|
{
|
|
get { return (Address)List[ index ]; }
|
|
set { List[ index ] = value; }
|
|
}
|
|
|
|
public int Add( string sortCode, string useType )
|
|
{
|
|
return List.Add( new Address( sortCode, useType ) );
|
|
}
|
|
|
|
public int Add( string tModelKey )
|
|
{
|
|
return List.Add( new Address( tModelKey ) );
|
|
}
|
|
|
|
public int Add( Address value )
|
|
{
|
|
return List.Add( value );
|
|
}
|
|
|
|
public void Insert( int index, Address value )
|
|
{
|
|
List.Insert( index, value );
|
|
}
|
|
|
|
public int IndexOf( Address value )
|
|
{
|
|
return List.IndexOf( value );
|
|
}
|
|
|
|
public bool Contains( Address value )
|
|
{
|
|
return List.Contains( value );
|
|
}
|
|
|
|
public void Remove( Address value )
|
|
{
|
|
List.Remove( value );
|
|
}
|
|
|
|
public void CopyTo( Address[] array, int index )
|
|
{
|
|
List.CopyTo( array, index );
|
|
}
|
|
|
|
public new AddressEnumerator GetEnumerator()
|
|
{
|
|
return new AddressEnumerator( List.GetEnumerator() );
|
|
}
|
|
}
|
|
|
|
public sealed class AddressEnumerator : IEnumerator
|
|
{
|
|
private IEnumerator enumerator;
|
|
|
|
public AddressEnumerator( IEnumerator enumerator )
|
|
{
|
|
this.enumerator = enumerator;
|
|
}
|
|
|
|
public Address Current
|
|
{
|
|
get { return ( Address ) enumerator.Current; }
|
|
}
|
|
|
|
object IEnumerator.Current
|
|
{
|
|
get{ return enumerator.Current; }
|
|
}
|
|
|
|
public bool MoveNext()
|
|
{
|
|
return enumerator.MoveNext();
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
enumerator.Reset();
|
|
}
|
|
}
|
|
|
|
public class AddressLineCollection : CollectionBase
|
|
{
|
|
public AddressLine this[ int index ]
|
|
{
|
|
get { return (AddressLine)List[ index ]; }
|
|
set { List[ index ] = value; }
|
|
}
|
|
|
|
public int Add( string text )
|
|
{
|
|
return List.Add( new AddressLine( text ) );
|
|
}
|
|
|
|
public int Add( string text, string keyName, string keyValue )
|
|
{
|
|
return List.Add( new AddressLine( text, keyName, keyValue ) );
|
|
}
|
|
|
|
public int Add( AddressLine value )
|
|
{
|
|
return List.Add( value );
|
|
}
|
|
|
|
public void Insert( int index, AddressLine value )
|
|
{
|
|
List.Insert( index, value );
|
|
}
|
|
|
|
public int IndexOf( AddressLine value )
|
|
{
|
|
return List.IndexOf( value );
|
|
}
|
|
|
|
public bool Contains( AddressLine value )
|
|
{
|
|
return List.Contains( value );
|
|
}
|
|
|
|
public void Remove( AddressLine value )
|
|
{
|
|
List.Remove( value );
|
|
}
|
|
|
|
public void CopyTo( AddressLine[] array, int index )
|
|
{
|
|
List.CopyTo( array, index );
|
|
}
|
|
|
|
public new AddressLineEnumerator GetEnumerator()
|
|
{
|
|
return new AddressLineEnumerator( List.GetEnumerator() );
|
|
}
|
|
}
|
|
|
|
public sealed class AddressLineEnumerator : IEnumerator
|
|
{
|
|
private IEnumerator enumerator;
|
|
|
|
public AddressLineEnumerator( IEnumerator enumerator )
|
|
{
|
|
this.enumerator = enumerator;
|
|
}
|
|
|
|
public AddressLine Current
|
|
{
|
|
get { return ( AddressLine ) enumerator.Current; }
|
|
}
|
|
|
|
object IEnumerator.Current
|
|
{
|
|
get{ return enumerator.Current; }
|
|
}
|
|
|
|
public bool MoveNext()
|
|
{
|
|
return enumerator.MoveNext();
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
enumerator.Reset();
|
|
}
|
|
}
|
|
}
|