private XMLMapper PrepareXMLMapper(XmlDocument xmlMappingDoc) { string xPathTable = @"//table"; string xPathStartRow = @"//startRow"; string xPathReadPattern = @"//readPattern"; string xPathFieldMapper; XMLMapper xmlMapper = null; List <ReadPattern> readPatternList = new List <ReadPattern>(); ReadPattern readPattern; List <XMLFieldMapper> xmlFieldMapperList = new List <XMLFieldMapper>(); XMLFieldMapper xmlFieldMapper; XmlNodeList nodeList; XmlNodeList fieldNodeList; string tableName = string.Empty; string startingRow = string.Empty; try { #region Getting Table Name nodeList = xmlMappingDoc.SelectNodes(xPathTable); if (nodeList != null && nodeList.Count > 0) { tableName = !String.IsNullOrEmpty(nodeList.Item(0).Attributes["value"].Value) ? nodeList.Item(0).Attributes["value"].Value : String.Empty; } #endregion nodeList = xmlMappingDoc.SelectNodes(xPathStartRow); if (nodeList != null && nodeList.Count > 0) { startingRow = !String.IsNullOrEmpty(nodeList.Item(0).Attributes["value"].Value) ? nodeList.Item(0).Attributes["value"].Value : String.Empty; } nodeList = xmlMappingDoc.SelectNodes(xPathReadPattern); if (nodeList != null && nodeList.Count > 0) { xmlFieldMapperList = new List <XMLFieldMapper>(); foreach (XmlNode node in nodeList) { xPathFieldMapper = xPathReadPattern + @"[@value='READPATTERN']//mapper"; #region GetReadPattern xmlMapper = new XMLMapper(); xmlMapper.TableName = tableName; xmlMapper.StartingRow = Convert.ToInt32(startingRow); readPattern = new ReadPattern(); readPattern.ReadPatternValue = node.Attributes["value"].Value; readPattern.StartRow = node.Attributes["startRow"].Value; readPattern.StartCol = node.Attributes["startcol"].Value; readPattern.EndCol = node.Attributes["endcol"].Value; #endregion #region Getting FieldMapper xPathFieldMapper = xPathFieldMapper.Replace("READPATTERN", readPattern.ReadPatternValue); fieldNodeList = xmlMappingDoc.SelectNodes(xPathFieldMapper); if (nodeList != null && fieldNodeList.Count > 0) { xmlFieldMapperList = new List <XMLFieldMapper>(); foreach (XmlNode fieldNode in fieldNodeList) { xmlFieldMapper = new XMLFieldMapper(); if (fieldNode.Attributes.GetNamedItem("dbField") != null) { xmlFieldMapper.DbField = !String.IsNullOrEmpty(fieldNode.Attributes["dbField"].Value) ? fieldNode.Attributes["dbField"].Value : String.Empty; } if (fieldNode.Attributes.GetNamedItem("col") != null) { xmlFieldMapper.ExcelColumn = !String.IsNullOrEmpty(fieldNode.Attributes["col"].Value) ? fieldNode.Attributes["col"].Value : String.Empty; } if (fieldNode.Attributes.GetNamedItem("row") != null) { xmlFieldMapper.ExcelRow = !String.IsNullOrEmpty(fieldNode.Attributes["row"].Value) ? fieldNode.Attributes["row"].Value : String.Empty; } if (fieldNode.Attributes.GetNamedItem("idField") != null) { xmlFieldMapper.IsIdField = !String.IsNullOrEmpty(fieldNode.Attributes["idField"].Value) ? Boolean.Parse(fieldNode.Attributes["idField"].Value) : false; } if (fieldNode.Attributes.GetNamedItem("Alpha") != null) { xmlFieldMapper.IsAlpha = !String.IsNullOrEmpty(fieldNode.Attributes["Alpha"].Value) ? Boolean.Parse(fieldNode.Attributes["Alpha"].Value) : false; } if (fieldNode.Attributes.GetNamedItem("MasterLookUpTable") != null) { xmlFieldMapper.MasterLookUpTable = !String.IsNullOrEmpty(fieldNode.Attributes["MasterLookUpTable"].Value) ? fieldNode.Attributes["MasterLookUpTable"].Value : String.Empty; } if (fieldNode.Attributes.GetNamedItem("MasterLookUpField") != null) { xmlFieldMapper.MasterLookUpField = !String.IsNullOrEmpty(fieldNode.Attributes["MasterLookUpField"].Value) ? fieldNode.Attributes["MasterLookUpField"].Value : String.Empty; } if (fieldNode.Attributes.GetNamedItem("MasterIdField") != null) { xmlFieldMapper.MasterIdField = !String.IsNullOrEmpty(fieldNode.Attributes["MasterIdField"].Value) ? fieldNode.Attributes["MasterIdField"].Value : String.Empty; } if (fieldNode.Attributes.GetNamedItem("DateField") != null) { xmlFieldMapper.IsDateField = !String.IsNullOrEmpty(fieldNode.Attributes["DateField"].Value) ? Boolean.Parse(fieldNode.Attributes["DateField"].Value) : false; } if (fieldNode.Attributes.GetNamedItem("TimeField") != null) { xmlFieldMapper.TimeField = !String.IsNullOrEmpty(fieldNode.Attributes["TimeField"].Value) ? Boolean.Parse(fieldNode.Attributes["TimeField"].Value) : false; } if (fieldNode.Attributes.GetNamedItem("JoinToPrev") != null) { xmlFieldMapper.JoinToPrev = !String.IsNullOrEmpty(fieldNode.Attributes["JoinToPrev"].Value) ? Boolean.Parse(fieldNode.Attributes["JoinToPrev"].Value) : false; } if (fieldNode.Attributes.GetNamedItem("BoolField") != null) { xmlFieldMapper.IsBool = !String.IsNullOrEmpty(fieldNode.Attributes["BoolField"].Value) ? Boolean.Parse(fieldNode.Attributes["BoolField"].Value) : false; } if (fieldNode.Attributes.GetNamedItem("FetchTouristNo") != null) { xmlFieldMapper.FetchTouristNo = !String.IsNullOrEmpty(fieldNode.Attributes["FetchTouristNo"].Value) ? Boolean.Parse(fieldNode.Attributes["FetchTouristNo"].Value) : false; } if (fieldNode.Attributes.GetNamedItem("Encrypt") != null) { xmlFieldMapper.Encrypt = !String.IsNullOrEmpty(fieldNode.Attributes["Encrypt"].Value) ? Boolean.Parse(fieldNode.Attributes["Encrypt"].Value) : false; } xmlFieldMapperList.Add(xmlFieldMapper); } } #endregion readPattern.XmlFieldMapperList = xmlFieldMapperList; readPatternList.Add(readPattern); xmlMapper.ReadPatternList = readPatternList; } } } catch (Exception exp) { GF.LogError("PrepareXMLMapper", exp.Message); } return(xmlMapper); }
private void prepareQuery(int BookingId, List <Row> rowList, XMLMapper xmlMapper) { StringBuilder insertQuery1 = new StringBuilder(); StringBuilder insertQuery2 = new StringBuilder(); StringBuilder updateQuery = new StringBuilder(); StringBuilder existQuery = new StringBuilder(); StringBuilder fetchTouristNoQuery = new StringBuilder(); bool gotSomeCells = false; string tablename = xmlMapper.TableName; try { foreach (Row row in rowList) { #region Intializing Queries insertQuery1.Remove(0, insertQuery1.Length); insertQuery2.Remove(0, insertQuery2.Length); updateQuery.Remove(0, updateQuery.Length); existQuery.Remove(0, existQuery.Length); fetchTouristNoQuery.Remove(0, fetchTouristNoQuery.Length); insertQuery1 = new StringBuilder(); insertQuery2 = new StringBuilder(); updateQuery = new StringBuilder(); existQuery = new StringBuilder(); fetchTouristNoQuery = new StringBuilder(); insertQuery1.Append("insert into " + tablename + "("); insertQuery2.Append(" values ("); updateQuery.Append("update " + tablename + " set "); existQuery.Append("select * from " + tablename + " where 1=1"); #endregion foreach (ReadPattern readPattern in xmlMapper.ReadPatternList) { #region ColumnWise if (readPattern.ReadPatternValue == "columnwise") { foreach (XMLFieldMapper xmlFieldMapper in readPattern.XmlFieldMapperList) { Cells cell = row.CellList.Find(delegate(Cells c) { return(c.ColNum == xmlFieldMapper.ExcelColumn); }); if (cell != null) { #region Formatting to Date if it date field if (xmlFieldMapper.IsDateField) { DateTime dt; DateTime.TryParse(cell.CellValue, out dt); if (dt != DateTime.MinValue) { cell.CellValue = dt.Year.ToString("0000") + "-" + dt.Month.ToString("00") + "-" + dt.Day.ToString("00"); } else { cell.CellValue = "null"; } } #endregion #region Get Master Id Field if (xmlFieldMapper.MasterLookUpTable.Trim() != string.Empty) { cell.CellValue = getValueFromMaster(xmlFieldMapper.MasterLookUpTable, xmlFieldMapper.MasterIdField, xmlFieldMapper.MasterLookUpField, cell.CellValue); } #endregion #region Preparing the Exist Query if (xmlFieldMapper.IsIdField) { if (cell.CellValue == "null") { existQuery.Append(" and " + xmlFieldMapper.DbField + " = " + cell.CellValue); } else if (xmlFieldMapper.IsAlpha) { if (xmlFieldMapper.IsDateField) { string newVal = "cast('" + cell.CellValue + "' as DateTime)"; existQuery.Append(" and " + xmlFieldMapper.DbField + " = " + newVal); } else { existQuery.Append(" and " + xmlFieldMapper.DbField + " = '" + cell.CellValue + "'"); } } else { existQuery.Append(" and " + xmlFieldMapper.DbField + " = " + cell.CellValue); } } #endregion #region Preparing the Fetch Tourist No. Query if (xmlFieldMapper.FetchTouristNo) { if (cell.CellValue == "null") { fetchTouristNoQuery.Append(" and " + xmlFieldMapper.DbField + " = " + cell.CellValue); } else if (xmlFieldMapper.IsAlpha) { fetchTouristNoQuery.Append(" and " + xmlFieldMapper.DbField + " = '" + cell.CellValue + "'"); } else { fetchTouristNoQuery.Append(" and " + xmlFieldMapper.DbField + " = " + cell.CellValue); } } #endregion insertQuery1.Append(xmlFieldMapper.DbField + ", "); #region Adding '', if field is Alpha if (xmlFieldMapper.IsAlpha) { if (cell.CellValue == "null") { insertQuery2.Append(cell.CellValue + ", "); updateQuery.Append(xmlFieldMapper.DbField + " = " + cell.CellValue + ", "); } else { string val = xmlFieldMapper.Encrypt ? DataSecurityManager.Encrypt(cell.CellValue) : cell.CellValue; insertQuery2.Append("'" + val + "', "); updateQuery.Append(xmlFieldMapper.DbField + " = '" + val + "', "); } } else { insertQuery2.Append(cell.CellValue + ", "); updateQuery.Append(xmlFieldMapper.DbField + " = " + cell.CellValue + ", "); } #endregion gotSomeCells = true; } } } #endregion #region RowWise if (readPattern.ReadPatternValue == "rowwise") { string prevValue = string.Empty; foreach (Row columnarRow in rowList) { XMLFieldMapper xmlFieldMapper = readPattern.XmlFieldMapperList.Find(delegate(XMLFieldMapper fm) { return(fm.ExcelRow == columnarRow.RowNum); }); if (xmlFieldMapper != null) { Cells cell = columnarRow.CellList.Find(delegate(Cells c) { return(c.ColNum == xmlFieldMapper.ExcelColumn); }); if (cell != null) { #region Formatting to Date if it is date field if (xmlFieldMapper.IsDateField) { DateTime dt; DateTime.TryParse(cell.CellValue, out dt); if (dt != DateTime.MinValue) { cell.CellValue = dt.Year.ToString("0000") + "-" + dt.Month.ToString("00") + "-" + dt.Day.ToString("00"); } else { cell.CellValue = "null"; } } #endregion #region Formatting to Date if it is Time field if (xmlFieldMapper.TimeField) { cell.CellValue = cell.CellValue.Replace("HRS", "").Trim(); DateTime dt; DateTime.TryParse(cell.CellValue, out dt); cell.CellValue = dt.ToShortTimeString(); //if (cell.CellValue.Length == 4 && cell.CellValue != "null") //{ // string hh = cell.CellValue.Substring(0, 2); // string mm = cell.CellValue.Substring(2); // cell.CellValue = hh + ":" + mm; //} //else // cell.CellValue = "null"; } #endregion #region Formatting to Bool if it is Boolean field if (xmlFieldMapper.IsBool) { if (cell.CellValue.StartsWith("Y")) { cell.CellValue = "1"; } else if (cell.CellValue.StartsWith("N")) { cell.CellValue = "0"; } } #endregion #region Get Master Id Field if (xmlFieldMapper.MasterLookUpTable.Trim() != string.Empty) { cell.CellValue = getValueFromMaster(xmlFieldMapper.MasterLookUpTable, xmlFieldMapper.MasterIdField, xmlFieldMapper.MasterLookUpField, cell.CellValue); } #endregion #region Preparing the Exist Query if (xmlFieldMapper.IsIdField) { if (cell.CellValue == "null") { existQuery.Append(" and " + xmlFieldMapper.DbField + " = " + cell.CellValue); } else if (xmlFieldMapper.IsAlpha) { existQuery.Append(" and " + xmlFieldMapper.DbField + " = '" + cell.CellValue + "'"); } else { existQuery.Append(" and " + xmlFieldMapper.DbField + " = " + cell.CellValue); } } #endregion if (!xmlFieldMapper.JoinToPrev) { insertQuery1.Append(xmlFieldMapper.DbField + ", "); #region Adding '', if field is Alpha if (xmlFieldMapper.IsAlpha) { if (cell.CellValue == "null") { insertQuery2.Append(cell.CellValue + ", "); updateQuery.Append(xmlFieldMapper.DbField + " = " + cell.CellValue + ", "); } else { insertQuery2.Append("'" + cell.CellValue + "', "); updateQuery.Append(xmlFieldMapper.DbField + " = '" + cell.CellValue + "', "); } } else { insertQuery2.Append(cell.CellValue + ", "); updateQuery.Append(xmlFieldMapper.DbField + " = " + cell.CellValue + ", "); } #endregion } else { if (prevValue != "null" && cell.CellValue != "null") { int lastindex = insertQuery2.ToString().LastIndexOf("'"); insertQuery2.Insert(lastindex, " " + cell.CellValue); lastindex = updateQuery.ToString().LastIndexOf("'"); updateQuery.Insert(lastindex, " " + cell.CellValue); } } prevValue = cell.CellValue; gotSomeCells = true; } } } } #endregion } #region DB OPerations if (gotSomeCells) { #region Get Tourist No. fetchTouristNoQuery.Append(" and bookingId = " + BookingId.ToString()); int TouristNo = getTouristNo(fetchTouristNoQuery.ToString()); existQuery.Append(" and bookingId = " + BookingId.ToString()); insertQuery1.Append("TouristNo, "); insertQuery2.Append(TouristNo.ToString() + ","); updateQuery.Append("TouristNo = " + TouristNo.ToString()); #endregion #region Adding Booking Id insertQuery1.Append("BookingId) "); insertQuery2.Append(BookingId.ToString() + ")"); if (updateQuery.ToString().EndsWith(",")) { updateQuery = updateQuery.Remove(updateQuery.ToString().Trim().LastIndexOf(','), 1); } //updateQuery = updateQuery.Remove(updateQuery.Length - 1, 1); updateQuery.Append(" where BookingId = " + BookingId.ToString()); updateQuery.Append(" and TouristNo = " + TouristNo.ToString()); #endregion insertQuery1.Append(insertQuery2); if (IsExists(existQuery.ToString())) { UpdateRecord(updateQuery.ToString()); } else { InsertRecord(insertQuery1.ToString()); } } #endregion } RemoveExtraInsertedRecords(BookingId); } catch (Exception exp) { throw exp; } }