2018-11-07 07:10:12 +00:00
|
|
|
|
///
|
|
|
|
|
|
/// Copyright (c) 2017-2018 Sensus Slovensko a.s.
|
|
|
|
|
|
///
|
|
|
|
|
|
using System;
|
2018-05-14 15:11:15 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Config
|
|
|
|
|
|
{
|
|
|
|
|
|
public static class Utils
|
|
|
|
|
|
{
|
|
|
|
|
|
public static string SignificantDigitsToFmt(double value, int sigDigits)
|
|
|
|
|
|
{
|
2018-11-07 07:10:12 +00:00
|
|
|
|
if (sigDigits == 6)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (value >= 99999.5 || value < -99999.5) return "F0";
|
|
|
|
|
|
else if (value >= 9999.95 || value < -9999.95) return "F1";
|
|
|
|
|
|
else if (value >= 999.995 || value < -999.995) return "F2";
|
|
|
|
|
|
else if (value >= 99.9995 || value < -99.9995) return "F3";
|
|
|
|
|
|
else if (value >= 9.99995 || value < -9.99995) return "F4";
|
|
|
|
|
|
else if (value >= 0.999995 || value < -0.999995) return "F5";
|
|
|
|
|
|
else if (value >= 0.0999995 || value < -0.0999995) return "F6";
|
|
|
|
|
|
else if (value >= 0.00999995 || value < -0.00999995) return "F7";
|
|
|
|
|
|
else if (value >= 0.000999995 || value < -0.000999995) return "F8";
|
|
|
|
|
|
else if (value >= 0.0000999995 || value < -0.0000999995) return "F9";
|
|
|
|
|
|
else return "F10";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (sigDigits == 5)
|
2018-05-14 15:11:15 +00:00
|
|
|
|
{
|
|
|
|
|
|
if (value >= 9999.5 || value < -9999.5) return "F0";
|
|
|
|
|
|
else if (value >= 999.95 || value < -999.95) return "F1";
|
|
|
|
|
|
else if (value >= 99.995 || value < -99.995) return "F2";
|
|
|
|
|
|
else if (value >= 9.9995 || value < -9.9995) return "F3";
|
|
|
|
|
|
else if (value >= 0.99995 || value < -0.99995) return "F4";
|
|
|
|
|
|
else if (value >= 0.099995 || value < -0.099995) return "F5";
|
|
|
|
|
|
else if (value >= 0.0099995 || value < -0.0099995) return "F6";
|
|
|
|
|
|
else if (value >= 0.00099995 || value < -0.00099995) return "F7";
|
|
|
|
|
|
else if (value >= 0.000099995 || value < -0.000099995) return "F8";
|
|
|
|
|
|
else return "F9";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (sigDigits == 4)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (value >= 999.5 || value < -999.5) return "F0";
|
|
|
|
|
|
else if (value >= 99.95 || value < -99.95) return "F1";
|
|
|
|
|
|
else if (value >= 9.995 || value < -9.995) return "F2";
|
|
|
|
|
|
else if (value >= 0.9995 || value < -0.9995) return "F3";
|
|
|
|
|
|
else if (value >= 0.09995 || value < -0.09995) return "F4";
|
|
|
|
|
|
else if (value >= 0.009995 || value < -0.009995) return "F5";
|
|
|
|
|
|
else if (value >= 0.0009995 || value < -0.0009995) return "F6";
|
|
|
|
|
|
else if (value >= 0.00009995 || value < -0.00009995) return "F7";
|
|
|
|
|
|
else return "F8";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (sigDigits == 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (value >= 99.5 || value < -99.5) return "F0";
|
|
|
|
|
|
else if (value >= 9.95 || value < -9.95) return "F1";
|
|
|
|
|
|
else if (value >= 0.995 || value < -0.995) return "F2";
|
|
|
|
|
|
else if (value >= 0.0995 || value < -0.0995) return "F3";
|
|
|
|
|
|
else if (value >= 0.00995 || value < -0.00995) return "F4";
|
|
|
|
|
|
else if (value >= 0.000995 || value < -0.000995) return "F5";
|
|
|
|
|
|
else if (value >= 0.0000995 || value < -0.0000995) return "F6";
|
|
|
|
|
|
else return "F7";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (sigDigits == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (value >= 9.5 || value < -9.5) return "F0";
|
|
|
|
|
|
else if (value >= 0.95 || value < -0.95) return "F1";
|
|
|
|
|
|
else if (value >= 0.095 || value < -0.095) return "F2";
|
|
|
|
|
|
else if (value >= 0.0095 || value < -0.0095) return "F3";
|
|
|
|
|
|
else if (value >= 0.00095 || value < -0.00095) return "F4";
|
|
|
|
|
|
else if (value >= 0.000095 || value < -0.000095) return "F5";
|
|
|
|
|
|
else return "F6";
|
|
|
|
|
|
}
|
|
|
|
|
|
else /// if (sigDigits == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (value >= 0.95 || value < -0.95) return "F0";
|
|
|
|
|
|
else if (value >= 0.095 || value < -0.095) return "F1";
|
|
|
|
|
|
else if (value >= 0.0095 || value < -0.0095) return "F2";
|
|
|
|
|
|
else if (value >= 0.00095 || value < -0.00095) return "F3";
|
|
|
|
|
|
else if (value >= 0.000095 || value < -0.000095) return "F4";
|
|
|
|
|
|
else return "F5";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2019-07-25 15:01:51 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2019-08-27 09:00:30 +00:00
|
|
|
|
/// Extract and return a DB server from a MySQL connection string.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static string GetDBServer(string connectionString)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetFromConnectionString(connectionString, new string[] { "SERVER=" });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Extract and return a DB name from a MySQL connection string.
|
2019-07-25 15:01:51 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static string GetDBName(string connectionString)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetFromConnectionString(connectionString, new string[] { "DATABASE=" });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Extract and return a username from a MySQL connection string
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static string GetDBUser(string connectionString)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetFromConnectionString(connectionString, new string[] { "USER=", "UID=" });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Extract and return a password from a MySQL connection string
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static string GetDBPassword(string connectionString)
|
|
|
|
|
|
{
|
2019-08-27 09:00:30 +00:00
|
|
|
|
return GetFromConnectionString(connectionString, new string[] { "PASSWORD=", "PWD=" });
|
2019-07-25 15:01:51 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Extract and return an element of a MySQL connection string
|
|
|
|
|
|
/// (a host, a database, a user name or a password).
|
|
|
|
|
|
/// Return an empty string on any error.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static string GetFromConnectionString(string connectionString, string[] patterns)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var pattern in patterns)
|
|
|
|
|
|
{
|
|
|
|
|
|
int startIx = connectionString.IndexOf(pattern);
|
|
|
|
|
|
if (startIx >= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
/// pattern found, extract the subsequent element
|
|
|
|
|
|
startIx += pattern.Length;
|
|
|
|
|
|
int endIx = connectionString.IndexOf(';', startIx);
|
|
|
|
|
|
return (endIx > 0) ? connectionString.Substring(startIx, endIx - startIx) : string.Empty;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// pattern NOT found
|
|
|
|
|
|
return string.Empty;
|
|
|
|
|
|
}
|
2018-05-14 15:11:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|