/// <summary> /// /// </summary> /// <param name="_dtData"></param> /// <param name="_llstCondition"></param> /// <param name="bDataParsing"></param> /// <returns></returns> public DataSet DecompressDATA_TRX_DATA(DataTable _dtData, LinkedList _llstCondition, LinkedList _llstContextType, bool bDataParsing, bool includingToggleData) { DataSet dsReturn = null; DataTable dt = new DataTable(); CommonUtility _comUtil = new CommonUtility(); try { if (_dtData != null && _dtData.Rows.Count > 0) { dsReturn = new DataSet(); List <string> lstColumn = new List <string>(); List <string> lstData = new List <string>(); foreach (DataColumn col in _dtData.Columns) { if (col.ColumnName.ToString() != COLUMN.FILE_DATA) { lstColumn.Add(col.ColumnName.ToString()); } } BISTel.PeakPerformance.Client.CommonUtil.GZip gZip = new BISTel.PeakPerformance.Client.CommonUtil.GZip(); int iIndex = 0; foreach (DataRow drData in _dtData.Rows) { lstData.Clear(); for (int i = 0; i < lstColumn.Count; i++) { lstData.Add(drData[lstColumn[i]].ToString()); } //using (StreamReader sr = gZip.DecompressForStream(drData[COLUMN.FILE_DATA])) using (StreamReader sr = CommonUtility.ConvertBLOBToStreamReader(drData[COLUMN.FILE_DATA])) { this.ParseHeader(sr); this.ParseContextLineInfo(iIndex++, sr, _llstContextType, lstColumn, lstData); //MakeDataTable(this._llstLineInfo, this._dtDefault, drData, lstColumn, _llstContextType); //this.ParseContextParamName(sr, drData,bDataParsing); //foreach (DataColumn dc in this._dtDefault.Columns) //{ // if (dc.ColumnName == COLUMN.FILE_DATA ) continue; // if (!dt.Columns.Contains(dc.ColumnName.ToString())) // dt.Columns.Add(dc.ColumnName.ToString().ToUpper(), dc.DataType); //} //string sWhere = _comUtil.NVL(_llstCondition[Definition.CONDITION_KEY_CONTEXT_KEY_LIST]); //if (!string.IsNullOrEmpty(sWhere)) //{ // DataRow[] drSelectParams = this._dtDefault.Select(sWhere); // foreach (DataRow dr in drSelectParams) // dt.ImportRow(dr); //} //else // dt.Merge(this._dtDefault); } } DataTable dtTable = new DataTable(); int iCol = 0; int iLoopCount = 0; List <string> columnNames = new List <string>(); foreach (KeyValuePair <string, List <string[]> > keyval in _ColumnDatas) { if (iCol == 0) { iLoopCount = keyval.Value.Count; iCol++; } dtTable.Columns.Add(keyval.Key); columnNames.Add(keyval.Key); } dtTable.Columns.Add(Definition.CHART_COLUMN.ORDERINFILEDATA, typeof(int)); columnNames.Add(Definition.CHART_COLUMN.ORDERINFILEDATA); dtTable.Columns.Add(Definition.CHART_COLUMN.TABLENAME); columnNames.Add(Definition.CHART_COLUMN.TABLENAME); dtTable.Columns.Add(Definition.COL_TOGGLE_YN); columnNames.Add(Definition.COL_TOGGLE_YN); for (int i = 0; i < iLoopCount; i++) { for (int iRow = 0; iRow < _DataCount[i]; iRow++) { string[] sColumnData = new string[columnNames.Count]; for (int iColCount = 0; iColCount < _ColumnDatas.Count; iColCount++) { if (_ColumnDatas[columnNames[iColCount]].Count > i) { string[] sData = _ColumnDatas[columnNames[iColCount]][i]; if (sData != null && sData.Length > iRow && sData[iRow] != "NaN") { sColumnData[iColCount] = sData[iRow]; } } } sColumnData[columnNames.Count - 3] = iRow.ToString(); sColumnData[columnNames.Count - 2] = Definition.TableName.USERNAME_DATA_SHORT; dtTable.Rows.Add(sColumnData); } } FillToggleColumn(dtTable); if (!includingToggleData) { DeleteToggleOffData(dtTable); } dsReturn.Tables.Add(dtTable); //dsRetrun.Tables.Add(dt); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); LogHandler.ExceptionLogWrite(Definition.APPLICATION_NAME, ex); } finally { GC.Collect(); GC.WaitForPendingFinalizers(); } return(dsReturn); }