internal void ImportEconomyLevelLocalizations(String Filename)
{
DBConnector lDBCon = null;
dsEliteDB Data;
DataSet DataNames;
Dictionary<String, Int32> foundLanguagesFromFile = new Dictionary<String, Int32>();
Int32 Counter = 0;
Data = new dsEliteDB();
DataNames = new DataSet();
try
{
lDBCon = new DBConnector(Program.DBCon.ConfigData, true);
DataNames.ReadXml(Filename);
lDBCon.TableRead("select * from tbLanguage", Data.tblanguage);
lDBCon.TableRead("select * from tbLevelLocalization", Data.tblevellocalization);
lDBCon.TableRead("select * from tbEconomyLevel", Data.tbeconomylevel);
if(DataNames.Tables["Levels"] != null)
{
sendProgressEvent(new ProgressEventArgs() {Info="import economy level localization", CurrentValue=Counter, TotalValue=DataNames.Tables["Levels"].Rows.Count });
// first check if there's a new language
foreach (DataColumn LanguageFromFile in DataNames.Tables["Levels"].Columns)
{
if(!LanguageFromFile.ColumnName.Equals("ID", StringComparison.InvariantCultureIgnoreCase))
{
DataRow[] LanguageName = Data.tblanguage.Select("language = " + DBConnector.SQLAString(LanguageFromFile.ColumnName));
if(LanguageName.Count() == 0)
{
// add a non existing language
DataRow newRow = Data.tblanguage.NewRow();
int? Wert = DBConvert.To<int?>(Data.tblanguage.Compute("max(id)", ""));
if(Wert == null)
Wert = 0;
newRow["id"] = Wert;
newRow["language"] = LanguageFromFile.ColumnName;
Data.tblanguage.Rows.Add(newRow);
foundLanguagesFromFile.Add(LanguageFromFile.ColumnName, (Int32)Wert);
}
else
foundLanguagesFromFile.Add((String)LanguageName[0]["language"], (Int32)LanguageName[0]["id"]);
}
}
// submit changes (tbLanguage)
lDBCon.TableUpdate(Data.tblanguage);
// compare and add the localized names
foreach (DataRow LocalizationFromFile in DataNames.Tables["Levels"].AsEnumerable())
{
String BaseName = (String)LocalizationFromFile[Program.BASE_LANGUAGE];
DataRow[] Level = Data.tbeconomylevel.Select("level = " + DBConnector.SQLAString(DBConnector.DTEscape(BaseName)));
foreach (KeyValuePair<String, Int32> LanguageFormFile in foundLanguagesFromFile)
{
DataRow[] currentLocalizations = Data.tblevellocalization.Select(" economylevel_id = " + Level[0]["id"] +
" and language_id = " + LanguageFormFile.Value);
if(currentLocalizations.Count() == 0)
{
// add a new localization
dsEliteDB.tblevellocalizationRow newRow = (dsEliteDB.tblevellocalizationRow)Data.tblevellocalization.NewRow();
newRow.economylevel_id = (Int32)Level[0]["id"];
newRow.language_id = LanguageFormFile.Value;
newRow.locname = LocalizationFromFile[LanguageFormFile.Key].ToString();
Data.tblevellocalization.Rows.Add(newRow);
}
}
Counter++;
sendProgressEvent(new ProgressEventArgs() {Info="import economy level localization", CurrentValue=Counter, TotalValue=DataNames.Tables["Levels"].Rows.Count });
}
}
// submit changes
lDBCon.TableUpdate(Data.tblevellocalization);
lDBCon.Dispose();
}
catch (Exception ex)
{
if(lDBCon != null)
lDBCon.Dispose();
throw new Exception("Error while loading commodity names", ex);
}
}