Files
ARM64/MarketData/MarketDataLib/DataAccess/DictionaryDA.cs
2025-04-01 18:29:51 -04:00

343 lines
13 KiB
C#
Executable File

using System.Text;
using MySql.Data.MySqlClient;
using MarketData.MarketDataModel;
using MarketData.Utils;
namespace MarketData.DataAccess
{
public class DictionaryDA
{
private DictionaryDA()
{
}
public static bool TruncateDictionary()
{
MySqlConnection sqlConnection = null;
MySqlTransaction sqlTransaction = null;
MySqlCommand sqlCommand=null;
String strQuery = null;
try
{
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("market_data"));
sqlTransaction = sqlConnection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);
StringBuilder sb = new StringBuilder();
sb.Append("truncate table dictionary");
strQuery = sb.ToString();
sqlCommand = new MySqlCommand(strQuery, sqlConnection, sqlTransaction);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlCommand.ExecuteNonQuery();
sqlTransaction.Commit();
return true;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,exception);
MDTrace.WriteLine(LogLevel.DEBUG,"Query was '" + strQuery + "'");
return false;
}
finally
{
if(null!=sqlCommand)sqlCommand.Dispose();
if(null!=sqlTransaction)sqlTransaction.Dispose();
if (null != sqlConnection) sqlConnection.Close();
}
}
public static bool InsertDictionaryElement(DictionaryElement dictionaryElement)
{
DictionaryCollection dictionaryCollection=new DictionaryCollection();
dictionaryCollection.Add(dictionaryElement);
InsertDictionaryCollection(dictionaryCollection);
return true;
}
public static bool InsertDictionaryCollection(DictionaryCollection dictionaryCollection)
{
MySqlConnection sqlConnection = null;
MySqlTransaction sqlTransaction = null;
MySqlCommand sqlCommand=null;
String strQuery = null;
try
{
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("market_data"));
sqlTransaction = sqlConnection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);
StringBuilder sb = new StringBuilder();
DateTime modified=DateTime.Now;
DateTime created=modified;
foreach(DictionaryElement dictionaryElement in dictionaryCollection)
{
sb=new StringBuilder();
if(ContainsDictionaryElement(dictionaryElement))
{
continue;
}
sb.Append("insert into dictionary (word,part_of_speech) ");
sb.Append("values(");
sb.Append(SqlUtils.ToSqlString(dictionaryElement.Word)).Append(",");
sb.Append("'").Append(dictionaryElement.PartOfSpeech).Append("'");
sb.Append(")");
strQuery = sb.ToString();
sqlCommand = new MySqlCommand(strQuery, sqlConnection, sqlTransaction);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlCommand.ExecuteNonQuery();
}
sqlTransaction.Commit();
return true;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,exception);
MDTrace.WriteLine(LogLevel.DEBUG,"Query was '" + strQuery + "'");
return false;
}
finally
{
if(null!=sqlCommand)sqlCommand.Dispose();
if(null!=sqlTransaction)sqlTransaction.Dispose();
if (null != sqlConnection) sqlConnection.Close();
}
}
public static bool ContainsDictionaryElement(DictionaryElement dictionaryElement)
{
MySqlConnection sqlConnection = null;
MySqlDataReader sqlDataReader = null;
MySqlCommand sqlCommand=null;
String strQuery = null;
int recordCount = 0;
try
{
StringBuilder sb = new StringBuilder();
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("market_data"));
sb.Append("select count(*) from dictionary where word=").Append(SqlUtils.ToSqlString(dictionaryElement.Word));
sb.Append(" and part_of_speech='").Append(dictionaryElement.PartOfSpeech).Append("'");
strQuery = sb.ToString();
sqlCommand = new MySqlCommand(strQuery, sqlConnection);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlDataReader = sqlCommand.ExecuteReader();
if (sqlDataReader.Read())
{
if (!sqlDataReader.IsDBNull(0)) recordCount = sqlDataReader.GetInt32(0);
}
sqlCommand.Dispose();
return 0 == recordCount ? false : true;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,exception);
return false;
}
finally
{
if(null!=sqlCommand)sqlCommand.Dispose();
if (null != sqlDataReader) {sqlDataReader.Close();sqlDataReader.Dispose();}
if (null != sqlConnection) sqlConnection.Close();
}
}
public static bool UpdateDictionaryElement(DictionaryElement dictionaryElement)
{
DictionaryCollection dictionaryCollection=new DictionaryCollection();
dictionaryCollection.Add(dictionaryElement);
return UpdateDictionaryElements(dictionaryCollection);
}
public static bool UpdateDictionaryElements(DictionaryCollection dictionaryCollection)
{
MySqlConnection sqlConnection = null;
MySqlTransaction sqlTransaction = null;
MySqlCommand sqlCommand=null;
String strQuery = null;
try
{
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("market_data"));
sqlTransaction = sqlConnection.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);
foreach(DictionaryElement dictionaryElement in dictionaryCollection)
{
if(!ContainsDictionaryElement(dictionaryElement))continue;
if(null==dictionaryElement.PartOfSpeech||0==dictionaryElement.PartOfSpeech.Length)continue;
StringBuilder sb = new StringBuilder();
DateTime modified=DateTime.Now;
sb.Append("update dictionary set ");
sb.Append("part_of_speech=").Append("'").Append(dictionaryElement.PartOfSpeech).Append("'");
sb.Append(" where word=").Append(SqlUtils.ToSqlString(dictionaryElement.Word));
strQuery = sb.ToString();
sqlCommand = new MySqlCommand(strQuery, sqlConnection, sqlTransaction);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlCommand.ExecuteNonQuery();
}
sqlTransaction.Commit();
return true;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,exception);
MDTrace.WriteLine(LogLevel.DEBUG,"Query was '" + strQuery + "'");
return false;
}
finally
{
if(null!=sqlCommand)sqlCommand.Dispose();
if(null!=sqlTransaction)sqlTransaction.Dispose();
if (null != sqlConnection) sqlConnection.Close();
}
}
public static DictionaryCollection GetWord(String word)
{
MySqlConnection sqlConnection = null;
MySqlCommand sqlCommand=null;
MySqlDataReader sqlDataReader=null;
DictionaryCollection dictionaryCollection=new DictionaryCollection();
String strQuery = null;
try
{
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("market_data"));
StringBuilder sb = new StringBuilder();
DateTime modified=DateTime.Now;
sb.Append("select word,part_of_speech from dictionary ");
sb.Append(" where word=").Append(SqlUtils.ToSqlString(word));
sb.Append(" order by word desc");
strQuery = sb.ToString();
sqlCommand = new MySqlCommand(strQuery, sqlConnection);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlDataReader=sqlCommand.ExecuteReader();
while(sqlDataReader.Read())
{
DictionaryElement dictionaryElement=new DictionaryElement();
dictionaryElement.Word=sqlDataReader.GetString(0);
if(!sqlDataReader.IsDBNull(1))dictionaryElement.PartOfSpeech=sqlDataReader.GetString(1);
dictionaryCollection.Add(dictionaryElement);
}
return dictionaryCollection;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,exception);
MDTrace.WriteLine(LogLevel.DEBUG,"Query was '" + strQuery + "'");
return null;
}
finally
{
if (null != sqlDataReader) {sqlDataReader.Close();sqlDataReader.Dispose();}
if(null!=sqlCommand)sqlCommand.Dispose();
if (null != sqlConnection) sqlConnection.Close();
}
}
public static DictionaryCollection GetPartsOfSpeech(String partOfSpeech)
{
MySqlConnection sqlConnection = null;
MySqlCommand sqlCommand=null;
MySqlDataReader sqlDataReader=null;
DictionaryCollection dictionaryCollection=new DictionaryCollection();
String strQuery = null;
try
{
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("market_data"));
StringBuilder sb = new StringBuilder();
DateTime modified=DateTime.Now;
sb.Append("select word,part_of_speech from dictionary ");
sb.Append(" where part_of_speech='").Append(partOfSpeech).Append("'");
sb.Append(" order by word desc");
strQuery = sb.ToString();
sqlCommand = new MySqlCommand(strQuery, sqlConnection);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlDataReader=sqlCommand.ExecuteReader();
while(sqlDataReader.Read())
{
DictionaryElement dictionaryElement=new DictionaryElement();
dictionaryElement.Word=sqlDataReader.GetString(0);
if(!sqlDataReader.IsDBNull(1))dictionaryElement.PartOfSpeech=sqlDataReader.GetString(1);
dictionaryCollection.Add(dictionaryElement);
}
return dictionaryCollection;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,exception);
MDTrace.WriteLine(LogLevel.DEBUG,"Query was '" + strQuery + "'");
return null;
}
finally
{
if(null!=sqlCommand)sqlCommand.Dispose();
if (null != sqlConnection) sqlConnection.Close();
if (null != sqlDataReader) {sqlDataReader.Close();sqlDataReader.Dispose();}
}
}
public static DictionaryCollection GetDictionaryCollection()
{
MySqlConnection sqlConnection = null;
MySqlCommand sqlCommand=null;
MySqlDataReader sqlDataReader=null;
DictionaryCollection dictionaryCollection=new DictionaryCollection();
String strQuery = null;
try
{
sqlConnection = SqlUtils.CreateMySqlConnection(MainDataSource.Instance.LocateDataSource("market_data"));
StringBuilder sb = new StringBuilder();
DateTime modified=DateTime.Now;
sb.Append("select word,part_of_speech from dictionary ");
sb.Append(" order by word desc");
strQuery = sb.ToString();
sqlCommand = new MySqlCommand(strQuery, sqlConnection);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlDataReader=sqlCommand.ExecuteReader();
while(sqlDataReader.Read())
{
DictionaryElement dictionaryElement=new DictionaryElement();
dictionaryElement.Word=sqlDataReader.GetString(0);
dictionaryElement.PartOfSpeech=sqlDataReader.GetString(1);
dictionaryCollection.Add(dictionaryElement);
}
return dictionaryCollection;
}
catch (Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,exception);
MDTrace.WriteLine(LogLevel.DEBUG,"Query was '" + strQuery + "'");
return null;
}
finally
{
if(null!=sqlCommand)sqlCommand.Dispose();
if (null != sqlConnection) sqlConnection.Close();
if (null != sqlDataReader) {sqlDataReader.Close();sqlDataReader.Dispose();}
}
}
private static bool DeleteDictionaryCollection(DictionaryCollection dictionaryCollection, MySqlConnection sqlConnection, MySqlTransaction sqlTransaction)
{
foreach(DictionaryElement dictionaryElement in dictionaryCollection)DeleteDictionaryElement(dictionaryElement,sqlConnection,sqlTransaction);
return true;
}
private static bool DeleteDictionaryElement(DictionaryElement dictionaryElement, MySqlConnection sqlConnection, MySqlTransaction sqlTransaction)
{
StringBuilder sb = new StringBuilder();
String strQuery = null;
try
{
sb.Append("delete from dictionary where ");
sb.Append("word=").Append(SqlUtils.ToSqlString(dictionaryElement.Word));
strQuery = sb.ToString();
MySqlCommand sqlCommand = new MySqlCommand(strQuery, sqlConnection, sqlTransaction);
sqlCommand.CommandTimeout = SqlUtils.COMMAND_TIMEOUT;
sqlCommand.ExecuteNonQuery();
sqlCommand.Dispose();
return true;
}
catch (Exception exception)
{
sqlTransaction.Rollback();
MDTrace.WriteLine(LogLevel.DEBUG,exception);
if (null != strQuery) MDTrace.WriteLine(LogLevel.DEBUG,"Query was " + strQuery);
return false;
}
finally
{
}
}
}
}