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.
510 lines
12 KiB
510 lines
12 KiB
using System;
|
|
using System.Data;
|
|
using System.IO;
|
|
using System.Collections;
|
|
using System.Data.SqlClient;
|
|
using System.Xml;
|
|
using System.Xml.Schema;
|
|
using System.Xml.Serialization;
|
|
|
|
using UDDI.API;
|
|
using UDDI;
|
|
using UDDI.Diagnostics;
|
|
using UDDI.API.Binding;
|
|
using UDDI.API.Service;
|
|
using UDDI.API.Business;
|
|
using UDDI.API.ServiceType;
|
|
|
|
namespace UDDI.Admin
|
|
{
|
|
[XmlRootAttribute("resources", Namespace="urn:microsoft-com:uddi_bootstrap_v1")]
|
|
public class Resources
|
|
{
|
|
private TModelDetail tModelDetail;
|
|
|
|
[XmlElement("tModelDetail", Namespace=UDDI.API.Constants.Namespace)]
|
|
public TModelDetail TModelDetail
|
|
{
|
|
get
|
|
{
|
|
if( null == (object) tModelDetail )
|
|
{
|
|
tModelDetail = new TModelDetail();
|
|
}
|
|
|
|
return tModelDetail;
|
|
}
|
|
set
|
|
{
|
|
tModelDetail = value;
|
|
}
|
|
}
|
|
|
|
[XmlIgnore()]
|
|
public TaxonomyCollection Taxonomies = new TaxonomyCollection();
|
|
|
|
[XmlArray( "categorizationSchemes" ), XmlArrayItem( "categorizationScheme" )]
|
|
public Taxonomy[] TaxonomiesSerialize
|
|
{
|
|
get
|
|
{
|
|
return Taxonomies.ToArray();
|
|
}
|
|
set
|
|
{
|
|
Taxonomies.CopyTo( value );
|
|
}
|
|
}
|
|
|
|
private BusinessDetail businessDetail;
|
|
|
|
[XmlElement("businessDetail", Namespace=UDDI.API.Constants.Namespace)]
|
|
public BusinessDetail BusinessDetail
|
|
{
|
|
get
|
|
{
|
|
if( null == businessDetail )
|
|
{
|
|
businessDetail = new BusinessDetail();
|
|
}
|
|
|
|
return businessDetail;
|
|
}
|
|
set
|
|
{
|
|
businessDetail = value;
|
|
}
|
|
}
|
|
|
|
private ServiceDetail serviceDetail;
|
|
|
|
[XmlElement("serviceDetail", Namespace=UDDI.API.Constants.Namespace)]
|
|
public ServiceDetail ServiceDetail
|
|
{
|
|
get
|
|
{
|
|
if( null == serviceDetail )
|
|
{
|
|
serviceDetail = new ServiceDetail();
|
|
}
|
|
|
|
return serviceDetail;
|
|
}
|
|
set
|
|
{
|
|
serviceDetail = value;
|
|
}
|
|
}
|
|
|
|
private BindingDetail bindingDetail;
|
|
|
|
[XmlElement("bindingDetail", Namespace=UDDI.API.Constants.Namespace)]
|
|
public BindingDetail BindingDetail
|
|
{
|
|
get
|
|
{
|
|
if( null == bindingDetail )
|
|
{
|
|
bindingDetail = new BindingDetail();
|
|
}
|
|
|
|
return bindingDetail;
|
|
}
|
|
set
|
|
{
|
|
bindingDetail = value;
|
|
}
|
|
}
|
|
|
|
public Resources(){}
|
|
|
|
public static void Validate( Stream strm )
|
|
{
|
|
Debug.VerifySetting( "Schema-v2" );
|
|
Debug.VerifySetting( "InstallRoot" );
|
|
|
|
string apiSchema = Config.GetString( "Schema-v2" );
|
|
string resourceSchema = Config.GetString( "InstallRoot") + "uddi.resources.xsd";
|
|
|
|
Debug.Verify( File.Exists( apiSchema ), "The API schema was not found in the location " + apiSchema );
|
|
Debug.Verify( File.Exists( resourceSchema ), "The UDDI data resource schema was not found in the location " + resourceSchema );
|
|
|
|
XmlSchemaCollection xsc = new XmlSchemaCollection();
|
|
xsc.Add( "urn:uddi-org:api_v2", apiSchema );
|
|
xsc.Add( "urn:microsoft-com:uddi_bootstrap_v1", resourceSchema );
|
|
|
|
//
|
|
// Rewind stream (to be safe) and validate
|
|
//
|
|
strm.Seek( 0, SeekOrigin.Begin );
|
|
|
|
//
|
|
// Construct a validating reader to verify the document is kosher
|
|
//
|
|
XmlTextReader reader = new XmlTextReader( strm );
|
|
XmlValidatingReader vreader = new XmlValidatingReader( reader );
|
|
vreader.Schemas.Add( xsc );
|
|
while( vreader.Read()){}
|
|
|
|
//
|
|
// Rewind stream again, so someone else can use it
|
|
//
|
|
strm.Seek( 0, SeekOrigin.Begin );
|
|
|
|
}
|
|
|
|
public void Save()
|
|
{
|
|
UDDI.Diagnostics.Debug.Enter();
|
|
|
|
Debug.Write( SeverityType.Info, CategoryType.Data, "Importing tModels..." );
|
|
foreach( TModel tm in TModelDetail.TModels )
|
|
{
|
|
tm.Save();
|
|
}
|
|
|
|
Debug.Write( SeverityType.Info, CategoryType.Data, "Importing Categorization schemes..." );
|
|
foreach( Taxonomy cs in Taxonomies )
|
|
{
|
|
cs.Save();
|
|
}
|
|
|
|
Debug.Write( SeverityType.Info, CategoryType.Data, "Importing Providers..." );
|
|
foreach( BusinessEntity be in BusinessDetail.BusinessEntities )
|
|
{
|
|
be.Save();
|
|
}
|
|
|
|
Debug.Write( SeverityType.Info, CategoryType.Data, "Importing Services..." );
|
|
foreach( BusinessService bs in ServiceDetail.BusinessServices )
|
|
{
|
|
bs.Save();
|
|
}
|
|
|
|
Debug.Write( SeverityType.Info, CategoryType.Data, "Importing bindings..." );
|
|
foreach( BindingTemplate bind in BindingDetail.BindingTemplates )
|
|
{
|
|
bind.Save();
|
|
}
|
|
}
|
|
}
|
|
|
|
public class Taxonomy
|
|
{
|
|
private string tModelKey = "";
|
|
|
|
private int taxonomyFlag = 1;
|
|
|
|
[XmlAttribute( "checked" )]
|
|
public XmlBoolType Checked
|
|
{
|
|
get { return ( 1 == taxonomyFlag ) ? XmlBoolType.True : XmlBoolType.False; }
|
|
set
|
|
{
|
|
if( XmlBoolType.True == value )
|
|
taxonomyFlag = 1;
|
|
else
|
|
taxonomyFlag = 2;
|
|
}
|
|
}
|
|
|
|
[XmlElement( "tModelKey" )]
|
|
public string TModelKey
|
|
{
|
|
get
|
|
{
|
|
return tModelKey;
|
|
}
|
|
set
|
|
{
|
|
tModelKey = value;
|
|
}
|
|
}
|
|
|
|
[XmlIgnore()]
|
|
public TaxonomyValueCollection TaxonomyValues = new TaxonomyValueCollection();
|
|
|
|
[XmlArray( "categoryValues" ), XmlArrayItem( "categoryValue" )]
|
|
public TaxonomyValue[] TaxonomyValuesSerialize
|
|
{
|
|
get
|
|
{
|
|
return TaxonomyValues.ToArray();
|
|
}
|
|
set
|
|
{
|
|
TaxonomyValues.CopyTo( value );
|
|
}
|
|
}
|
|
|
|
public Taxonomy()
|
|
{
|
|
}
|
|
|
|
public void Delete()
|
|
{
|
|
Debug.Enter();
|
|
|
|
SqlCommand cmd = new SqlCommand( "net_taxonomy_delete", ConnectionManager.GetConnection() );
|
|
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
cmd.Transaction = ConnectionManager.GetTransaction();
|
|
|
|
cmd.Parameters.Add( new SqlParameter( "@tModelKey", SqlDbType.UniqueIdentifier ) ).Direction = ParameterDirection.Input;
|
|
|
|
SqlParameterAccessor paramacc = new SqlParameterAccessor( cmd.Parameters );
|
|
|
|
paramacc.SetGuidFromKey( "@tModelKey", tModelKey );
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
Debug.Leave();
|
|
}
|
|
|
|
public void Save()
|
|
{
|
|
Debug.Enter();
|
|
|
|
//
|
|
// Save the taxonomy entry.
|
|
//
|
|
SqlCommand cmd = new SqlCommand( "net_taxonomy_save", ConnectionManager.GetConnection() );
|
|
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
cmd.Transaction = ConnectionManager.GetTransaction();
|
|
|
|
cmd.Parameters.Add( new SqlParameter( "@tModelKey", SqlDbType.UniqueIdentifier ) ).Direction = ParameterDirection.Input;
|
|
cmd.Parameters.Add( new SqlParameter( "@flag", SqlDbType.Int ) ).Direction = ParameterDirection.Input;
|
|
cmd.Parameters.Add( new SqlParameter( "@taxonomyID", SqlDbType.Int ) ).Direction = ParameterDirection.Output;
|
|
|
|
SqlParameterAccessor paramacc = new SqlParameterAccessor( cmd.Parameters );
|
|
|
|
paramacc.SetGuidFromKey( "@tModelKey", tModelKey );
|
|
paramacc.SetInt( "@flag", taxonomyFlag );
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
int taxonomyID = paramacc.GetInt( "@taxonomyID" );
|
|
|
|
foreach( TaxonomyValue tv in TaxonomyValues )
|
|
{
|
|
tv.Save( tModelKey );
|
|
}
|
|
}
|
|
}
|
|
|
|
public enum ValidForCategorization
|
|
{
|
|
[XmlEnumAttribute("false")]
|
|
False = 0,
|
|
[XmlEnumAttribute("true")]
|
|
True = 1,
|
|
}
|
|
|
|
public class TaxonomyValue
|
|
{
|
|
[XmlAttribute( "categoryKey" )]
|
|
public string KeyValue;
|
|
|
|
private bool validForClassification = true;
|
|
|
|
[XmlAttribute( "isValid" )]
|
|
public ValidForCategorization ValidForClassification
|
|
{
|
|
get
|
|
{
|
|
return validForClassification ? ValidForCategorization.True : ValidForCategorization.False;
|
|
}
|
|
set
|
|
{
|
|
if( ValidForCategorization.True == value )
|
|
validForClassification = true;
|
|
else
|
|
validForClassification = false;
|
|
}
|
|
}
|
|
|
|
[XmlElement( "parentCategoryKey" )]
|
|
public string ParentKeyValue;
|
|
|
|
[XmlArray( "categoryNames" ), XmlArrayItem( "categoryName" )]
|
|
public KeyName[] KeyNames;
|
|
|
|
public TaxonomyValue(){}
|
|
public TaxonomyValue( string keyValue, string parentKeyValue, string keyName, bool validForClassification )
|
|
{
|
|
this.KeyValue = keyValue;
|
|
this.ParentKeyValue = parentKeyValue;
|
|
KeyNames = new KeyName[ 1 ];
|
|
KeyNames[0].Name = keyName;
|
|
this.validForClassification = validForClassification;
|
|
}
|
|
|
|
public void Save( string tModelKey )
|
|
{
|
|
Debug.Enter();
|
|
|
|
SqlCommand cmd = new SqlCommand( "net_taxonomyValue_save", ConnectionManager.GetConnection() );
|
|
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
cmd.Transaction = ConnectionManager.GetTransaction();
|
|
|
|
cmd.Parameters.Add( new SqlParameter( "@tModelKey", SqlDbType.UniqueIdentifier ) ).Direction = ParameterDirection.Input;
|
|
cmd.Parameters.Add( new SqlParameter( "@keyValue", SqlDbType.NVarChar, 128 ) ).Direction = ParameterDirection.Input;
|
|
cmd.Parameters.Add( new SqlParameter( "@parentKeyValue", SqlDbType.NVarChar, 128 ) ).Direction = ParameterDirection.Input;
|
|
cmd.Parameters.Add( new SqlParameter( "@keyName", SqlDbType.NVarChar, 128 ) ).Direction = ParameterDirection.Input;
|
|
cmd.Parameters.Add( new SqlParameter( "@valid", SqlDbType.Bit ) ).Direction = ParameterDirection.Input;
|
|
|
|
SqlParameterAccessor paramacc = new SqlParameterAccessor( cmd.Parameters );
|
|
|
|
paramacc.SetGuidFromKey( "@tModelKey", tModelKey );
|
|
paramacc.SetString( "@keyValue", KeyValue );
|
|
paramacc.SetString( "@keyName", KeyNames[0].Name );
|
|
cmd.Parameters[ "@valid" ].Value = ValidForClassification;
|
|
|
|
if( Utility.StringEmpty( ParentKeyValue ) )
|
|
paramacc.SetString( "@parentKeyValue", KeyValue );
|
|
else
|
|
paramacc.SetString( "@parentKeyValue", ParentKeyValue );
|
|
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
public class KeyName
|
|
{
|
|
[XmlText()]
|
|
public string Name;
|
|
|
|
[XmlAttribute( "xml:lang" )]
|
|
public string IsoLanguageCode;
|
|
|
|
public KeyName(){}
|
|
}
|
|
|
|
public class TaxonomyCollection : CollectionBase
|
|
{
|
|
public TaxonomyCollection()
|
|
{
|
|
}
|
|
|
|
|
|
public void Save()
|
|
{
|
|
Debug.Enter();
|
|
|
|
foreach( Taxonomy tax in this )
|
|
{
|
|
tax.Save();
|
|
}
|
|
|
|
Debug.Leave();
|
|
}
|
|
|
|
public Taxonomy this[int index]
|
|
{
|
|
get
|
|
{ return (Taxonomy)List[index]; }
|
|
set
|
|
{ List[index] = value; }
|
|
}
|
|
|
|
public int Add(Taxonomy value)
|
|
{
|
|
return List.Add(value);
|
|
}
|
|
|
|
public void Insert(int index, Taxonomy value)
|
|
{
|
|
List.Insert(index, value);
|
|
}
|
|
|
|
public int IndexOf( Taxonomy value )
|
|
{
|
|
return List.IndexOf( value );
|
|
}
|
|
|
|
public bool Contains( Taxonomy value )
|
|
{
|
|
return List.Contains( value );
|
|
}
|
|
|
|
public void Remove( Taxonomy value )
|
|
{
|
|
List.Remove( value );
|
|
}
|
|
|
|
public void CopyTo(Taxonomy[] array, int index)
|
|
{
|
|
List.CopyTo( array, index );
|
|
}
|
|
|
|
public void CopyTo( Taxonomy[] array )
|
|
{
|
|
foreach( Taxonomy tax in array )
|
|
Add( tax );
|
|
}
|
|
|
|
public Taxonomy[] ToArray()
|
|
{
|
|
return (Taxonomy[]) InnerList.ToArray( typeof( Taxonomy ) );
|
|
}
|
|
}
|
|
|
|
public class TaxonomyValueCollection : CollectionBase
|
|
{
|
|
public TaxonomyValueCollection()
|
|
{
|
|
}
|
|
|
|
public TaxonomyValue this[int index]
|
|
{
|
|
get
|
|
{ return (TaxonomyValue)List[index]; }
|
|
set
|
|
{ List[index] = value; }
|
|
}
|
|
|
|
public int Add(TaxonomyValue value)
|
|
{
|
|
return List.Add(value);
|
|
}
|
|
|
|
public void Insert(int index, TaxonomyValue value)
|
|
{
|
|
List.Insert(index, value);
|
|
}
|
|
|
|
public int IndexOf( TaxonomyValue value )
|
|
{
|
|
return List.IndexOf( value );
|
|
}
|
|
|
|
public bool Contains( TaxonomyValue value )
|
|
{
|
|
return List.Contains( value );
|
|
}
|
|
|
|
public void Remove( TaxonomyValue value )
|
|
{
|
|
List.Remove( value );
|
|
}
|
|
|
|
public void CopyTo(TaxonomyValue[] array, int index)
|
|
{
|
|
List.CopyTo( array, index );
|
|
}
|
|
|
|
public void CopyTo( TaxonomyValue[] array )
|
|
{
|
|
foreach( TaxonomyValue tax in array )
|
|
Add( tax );
|
|
}
|
|
|
|
public TaxonomyValue[] ToArray()
|
|
{
|
|
return (TaxonomyValue[]) InnerList.ToArray( typeof( TaxonomyValue ) );
|
|
}
|
|
}
|
|
}
|
|
|