IBE.SQL.EliteDBIO.ImportEconomyLevelLocalizations C# (CSharp) Method

ImportEconomyLevelLocalizations() private method

loads the localized economy level names and check
private ImportEconomyLevelLocalizations ( String Filename ) : void
Filename String
return void
        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);
            }

        }