70 lines
2.7 KiB
C#
70 lines
2.7 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using bsmd.database;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace UpdateIdentifierTool
|
|
{
|
|
static class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
try
|
|
{
|
|
SqlConnection con = new SqlConnection(Properties.Settings.Default.ConnectionString);
|
|
con.Open();
|
|
Console.WriteLine();
|
|
Console.Write("LOAD..");
|
|
// alles message histories laden...
|
|
string query = "SELECT Id, ReportingPartyId, EntityId, EntityType, EntityName, EntityValues, Timestamp, Identifier FROM MessageHistory ORDER BY Timestamp";
|
|
SqlCommand cmd = new SqlCommand(query, con);
|
|
IDataReader reader = cmd.ExecuteReader();
|
|
List<MessageHistory> allHistories = MessageHistory.LoadList(reader);
|
|
reader.Close();
|
|
|
|
string updateString = "UPDATE MessageHistory SET Identifier = @IDENTIFIER WHERE ID = @ID";
|
|
SqlCommand updateCmd = new SqlCommand(updateString, con);
|
|
SqlParameter p1 = new SqlParameter("@IDENTIFIER", SqlDbType.Int);
|
|
SqlParameter p2 = new SqlParameter("@ID", SqlDbType.UniqueIdentifier);
|
|
updateCmd.Parameters.Add(p1);
|
|
updateCmd.Parameters.Add(p2);
|
|
|
|
int cnt = 0;
|
|
|
|
foreach(MessageHistory mh in allHistories)
|
|
{
|
|
object o = mh.CreateObjectFromValues();
|
|
if(o is ISublistElement)
|
|
{
|
|
string identString = ((ISublistElement)o).Identifier;
|
|
Regex re = new Regex(@"\d+");
|
|
Match m = re.Match(identString);
|
|
if (m.Success)
|
|
{
|
|
mh.Identifier = Int32.Parse(m.Value);
|
|
p1.Value = mh.Identifier;
|
|
p2.Value = mh.Id;
|
|
updateCmd.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
double percentage = 100 * (double) cnt / (double) allHistories.Count;
|
|
Console.Write("\b\b\b\b\b\b");
|
|
Console.Write("{0:0.###}", percentage);
|
|
cnt++;
|
|
}
|
|
Console.WriteLine();
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
Console.WriteLine(ex);
|
|
}
|
|
}
|
|
}
|
|
}
|