/// <summary> /// prints number of rows for each table in dataset. /// </summary> /// <param name="pnMcf"></param> private static void DumpInfo(McfDataSet pnMcf) { for (int i = 0; i < pnMcf.Tables.Count; i++) { Logger.WriteLine(pnMcf.Tables[i].TableName + " has " + pnMcf.Tables[i].Rows.Count); } }
public McfDecodesConverter(PostgreSQL svr, McfDataSet mcf, DecodesDataSet decodes) { this.svr = svr; this.mcf = mcf; this.decodes = decodes; m_converter = new UnitConversion(mcf, decodes, svr); }
public static void Import(string serverIP, string database, string siteFilter, string networkListName) { string fn = @"C:\temp\mcf.xml"; Performance perf = new Performance(); var pnMcf = new McfDataSet(); if (File.Exists(fn) && File.GetLastWriteTime(fn).Date != DateTime.Now.Date) { // read existing file. Logger.WriteLine("Reading existing XML"); pnMcf.ReadXml(fn); } else { Logger.WriteLine("Reading csv files from MCF"); pnMcf = McfUtility.GetDataSetFromCsvFiles(Globals.LocalConfigurationDataPath); pnMcf.WriteXml(fn); } DumpInfo(pnMcf); Application.DoEvents(); Logger.WriteLine(serverIP); var cs = PostgreSQL.CreateADConnectionString(serverIP, database, "decodes"); PostgreSQL svr = new PostgreSQL(cs); var decodes = DecodesUtility.GetDataSet(svr); McfDecodesConverter c = new McfDecodesConverter(svr, pnMcf, decodes); c.importMcf(siteFilter.Split(','), networkListName); UpdateSequences(svr); }
public McfDecodesConverter(PostgreSQL svr, McfDataSet mcf, DecodesDataSet decodes, string[] siteList) { m_siteList = siteList; this.svr = svr; this.mcf = mcf; this.decodes = decodes; m_converter = new UnitConversion(mcf, decodes, svr); }
/// <summary> /// Loads xml version of MCF /// </summary> /// <param name="svr"></param> /// <returns></returns> public static McfDataSet GetDataSetFromDisk( ) { Performance p = new Performance(); var ds = new McfDataSet(); string fn = Path.Combine(FileUtility.GetExecutableDirectory(), "mcf.xml"); ds.ReadXml(fn); p.Report("loaded mcf.xml"); return(ds); }
/// <summary> /// Loads xml version of MCF /// </summary> /// <param name="svr"></param> /// <returns></returns> public static McfDataSet GetDataSetFromDisk( ) { Performance p = new Performance(); var ds = new McfDataSet(); string fn = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "mcf.xml"); ds.ReadXml(fn); p.Report("loaded mcf.xml"); return(ds); }
/// <summary> /// Appends source mcf data to dest /// </summary> /// <param name="pnMcf"></param> /// <param name="yakMcf"></param> private static void AppendMcf(McfDataSet dest, McfDataSet source) { for (int i = 0; i < dest.Tables.Count; i++) { var dt = dest.Tables[i]; var st = source.Tables[dt.TableName]; string keyColumnName = dt.Columns[0].ColumnName; for (int r = 0; r < st.Rows.Count; r++) { // check if row allready exists in dest DataRow destRow = null; var keyValue = st.Rows[r][keyColumnName].ToString(); //if( keyValue == "AMRW") // Console.WriteLine(); var rows = dt.Select(keyColumnName + " = '" + keyValue + "'"); if (rows.Length > 1) { throw new Exception("keyColumn contains " + rows.Length.ToString() + " matches"); } if (rows.Length == 1) { destRow = rows[0]; } else {// or add row destRow = dt.NewRow(); dt.Rows.Add(destRow); } for (int c = 0; c < dt.Columns.Count; c++) { string cn = dt.Columns[c].ColumnName; destRow[cn] = st.Rows[r][cn]; } } } }
/// <summary> /// Loads xml version of MCF /// </summary> /// <param name="svr"></param> /// <returns></returns> public static McfDataSet GetDataSetFromCsvFiles(string mrdbPath) { Performance p = new Performance(); var ds = new McfDataSet(); // ds.EnforceConstraints = false; foreach (var item in tableNames) { var fn = Path.Combine(mrdbPath, item + ".csv"); if (!File.Exists(fn)) { Logger.WriteLine("Error: file missing '" + fn + "'"); continue; } var csv = new CsvFile(fn); if (item == "site") { FixLatLong(csv); } // yakima has two extra columns. //if (item == "pcode" && csv.Columns.Contains("TAGTYPE")) // csv.Columns.Remove("TAGTYPE"); //if (item == "pcode" && csv.Columns.Contains("LOGORDER")) // csv.Columns.Remove("LOGORDER"); csv.TableName = item + "mcf"; try { ds.Merge(csv, true, MissingSchemaAction.Ignore); } catch (ConstraintException ce) { Console.WriteLine("Error in table " + item + "\n " + ce.Message); PrintTableErrors(csv); } } return(ds); }
/// <summary> /// Loads xml version of MCF /// </summary> /// <param name="svr"></param> /// <returns></returns> public static McfDataSet GetDataSetFromCsvFiles( ) { Performance p = new Performance(); var ds = new McfDataSet(); // ds.EnforceConstraints = false; foreach (var item in tableNames) { var fn = FileUtility.GetFileReference(item + ".csv"); if (!File.Exists(fn)) { Logger.WriteLine("Error: file missing '" + fn + "'"); continue; } var csv = new CsvFile(fn); if( item == "site") FixLatLong(csv); // yakima has two extra columns. //if (item == "pcode" && csv.Columns.Contains("TAGTYPE")) // csv.Columns.Remove("TAGTYPE"); //if (item == "pcode" && csv.Columns.Contains("LOGORDER")) // csv.Columns.Remove("LOGORDER"); csv.TableName = item + "mcf"; try { ds.Merge(csv,true, MissingSchemaAction.Ignore); } catch (ConstraintException ce) { Console.WriteLine("Error in table "+item +"\n "+ce.Message); PrintTableErrors(csv); } } return ds; }
public static void Import(string serverIP, string database, string password, string networkListName, string[] siteList, string mrdbPath) { string fn = @"C:\temp\mcf.xml"; Performance perf = new Performance(); var pnMcf = new McfDataSet(); if (File.Exists(fn) && File.GetLastWriteTime(fn).Date == DateTime.Now.Date) { // read existing file. Logger.WriteLine("Reading existing XML"); pnMcf.ReadXml(fn); } else { Logger.WriteLine("Reading csv files from MCF"); pnMcf = McfUtility.GetDataSetFromCsvFiles(mrdbPath); pnMcf.WriteXml(fn); } DumpInfo(pnMcf); Application.DoEvents(); Logger.WriteLine(serverIP); var svr = PostgreSQL.GetPostgresServer(database, serverIP, "decodes", password) as PostgreSQL; DecodesUtility.UpdateSequences(svr); DecodesUtility.GenerateDataSet(@"c:\temp\decodes.xsd", svr); var decodes = DecodesUtility.GetDataSet(svr); McfDecodesConverter c = new McfDecodesConverter(svr, pnMcf, decodes, siteList); c.importMcf(networkListName); }
/// <summary> /// Loads xml version of MCF /// </summary> /// <param name="svr"></param> /// <returns></returns> public static McfDataSet GetDataSetFromDisk( ) { Performance p = new Performance(); var ds = new McfDataSet(); string fn = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "mcf.xml"); ds.ReadXml(fn); p.Report("loaded mcf.xml"); return ds; }