/// <summary> /// Imports an Int32 value from the specified text line using the specified delimiter /// </summary> /// <param name="AImportLine">The line containing the text to be imported. When the method returns the imported value /// will have been removed from the start ready for the next call to an Import method.</param> /// <param name="ADelimiter">The delimiter</param> /// <param name="AColumnTitle"></param> /// <param name="ADataColumn"></param> /// <param name="ARowNumber"></param> /// <param name="AMessages"></param> /// <param name="AValidationColumnsDict"></param> /// <param name="ADefaultString"></param> /// <returns>The value. The AImportLine parameter will have been clipped.</returns> public static Int32 ImportInt32(ref String AImportLine, String ADelimiter, String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref AImportLine, ADelimiter); if (sReturn == String.Empty) { sReturn = ADefaultString; } Int32 retVal; if (Int32.TryParse(sReturn, out retVal)) { return(retVal); } AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), String.Format(Catalog.GetString("Cannot convert '{0}' to an integer number.."), sReturn), TResultSeverity.Resv_Critical)); return(1); }
/// <summary> /// Imports a string value from the specified text line using the specified delimiter /// </summary> /// <param name="AImportLine">The line containing the text to be imported. When the method returns the imported value /// will have been removed from the start ready for the next call to an Import method.</param> /// <param name="ADelimiter">The delimiter</param> /// <param name="AColumnTitle"></param> /// <param name="ADataColumn"></param> /// <param name="ARowNumber"></param> /// <param name="AMessages"></param> /// <param name="AValidationColumnsDict"></param> /// <param name="ATreatEmptyStringAsText">When true the return value will be the empty string. When false the return value will be null.</param> /// <returns>The string value. The AImportLine parameter will have been clipped.</returns> public static String ImportString(ref String AImportLine, String ADelimiter, String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, bool ATreatEmptyStringAsText = true) { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref AImportLine, ADelimiter); if ((sReturn == StringHelper.CSV_STRING_FORMAT_ERROR) && (AMessages != null)) { AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), Catalog.GetString("Could not parse the quoted string. Did you forget a quotation mark?"), TResultSeverity.Resv_Critical)); } if ((sReturn.Length == 0) && !ATreatEmptyStringAsText) { return(null); } return(sReturn); }
/// <summary> /// Imports a decimal value from the specified text line using the specified delimiter and culture info /// </summary> /// <param name="AImportLine">The line containing the text to be imported. When the method returns the imported value /// will have been removed from the start ready for the next call to an Import method.</param> /// <param name="ADelimiter">The delimiter</param> /// <param name="ACultureInfoNumberFormat"></param> /// <param name="AColumnTitle"></param> /// <param name="ADataColumn"></param> /// <param name="ARowNumber"></param> /// <param name="AMessages"></param> /// <param name="AValidationColumnsDict"></param> /// <param name="ADefaultString"></param> /// <returns>The value. The AImportLine parameter will have been clipped.</returns> public static decimal ImportDecimal(ref String AImportLine, String ADelimiter, CultureInfo ACultureInfoNumberFormat, String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref AImportLine, ADelimiter); if (sReturn == String.Empty) { sReturn = ADefaultString; } try { decimal dec = Convert.ToDecimal(sReturn, ACultureInfoNumberFormat); return(dec); } catch { AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), String.Format(Catalog.GetString("Cannot convert '{0}' to a decimal number."), sReturn), TResultSeverity.Resv_Critical)); return(1.0m); } }
/// <summary> /// Imports a string value from the specified text line using the specified delimiter /// </summary> /// <param name="AImportLine">The line containing the text to be imported. When the method returns the imported value /// will have been removed from the start ready for the next call to an Import method.</param> /// <param name="ADelimiter">The delimiter</param> /// <param name="AColumnTitle"></param> /// <param name="ADataColumn"></param> /// <param name="ARowNumber"></param> /// <param name="AMessages"></param> /// <param name="AValidationColumnsDict"></param> /// <param name="ATreatEmptyStringAsText">When true the return value will be the empty string. When false the return value will be null.</param> /// <returns>The string value. The AImportLine parameter will have been clipped.</returns> public static String ImportString(ref String AImportLine, String ADelimiter, String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, bool ATreatEmptyStringAsText = true) { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref AImportLine, ADelimiter); if ((sReturn == StringHelper.CSV_STRING_FORMAT_ERROR) && (AMessages != null)) { AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), Catalog.GetString("Could not parse the quoted string. Did you forget a quotation mark?"), TResultSeverity.Resv_Critical)); } if ((sReturn.Length == 0) && !ATreatEmptyStringAsText) { return null; } return sReturn; }
/// <summary> /// Imports a Date value from the specified text line using the specified delimiter /// </summary> /// <param name="AImportLine">The line containing the text to be imported. When the method returns the imported value /// will have been removed from the start ready for the next call to an Import method.</param> /// <param name="ADelimiter">The delimiter</param> /// <param name="ACultureInfoDateFormat"></param> /// <param name="ADateMayBeAnInteger"></param> /// <param name="AColumnTitle"></param> /// <param name="ADataColumn"></param> /// <param name="ARowNumber"></param> /// <param name="AMessages"></param> /// <param name="AValidationColumnsDict"></param> /// <param name="ADefaultString"></param> /// <returns>The date value. The AImportLine parameter will have been clipped.</returns> public static DateTime ImportDate(ref String AImportLine, String ADelimiter, CultureInfo ACultureInfoDateFormat, bool ADateMayBeAnInteger, String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sDate = StringHelper.GetNextCSV(ref AImportLine, ADelimiter); int dateAsInt; int dateLength = sDate.Length; if (sDate == String.Empty) { sDate = ADefaultString; } else if (ADateMayBeAnInteger && ((dateLength == 6) || (dateLength == 8)) && !sDate.Contains(".") && !sDate.Contains(",")) { if (int.TryParse(sDate, out dateAsInt) && (dateAsInt > 10100) && (dateAsInt < 311300)) { sDate = sDate.Insert(dateLength - 2, "-").Insert(dateLength - 4, "-"); } else if (int.TryParse(sDate, out dateAsInt) && (dateAsInt > 1011900) && (dateAsInt < 31133000)) { sDate = sDate.Insert(dateLength - 4, "-").Insert(dateLength - 6, "-"); } } DateTime dtReturn; try { dtReturn = Convert.ToDateTime(sDate, ACultureInfoDateFormat); } catch (Exception) { AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), String.Format(Catalog.GetString("Cannot convert '{0}' to a date."), sDate), TResultSeverity.Resv_Critical)); TLogging.Log("Problem parsing " + sDate + " with format " + ACultureInfoDateFormat.DateTimeFormat.ShortDatePattern); return(DateTime.Today); } return(dtReturn); }
/// <summary> /// Imports a decimal value from the specified text line using the specified delimiter and culture info /// </summary> /// <param name="AImportLine">The line containing the text to be imported. When the method returns the imported value /// will have been removed from the start ready for the next call to an Import method.</param> /// <param name="ADelimiter">The delimiter</param> /// <param name="ACultureInfoNumberFormat"></param> /// <param name="AColumnTitle"></param> /// <param name="ADataColumn"></param> /// <param name="ARowNumber"></param> /// <param name="AMessages"></param> /// <param name="AValidationColumnsDict"></param> /// <param name="ADefaultString"></param> /// <returns>The value. The AImportLine parameter will have been clipped.</returns> public static decimal ImportDecimal(ref String AImportLine, String ADelimiter, CultureInfo ACultureInfoNumberFormat, String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref AImportLine, ADelimiter); if (sReturn == String.Empty) { sReturn = ADefaultString; } try { // Always use the invariant culture if (ACultureInfoNumberFormat.NumberFormat.NumberDecimalSeparator == ".") { // Decimal dot: just replace thousands with nothing (comma, space and apostrophe) return(Convert.ToDecimal(sReturn.Replace(",", "").Replace(" ", "").Replace("'", ""), CultureInfo.InvariantCulture)); } else { // Decimal comma: replace thousands with nothing (dot, space and apostrophe) and then comma with dot return(Convert.ToDecimal(sReturn.Replace(".", "").Replace(" ", "").Replace("'", "").Replace(",", "."), CultureInfo.InvariantCulture)); } } catch { AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), String.Format(Catalog.GetString("Cannot convert '{0}' to a decimal number."), sReturn), TResultSeverity.Resv_Critical)); return(1.0m); } }
/// <summary> /// Imports a Date value from the specified text line using the specified delimiter /// </summary> /// <param name="AImportLine">The line containing the text to be imported. When the method returns the imported value /// will have been removed from the start ready for the next call to an Import method.</param> /// <param name="ADelimiter">The delimiter</param> /// <param name="ACultureInfoDateFormat"></param> /// <param name="AColumnTitle"></param> /// <param name="ADataColumn"></param> /// <param name="ARowNumber"></param> /// <param name="AMessages"></param> /// <param name="AValidationColumnsDict"></param> /// <param name="ADefaultString"></param> /// <returns>The date value. The AImportLine parameter will have been clipped.</returns> public static DateTime ImportDate(ref String AImportLine, String ADelimiter, CultureInfo ACultureInfoDateFormat, String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sDate = StringHelper.GetNextCSV(ref AImportLine, ADelimiter); if (sDate == String.Empty) { sDate = ADefaultString; } DateTime dtReturn; try { dtReturn = Convert.ToDateTime(sDate, ACultureInfoDateFormat); } catch (Exception) { AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), String.Format(Catalog.GetString("Cannot convert '{0}' to a date."), sDate), TResultSeverity.Resv_Critical)); TLogging.Log("Problem parsing " + sDate + " with format " + ACultureInfoDateFormat.DateTimeFormat.ShortDatePattern); return(DateTime.Today); } return(dtReturn); }
/// <summary> /// Imports a boolean value from the specified text line using the specified delimiter. /// </summary> /// <param name="AImportLine">The line containing the text to be imported. When the method returns the imported value /// will have been removed from the start ready for the next call to an Import method.</param> /// <param name="ADelimiter">The delimiter</param> /// <param name="AColumnTitle"></param> /// <param name="ADataColumn"></param> /// <param name="ARowNumber"></param> /// <param name="AMessages"></param> /// <param name="AValidationColumnsDict"></param> /// <param name="ADefaultString">A string to apply if the import returns empty text. Must be either 'yes' or 'no'</param> /// <returns>Returns true if the text is 'yes', false if the text is 'no'. Otherwise the method returns a critical Verification Result.</returns> public static Boolean ImportBoolean(ref String AImportLine, String ADelimiter, String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref AImportLine, ADelimiter).ToLower(); String sDefault = ADefaultString.ToLower(); bool canBeEmptyString = ((sDefault == "yes") || (sDefault == "no")); if ((sReturn == String.Empty) && canBeEmptyString) { sReturn = sDefault; } if ((sReturn == "yes") || (sReturn == "no")) { return(sReturn.Equals("yes")); } AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), String.Format(Catalog.GetString("Cannot convert '{0}' to a Boolean. The text must be {1}. The text is not case-sensitive."), sReturn, canBeEmptyString ? Catalog.GetString("one of 'yes', 'no' or an empty string") : Catalog.GetString("either 'yes' or 'no'")), TResultSeverity.Resv_Critical)); return(false); }
private DateTime ImportDate(String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sDate = StringHelper.GetNextCSV(ref FImportLine, FDelimiter); if (sDate == String.Empty) { sDate = ADefaultString; } DateTime dtReturn; try { dtReturn = Convert.ToDateTime(sDate, FCultureInfoDate); } catch (Exception) { AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), String.Format(Catalog.GetString("Cannot convert '{0}' to a date. Will assume a value of 'Today'."), sDate), TResultSeverity.Resv_Critical)); TLogging.Log("Problem parsing " + sDate + " with format " + FCultureInfoDate.DateTimeFormat.ShortDatePattern); return DateTime.Today; } return dtReturn; }
private decimal ImportDecimal(String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref FImportLine, FDelimiter); if (sReturn == String.Empty) { sReturn = ADefaultString; } try { decimal dec = Convert.ToDecimal(sReturn, FCultureInfoNumberFormat); return dec; } catch { AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), String.Format(Catalog.GetString("Cannot convert '{0}' to a decimal number. Will assume a value of 1.00."), sReturn), TResultSeverity.Resv_Critical)); return 1.0m; } }
private Int32 ImportInt32(String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref FImportLine, FDelimiter); if (sReturn == String.Empty) { sReturn = ADefaultString; } Int32 retVal; if (Int32.TryParse(sReturn, out retVal)) { return retVal; } AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), String.Format(Catalog.GetString("Cannot convert '{0}' to a number. Will assume a value of -1."), sReturn), TResultSeverity.Resv_Critical)); return -1; }
private Boolean ImportBoolean(String AColumnTitle, DataColumn ADataColumn, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref FImportLine, FDelimiter); if (sReturn == String.Empty) { sReturn = ADefaultString; } return sReturn.ToLower().Equals("yes"); }
private String ImportString(String AColumnTitle, DataColumn ADataColumn, TValidationControlsDict AValidationColumnsDict, bool ATreatEmptyStringAsText = true) { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref FImportLine, FDelimiter); if ((sReturn.Length == 0) && !ATreatEmptyStringAsText) { return null; } return sReturn; }
/// <summary> /// Imports a boolean value from the specified text line using the specified delimiter. /// </summary> /// <param name="AImportLine">The line containing the text to be imported. When the method returns the imported value /// will have been removed from the start ready for the next call to an Import method.</param> /// <param name="ADelimiter">The delimiter</param> /// <param name="AColumnTitle"></param> /// <param name="ADataColumn"></param> /// <param name="ARowNumber"></param> /// <param name="AMessages"></param> /// <param name="AValidationColumnsDict"></param> /// <param name="ADefaultString">A string to apply if the import returns empty text. Must be either 'yes' or 'no'</param> /// <returns>Returns true if the text is 'yes', false if the text is 'no'. Otherwise the method returns a critical Verification Result.</returns> public static Boolean ImportBoolean(ref String AImportLine, String ADelimiter, String AColumnTitle, DataColumn ADataColumn, int ARowNumber, TVerificationResultCollection AMessages, TValidationControlsDict AValidationColumnsDict, String ADefaultString = "") { if ((ADataColumn != null) && (AValidationColumnsDict != null) && !AValidationColumnsDict.ContainsKey(ADataColumn)) { AValidationColumnsDict.Add(ADataColumn, new TValidationControlsData(null, AColumnTitle)); } String sReturn = StringHelper.GetNextCSV(ref AImportLine, ADelimiter).ToLower(); String sDefault = ADefaultString.ToLower(); bool canBeEmptyString = ((sDefault == "yes") || (sDefault == "no")); if ((sReturn == String.Empty) && canBeEmptyString) { sReturn = sDefault; } if ((sReturn == "yes") || (sReturn == "no")) { return sReturn.Equals("yes"); } AMessages.Add(new TVerificationResult(String.Format(MCommonConstants.StrParsingErrorInLineColumn, ARowNumber, AColumnTitle), String.Format(Catalog.GetString("Cannot convert '{0}' to a Boolean. The text must be {1}. The text is not case-sensitive."), sReturn, canBeEmptyString ? Catalog.GetString("one of 'yes', 'no' or an empty string") : Catalog.GetString("either 'yes' or 'no'")), TResultSeverity.Resv_Critical)); return false; }