public void ImportLocalizationDataFromCSV(string fileName, EliteDBIO.enLocalizationType activeSetting, enLocalisationImportType importType = enLocalisationImportType.onlyNew)
{
String sqlString = "";
Int32 counter = 0;
String infoString = "";
String idString = "";
String dataLine;
DataSet importData;
DataTable importTable;
try
{
switch (activeSetting)
{
case enLocalizationType.Commodity:
infoString = "import commodity localization...";
idString = "Commodity_ID;Language;Name";
break;
case enLocalizationType.Category:
infoString = "import category localization...";
idString = "Category_ID;Language;Name";
break;
case enLocalizationType.Economylevel:
infoString = "import economylevel localization...";
idString = "EconomyLevel_ID;Language;Name";
break;
default:
throw new Exception("unknown setting : " + activeSetting);
}
List<string> dataLines = File.ReadAllLines(fileName).ToList();
if(dataLines[0].Equals(idString, StringComparison.InvariantCultureIgnoreCase))
{
importData = new DataSet();
importTable = new DataTable("Names");
importData.Tables.Add(importTable);
DataColumn column;
column = new DataColumn("id", Type.GetType("System.Int32"));
column.AllowDBNull = false;
column.Unique = true;
importTable.Columns.Add(column);
for (int i = 1; i < dataLines.Count; i++)
{
if(!String.IsNullOrEmpty(dataLines[i]))
{
switch (activeSetting)
{
case enLocalizationType.Commodity:
List<String> data = dataLines[i].Split(new char[] {';'}).ToList();
Int32 currentID = Int32.Parse(data[0]);
if (!importTable.Columns.Contains(data[1]))
{
Debug.Print(Type.GetType("System.String").ToString());
// add a new language in table
column = new DataColumn(data[1], Type.GetType("System.String"));
column.DefaultValue = "";
importTable.Columns.Add(column);
}
DataRow currentrow;
var rowForID = importTable.Select("id = " + currentID);
if (rowForID.Count() == 0)
{
// add a new row
currentrow = importTable.NewRow();
currentrow["id"] = currentID;
importTable.Rows.Add(currentrow);
}
else
currentrow = rowForID[0];
currentrow[data[1]] = data[2].Trim();
break;
case enLocalizationType.Category:
break;
case enLocalizationType.Economylevel:
break;
default:
throw new Exception("unknown setting : " + activeSetting);
}
}
counter++;
}
switch (activeSetting)
{
case enLocalizationType.Commodity:
ImportCommodityLocalizations(importData, importType);
break;
case enLocalizationType.Category:
infoString = "import category localization...";
idString = "Category_ID;Language;Name";
break;
case enLocalizationType.Economylevel:
infoString = "import economylevel localization...";
idString = "EconomyLevel_ID;Language;Name";
break;
default:
throw new Exception("unknown setting : " + activeSetting);
}
}
else
{
sendProgressEvent(new ProgressEventArgs() { Info="abort: file has wrong header", CurrentValue=1, TotalValue=1, ForceRefresh=true });
}
dataLines.Clear();
}
catch (Exception ex)
{
throw new Exception("Error while importing localization data from csv", ex);
}
}