/// <summary> /// Method to specify column definitions for the current instance. /// </summary> /// <param name="columnDefinitionsExt">Object containing the array of column definitions.</param> /// <param name="columnIndex">0-based index of the column being defined.</param> /// <param name="sourceColumnName">Name to assign to the column. This will become the column header for the output.</param> /// <param name="columnLength">Length in bytes of the column. </param> /// <param name="columnDataAlignment">See <see cref="PFDataAlign"/> enumeration.</param> /// <remarks>If sourceColumnName is longer than columnLength, the sourceColumnName value will be truncated to columnLength.</remarks> public static void SetColumnDefinitionExt(PFColumnDefinitionsExt columnDefinitionsExt, int columnIndex, string sourceColumnName, int columnLength, PFDataAlign columnDataAlignment) { int minColLen = 1; int maxColumnLengthOverride = 1024; int defaultStringColumnLength = 255; string colName = sourceColumnName; string newColName = string.Empty; int colLen = columnLength > maxColumnLengthOverride ? maxColumnLengthOverride : columnLength; if (colLen < minColLen) { colLen = defaultStringColumnLength; } if (colName.Length > colLen) { colName = colName.Substring(0, colLen); } columnDefinitionsExt.ColumnDefinition[columnIndex].SourceColumnName = sourceColumnName; columnDefinitionsExt.ColumnDefinition[columnIndex].OutputColumnName = colName; columnDefinitionsExt.ColumnDefinition[columnIndex].OutputColumnLength = colLen; columnDefinitionsExt.ColumnDefinition[columnIndex].OutputColumnDataAlignment = columnDataAlignment; }
/// <summary> /// Makes a deep copy of the current instance to a new instance. /// </summary> /// <returns>New instance of PFColumnDefinitionsExt object.</returns> public PFColumnDefinitionsExt Copy() { string xmlString = this.ToXmlString(); PFColumnDefinitionsExt newInstance = PFColumnDefinitionsExt.LoadFromXmlString(xmlString); return(newInstance); }
/// <summary> /// Constructor for class. Will create objects to hold data values for each of the columns defined in the colDefs parameter. /// </summary> /// <param name="colDefs">Objects containing column definitions.</param> public PFColumnDataExt(PFColumnDefinitionsExt colDefs) { _columnDefinitionsExt = colDefs; _columnDataValue = new PFColData[colDefs.ColumnDefinition.Length]; for (int i = 0; i < colDefs.ColumnDefinition.Length; i++) { ColumnDataValue[i] = new PFColData(); } }
//methods /// <summary> /// Routine to return a list of columns /// </summary> /// <param name="dt">DataTable object containing columns.</param> /// <returns>Object containing column definitions. Definitions include both source and output column names.</returns> public static PFColumnDefinitionsExt GetColumnDefinitionsExt(DataTable dt) { if (dt.Columns == null) { return(new PFColumnDefinitionsExt()); } if (dt.Columns.Count < 1) { return(new PFColumnDefinitionsExt()); } PFColumnDefinitionsExt columnDefinitionsExt = new PFColumnDefinitionsExt(dt.Columns.Count); int colInx = 0; int maxColInx = dt.Columns.Count - 1; int colLen = -1; DataColumnCollection cols = dt.Columns; for (colInx = 0; colInx <= maxColInx; colInx++) { if (PFFixedLengthDataLine.DataTypeIsNumeric(cols[colInx].DataType)) { colLen = PFFixedLengthDataLine.GetNumericTypeMaxExtractLength(cols[colInx].DataType); } else if (PFFixedLengthDataLine.DataTypeIsDateTime(cols[colInx].DataType)) { colLen = PFFixedLengthDataLine.GetDateTimeTypeMaxExtractLength(cols[colInx].DataType); } else { colLen = cols[colInx].MaxLength; } SetColumnDefinitionExt(columnDefinitionsExt, colInx, cols[colInx].ColumnName, colLen, PFDataAlign.LeftJustify); } return(columnDefinitionsExt); }