private int doImport(ListImportOptions opts, Action <ListManager, MutableDataTable, IDictionary <string, string>, IDictionary <string, string> > importAction) { try { // parse data MutableDataTable data; if (opts.FilePath.EndsWith(".xlsx")) { data = DataTable.New.ReadExcel(opts.FilePath); } else { data = DataTable.New.ReadCsv(opts.FilePath); } Func <string, IDictionary <string, string> > loadSuppliment = (path) => { IDictionary <string, string> dic = null; if (string.IsNullOrWhiteSpace(path) == false) { // load it var lines = File.ReadAllLines(path); dic = lines.Where(x => !string.IsNullOrWhiteSpace(x)) .ToDictionary(x => x.Split(':')[0], x => x.Split(':')[1]); } return(dic); }; // load mapping and defaults var mapping = loadSuppliment(opts.MappingFilePath); var defaults = loadSuppliment(opts.DefaultFilePath); // initialize context WithContext(opts, ctx => { var mgr = new ListManager(ctx, opts.List); importAction(mgr, data, mapping, defaults); }); } catch (Exception ex) { Console.WriteLine("An error occurred"); Console.WriteLine(ex.Message); return(1); } return(0); }
public int ImportListData(ListImportOptions opts) { return(doImport(opts, (mgr, data, mapping, defaults) => mgr.ImportItems(data, mapping, defaults))); }