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.
198 lines
4.3 KiB
198 lines
4.3 KiB
using System;
|
|
using System.Globalization;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using Microsoft.Win32;
|
|
using System.Resources;
|
|
|
|
namespace UDDI.Tools
|
|
{
|
|
class Recalcstats
|
|
{
|
|
static SqlConnection connection;
|
|
static SqlTransaction transaction;
|
|
|
|
static int Main( string[] args )
|
|
{
|
|
int rc = 0; // assume success
|
|
|
|
try
|
|
{
|
|
//
|
|
// Check if CurrentUICulture needs to be overridden
|
|
//
|
|
UDDI.Localization.SetConsoleUICulture();
|
|
|
|
DisplayBanner();
|
|
|
|
//
|
|
// Parse the command line
|
|
//
|
|
if( !ProcessCommandLine( args ) )
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
//
|
|
// Recalculate statistics
|
|
//
|
|
RecalcStats();
|
|
}
|
|
catch( Exception e )
|
|
{
|
|
Console.WriteLine( FormatFromResource( "RECALCSTATS_FAILED" , e.Message ) );
|
|
rc = 1;
|
|
}
|
|
|
|
|
|
return rc;
|
|
}
|
|
|
|
private static bool ProcessCommandLine( string [] args )
|
|
{
|
|
bool bOK = false;
|
|
|
|
if ( args.Length > 0 )
|
|
{
|
|
for( int i = 0; i < args.Length; i ++ )
|
|
{
|
|
if( '-' == args[i][0] || '/' == args[i][0] )
|
|
{
|
|
string option = args[i].Substring( 1 );
|
|
|
|
if( "help" == option.ToLower() || "?" == option )
|
|
{
|
|
DisplayUsage();
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
bOK = true;
|
|
|
|
if( !bOK )
|
|
{
|
|
DisplayUsage();
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
static void DisplayBanner()
|
|
{
|
|
Console.WriteLine( FormatFromResource( "RECALCSTATS_COPYRIGHT_1" ) );
|
|
Console.WriteLine( FormatFromResource( "RECALCSTATS_COPYRIGHT_2" ) );
|
|
Console.WriteLine();
|
|
}
|
|
|
|
static void DisplayUsage()
|
|
{
|
|
Console.WriteLine( FormatFromResource( "RECALCSTATS_USAGE_1" ) );
|
|
Console.WriteLine( FormatFromResource( "RECALCSTATS_USAGE_2" ) );
|
|
Console.WriteLine();
|
|
}
|
|
|
|
static void RecalcStats()
|
|
{
|
|
OpenConnection();
|
|
|
|
try
|
|
{
|
|
//
|
|
// Get entity counts
|
|
//
|
|
Console.Write( FormatFromResource( "RECALCSTATS_GETTINGENTITYCOUNTS" ) );
|
|
|
|
SqlCommand cmd = new SqlCommand( "UI_getEntityCounts", connection, transaction );
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
Console.WriteLine( FormatFromResource( "RECALCSTATS_DONE" ) );
|
|
|
|
//
|
|
// Get publisher stats
|
|
//
|
|
Console.Write( FormatFromResource( "RECALCSTATS_GETTINGPUBLISHERSTATS" ) );
|
|
|
|
cmd.CommandText = "UI_getPublisherStats";
|
|
cmd.ExecuteNonQuery();
|
|
|
|
Console.WriteLine( FormatFromResource( "RECALCSTATS_DONE" ) );
|
|
|
|
//
|
|
// Get top publishers
|
|
//
|
|
Console.Write( FormatFromResource( "RECALCSTATS_GETTINGTOPPUBLISHERS" ) );
|
|
|
|
cmd.CommandText = "UI_getTopPublishers";
|
|
cmd.ExecuteNonQuery();
|
|
|
|
Console.WriteLine( FormatFromResource( "RECALCSTATS_DONE" ) );
|
|
|
|
//
|
|
// Get taxonomy stats
|
|
//
|
|
Console.Write( FormatFromResource( "RECALCSTATS_GETTINGTAXONOMYSTATS" ) );
|
|
|
|
cmd.CommandText = "UI_getTaxonomyStats";
|
|
cmd.ExecuteNonQuery();
|
|
|
|
Console.WriteLine( FormatFromResource( "RECALCSTATS_DONE" ) );
|
|
|
|
//
|
|
// All sprocs succeeded
|
|
//
|
|
Console.WriteLine( FormatFromResource( "RECALCSTATS_SUCCEEDED" ) );
|
|
}
|
|
finally
|
|
{
|
|
CloseConnection();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
static void OpenConnection()
|
|
{
|
|
try
|
|
{
|
|
string connectionString = (string) Registry.LocalMachine.OpenSubKey( @"SOFTWARE\Microsoft\UDDI\Database" ).GetValue( "WriterConnectionString" );
|
|
connection = new SqlConnection( connectionString );
|
|
connection.Open();
|
|
transaction = connection.BeginTransaction( IsolationLevel.ReadCommitted, "recalcstats" );
|
|
}
|
|
catch
|
|
{
|
|
throw new Exception( "Unable to connect to the database" );
|
|
}
|
|
}
|
|
|
|
static void CloseConnection()
|
|
{
|
|
transaction.Commit();
|
|
connection.Close();
|
|
}
|
|
|
|
static string FormatFromResource( string resID, params object[] inserts )
|
|
{
|
|
try
|
|
{
|
|
string resourceStr = UDDI.Localization.GetString( resID );
|
|
if( null != resourceStr )
|
|
{
|
|
string resultStr = string.Format( resourceStr, inserts );
|
|
return resultStr;
|
|
}
|
|
|
|
return "String not specified in the resources: " + resID;
|
|
}
|
|
catch( Exception e )
|
|
{
|
|
return "FormatFromResource failed to load the resource string for ID: " + resID + " Reason: " + e.Message;
|
|
}
|
|
}
|
|
}
|
|
}
|