git_bsmd/UpdateIdentifierTool/UpdateIdentifierTool/Program.cs

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);
}
}
}
}