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.
323 lines
9.2 KiB
323 lines
9.2 KiB
using System;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.HtmlControls;
|
|
using System.Web.UI.WebControls;
|
|
using System.Collections;
|
|
|
|
using UDDI.Web;
|
|
using UDDI.API;
|
|
using UDDI.API.Service;
|
|
using UDDI.API.Business;
|
|
|
|
namespace UDDI.VisualStudio
|
|
{
|
|
//
|
|
// Just a simple class to help us keep track of our results.
|
|
//
|
|
public class ResultsCache
|
|
{
|
|
public ResultsCache()
|
|
{}
|
|
|
|
public ResultsCache( SearchType searchType, string searchParams )
|
|
{
|
|
this.searchType = searchType;
|
|
this.searchParams = searchParams;
|
|
}
|
|
|
|
public string searchParams;
|
|
public SearchType searchType;
|
|
public int numResults;
|
|
}
|
|
|
|
public class SearchPage : Page
|
|
{
|
|
//
|
|
// These controls are bound to elements on our .aspx page. We do not need to instantiate
|
|
// these objects, ASP.NET will assign values to them for us.
|
|
//
|
|
protected HtmlGenericControl html_hasResultsLabel;
|
|
protected HtmlGenericControl html_noResultsLabel;
|
|
protected HtmlGenericControl html_searchResultsMsg;
|
|
protected HtmlGenericControl html_browseResultsMsg;
|
|
protected HtmlGenericControl html_hasResultsMsg;
|
|
protected ResultsList uddi_resultsList;
|
|
|
|
//
|
|
// These values will be displayed in search.aspx using <%= tags
|
|
//
|
|
protected ResultsCache results;
|
|
|
|
/// <summary>
|
|
/// Override OnLoad to do our initialization.
|
|
/// </summary>
|
|
/// <param name="args">Passed by ASP.NET, we don't use it.</param>
|
|
protected override void OnLoad( EventArgs args )
|
|
{
|
|
//
|
|
// See if we already have a cached search, if we do, we'll use it. We only cache search params,
|
|
// result count and the search type, we'll get values from our database all the time.
|
|
//
|
|
results = Session[ StateParamNames.Results ] as ResultsCache;
|
|
|
|
//
|
|
// If we don't have search results, get them
|
|
//
|
|
if( null == results )
|
|
{
|
|
//
|
|
// Instantiate our results cache
|
|
//
|
|
results = new ResultsCache();
|
|
|
|
//
|
|
// Run our query based on the search type and display the results
|
|
//
|
|
string temp = Request[ StateParamNames.SearchType ];
|
|
if( null == temp || temp.Length == 0 )
|
|
{
|
|
Response.Redirect( "error.aspx" );
|
|
}
|
|
|
|
results.searchType = ( SearchType ) Int32.Parse( temp );
|
|
|
|
if( results.searchType == SearchType.SearchByService || results.searchType == SearchType.SearchByProvider )
|
|
{
|
|
results.searchParams = GetSearchParams();
|
|
}
|
|
}
|
|
|
|
//
|
|
// Search type determines what sproc to run.
|
|
//
|
|
SqlStoredProcedureAccessor searchCommand = new SqlStoredProcedureAccessor();
|
|
switch( results.searchType )
|
|
{
|
|
case SearchType.SearchByService:
|
|
{
|
|
searchCommand.ProcedureName = "VS_AWR_services_get";
|
|
searchCommand.Parameters.Add( "@serviceName", SqlDbType.NVarChar, 450 );
|
|
searchCommand.Parameters.SetString( "@serviceName", results.searchParams );
|
|
|
|
break;
|
|
}
|
|
case SearchType.SearchByProvider:
|
|
{
|
|
searchCommand.ProcedureName = "VS_AWR_businesses_get";
|
|
searchCommand.Parameters.Add( "@businessName", SqlDbType.NVarChar, 450 );
|
|
searchCommand.Parameters.SetString( "@businessName", results.searchParams );
|
|
|
|
break;
|
|
}
|
|
case SearchType.SearchFromBrowse:
|
|
{
|
|
searchCommand.ProcedureName = "VS_AWR_categorization_get";
|
|
searchCommand.Parameters.Add( "@tModelKey", SqlDbType.UniqueIdentifier );
|
|
searchCommand.Parameters.Add( "@keyValue", SqlDbType.NVarChar, 255 );
|
|
|
|
searchCommand.Parameters.SetGuidFromString( "@tModelKey", GetTModelKey() );
|
|
searchCommand.Parameters.SetString( "@keyValue", GetKeyValue() );
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Get the results that we are supposed to display.
|
|
//
|
|
SqlDataReaderAccessor resultsReader = searchCommand.ExecuteReader();
|
|
results.numResults = uddi_resultsList.ParseResults( resultsReader );
|
|
resultsReader.Close();
|
|
|
|
//
|
|
// Store our results in session state
|
|
//
|
|
Session[ StateParamNames.Results ] = results;
|
|
|
|
DisplaySearchMessages( results.numResults );
|
|
}
|
|
|
|
private void DisplaySearchMessages(int numResults )
|
|
{
|
|
//
|
|
// Depending on whether we have results or not, show or hide the panel that will show our results.
|
|
//
|
|
if( numResults > 0 )
|
|
{
|
|
if( results.searchType == SearchType.SearchFromBrowse )
|
|
{
|
|
html_browseResultsMsg.Visible = true;
|
|
html_searchResultsMsg.Visible = false;
|
|
}
|
|
else
|
|
{
|
|
html_browseResultsMsg.Visible = false;
|
|
html_searchResultsMsg.Visible = true;
|
|
}
|
|
|
|
html_hasResultsLabel.Visible = true;
|
|
html_noResultsLabel.Visible = false;
|
|
}
|
|
else
|
|
{
|
|
html_hasResultsLabel.Visible = false;
|
|
html_noResultsLabel.Visible = true;
|
|
}
|
|
}
|
|
|
|
private string GetKeyValue()
|
|
{
|
|
string keyValue = Request[ StateParamNames.KeyValue ];
|
|
if( null == keyValue || keyValue.Length == 0 )
|
|
{
|
|
return "%";
|
|
}
|
|
|
|
return Server.UrlDecode( keyValue );
|
|
}
|
|
|
|
private string GetTModelKey()
|
|
{
|
|
//
|
|
// Get the tModel key to search on
|
|
//
|
|
string tModelKey = Request[ StateParamNames.TModelKey ];
|
|
if( null == tModelKey || tModelKey.Length == 0 )
|
|
{
|
|
Response.Redirect( "error.aspx" );
|
|
}
|
|
|
|
return Server.UrlDecode( tModelKey );
|
|
}
|
|
|
|
private string GetSearchParams()
|
|
{
|
|
//
|
|
// Make sure we have search params
|
|
//
|
|
string searchParams = Request[ StateParamNames.SearchParams ];
|
|
if( null == searchParams || searchParams.Length == 0 )
|
|
{
|
|
Response.Redirect( "error.aspx" );
|
|
}
|
|
|
|
return searchParams;
|
|
}
|
|
}
|
|
///**********************************************************************************
|
|
/// <summary>
|
|
/// Class to help manage help link localization.
|
|
/// </summary>
|
|
///**********************************************************************************
|
|
public class HelpLinkControl : UserControl
|
|
{
|
|
|
|
private string helpstring;
|
|
/// *****************************************************************************
|
|
/// <summary>
|
|
/// Text for the Help Message.
|
|
///
|
|
/// If a localization key is provided, then a the string will be set to the
|
|
/// Localized value.
|
|
/// </summary>
|
|
/// *****************************************************************************
|
|
public string HelpString
|
|
{
|
|
get{ return helpstring; }
|
|
set
|
|
{
|
|
if( Localization.IsKey( (string)value ) )
|
|
helpstring=Localization.GetString( Localization.StripMarkup( (string)value ) );
|
|
else
|
|
helpstring=value;
|
|
}
|
|
}
|
|
|
|
private string helplinktext;
|
|
/// *****************************************************************************
|
|
/// <summary>
|
|
/// Text for the Link inside the help Message.
|
|
///
|
|
/// If a localization key is provided, then a the string will be set to the
|
|
/// Localized value.
|
|
/// </summary>
|
|
/// *****************************************************************************
|
|
public string HelpLinkText
|
|
{
|
|
get{ return helplinktext; }
|
|
set
|
|
{
|
|
if( Localization.IsKey( (string)value ) )
|
|
helplinktext=Localization.GetString( Localization.StripMarkup( (string)value ) );
|
|
else
|
|
helplinktext=value;
|
|
}
|
|
}
|
|
|
|
private string navigateurl;
|
|
/// *****************************************************************************
|
|
/// <summary>
|
|
/// Url that the HelpLink will navigate too.
|
|
/// </summary>
|
|
/// *****************************************************************************
|
|
public string NavigateUrl
|
|
{
|
|
get{ return navigateurl; }
|
|
set{ navigateurl=value; }
|
|
}
|
|
|
|
private string navigatetarget;
|
|
/// *****************************************************************************
|
|
/// <summary>
|
|
/// Url Target of the Help Link
|
|
/// </summary>
|
|
/// *****************************************************************************
|
|
public string NavigateTarget
|
|
{
|
|
get{ return navigatetarget; }
|
|
set{ navigatetarget=value; }
|
|
}
|
|
|
|
private string cssclass;
|
|
public string CssClass
|
|
{
|
|
get{ return cssclass; }
|
|
set{ cssclass=value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// method to write content to the Response Stream
|
|
/// </summary>
|
|
/// <param name="output">Stream to write output too.</param>
|
|
protected override void Render( HtmlTextWriter output )
|
|
{
|
|
UDDI.Diagnostics.Debug.Verify( null!=HelpLinkText,"UDDI_ERROR_FATALERROR_AWR_NULLHELPLINKTEXT" );
|
|
UDDI.Diagnostics.Debug.Verify( null!=HelpString,"UDDI_ERROR_FATALERROR_AWR_NULLHELPSTRING" );
|
|
|
|
|
|
string hyperlink = "";
|
|
if( null!=NavigateUrl )
|
|
{
|
|
//build the hyperlink.
|
|
hyperlink="<a href=\"" + NavigateUrl + "\"" +
|
|
((null!=NavigateTarget )?" target=\"" + NavigateTarget + "\" " : "" ) + " >{0}</a>";
|
|
|
|
hyperlink = string.Format( hyperlink, HelpLinkText );
|
|
}
|
|
|
|
if( null!=CssClass ) //if a stylesheet class was provided add it to the stream to be rendered
|
|
output.AddAttribute( HtmlTextWriterAttribute.Class,CssClass ) ;
|
|
|
|
output.RenderBeginTag( HtmlTextWriterTag.Span );
|
|
|
|
//format the help string with the hyperlink string.
|
|
output.Write( HelpString, ((""!=hyperlink)?hyperlink:HelpLinkText ) );
|
|
|
|
output.RenderEndTag();
|
|
}
|
|
}
|
|
|
|
}
|