/// <summary> /// Displays the form on which randomizing definitions can be attached to query data columns. /// </summary> /// <param name="queryDef">File containing the query definition.</param> /// <returns>List containing the column reandomization specifications.</returns> public PFList <DataTableRandomizerColumnSpec> ShowRandomizerDefinitionForm(pfQueryDef queryDef) { PFList <DataTableRandomizerColumnSpec> colSpecs = null; DataTable dt = null; DataTableRandomizer dtr = null; try { _msg.Length = 0; _msg.Append("ShowRandomizerDefinitionForm started ... "); WriteMessageToLog(_msg.ToString()); dt = GetQueryDefSchema(queryDef); if (dt == null) { _msg.Length = 0; _msg.Append("Unable to determine schema for query definition "); _msg.Append(queryDef.QueryName); WriteMessageToLog(_msg.ToString()); AppMessages.DisplayErrorMessage(_msg.ToString()); return(colSpecs); } dtr = new DataTableRandomizer(); colSpecs = dtr.GetInitColSpecListFromDataTable(dt); SyncColSpecsWithSavedValues(queryDef, colSpecs); SyncColSpecsWithDataSchema(queryDef, ref colSpecs); PFRandomDataForms.DataTableRandomizerColumnSpecForm frm = new PFRandomDataForms.DataTableRandomizerColumnSpecForm(colSpecs); frm.ColSpecs = colSpecs; DialogResult res = frm.ShowDialog(); if (res == DialogResult.OK) { colSpecs = frm.ColSpecs; _msg.Length = 0; _msg.Append(frm.ColSpecs.ToXmlString()); WriteMessageToLog(_msg.ToString()); } else { _msg.Length = 0; _msg.Append("Column spec edit cancelled."); WriteMessageToLog(_msg.ToString()); } } catch (System.Exception ex) { _msg.Length = 0; _msg.Append(AppGlobals.AppMessages.FormatErrorMessage(ex)); WriteMessageToLog(_msg.ToString()); AppMessages.DisplayErrorMessage(_msg.ToString(), _saveErrorMessagesToAppLog); } finally { _msg.Length = 0; _msg.Append("... ShowRandomizerDefinitionForm finished."); WriteMessageToLog(_msg.ToString()); } return(colSpecs); }
public void DatesAndTimesTest() { DataTable dt = new DataTable(); DataTableRandomizer dtr = new DataTableRandomizer(); PFList <DataTableRandomizerColumnSpec> colSpecs = new PFList <DataTableRandomizerColumnSpec>(); int maxOutputRows = 100; try { _msg.Length = 0; _msg.Append("DatesAndTimesTest started ...\r\n"); _messageLog.WriteLine(_msg.ToString()); DataColumn dc0 = new DataColumn("OrigDateTime", Type.GetType("System.DateTime")); DataColumn dc1 = new DataColumn("RandomDateUsingRange", Type.GetType("System.DateTime")); DataColumn dc2 = new DataColumn("RandomDateFromRange", Type.GetType("System.DateTime")); DataColumn dc3 = new DataColumn("RandomDateToRange", Type.GetType("System.DateTime")); DataColumn dc4 = new DataColumn("RandomTodayDate", Type.GetType("System.DateTime")); DataColumn dc5 = new DataColumn("RandomTodayDateOffset", Type.GetType("System.Int32")); DataColumn dc6 = new DataColumn("RandomDate", Type.GetType("System.DateTime")); DataColumn dc7 = new DataColumn("RandomDateOffset", Type.GetType("System.Int32")); dt.Columns.Add(dc0); dt.Columns.Add(dc1); dt.Columns.Add(dc2); dt.Columns.Add(dc3); dt.Columns.Add(dc4); dt.Columns.Add(dc5); dt.Columns.Add(dc6); dt.Columns.Add(dc7); colSpecs = dtr.GetInitColSpecListFromDataTable(dt); colSpecs[1].RandomDataType = enRandomDataType.RandomDatesAndTimes; colSpecs[1].RandomDataSource = "Years1930-1939.xml"; colSpecs[4].RandomDataType = enRandomDataType.RandomDatesAndTimes; colSpecs[4].RandomDataSource = "CurrentDateOffsetPlusMinus10Years.xml"; colSpecs[6].RandomDataType = enRandomDataType.RandomDatesAndTimes; colSpecs[6].RandomDataSource = "DatesOffsetPlusMinus10Years.xml"; string outputPath = Path.Combine(_defaultDataGridExportFolder, "DateTimeTestColSpecs.xml"); colSpecs.SaveToXmlFile(outputPath); for (int r = 0; r < maxOutputRows; r++) { DataRow dr = dt.NewRow(); dr[0] = Convert.ToDateTime("04/13/1948 00:00:01"); dr[1] = Convert.ToDateTime("04/13/1948 00:00:01"); dr[2] = Convert.ToDateTime("01/01/1930 00:00:00"); dr[3] = Convert.ToDateTime("12/31/1939 23:59:59"); dr[4] = DateTime.Now; dr[5] = (int)0; dr[6] = Convert.ToDateTime("04/13/1948 00:00:01"); dr[7] = (int)0; dt.Rows.Add(dr); } dtr.RandomizeDataTableValues(dt, colSpecs, 100); for (int r = 0; r < maxOutputRows; r++) { DataRow dr = dt.Rows[r]; DateTime newDateTime = (DateTime)dr[4]; TimeSpan ts = newDateTime.Subtract(DateTime.Now); dr[5] = (int)ts.TotalDays; newDateTime = (DateTime)dr[6]; ts = newDateTime.Subtract(Convert.ToDateTime("04/13/1948 00:00:01")); dr[7] = (int)ts.TotalDays; } dt.AcceptChanges(); OutputDataTableToGrid(dt); } catch (System.Exception ex) { _msg.Length = 0; _msg.Append(AppGlobals.AppMessages.FormatErrorMessage(ex)); _messageLog.WriteLine(_msg.ToString()); AppMessages.DisplayErrorMessage(_msg.ToString(), _saveErrorMessagesToAppLog); } finally { _msg.Length = 0; _msg.Append("\r\n... DatesAndTimesTest finished."); _messageLog.WriteLine(_msg.ToString()); } }