public List<DataItemRaw> DoRead() { List<DataItemRaw> result = new List<DataItemRaw>(); try { Console.WriteLine("Start reading the XML file: " + _fullPathFileName + " ....."); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(_fullPathFileName); //serealization Schema.FeedItems oResult = new Schema.FeedItems(); Schema.FeedItems feedItems = (Schema.FeedItems)DeserializaXml(xmlDoc.InnerXml, oResult.GetType()); if (feedItems != null) { Console.WriteLine("Number of items read from XML: " + feedItems.Items.Length.ToString()); } //loop through // create DateItemRaw // add to result foreach (Schema.FeedItemsFeedItem item in feedItems.Items) { DataItemRaw rawItem = new DataItemRaw(); rawItem.DateCreated = DateTime.ParseExact(item.DateCreated, "yyyy-MM-dd HH:mm:ss", null); rawItem.DateModified = DateTime.ParseExact(item.DateModified, "yyyy-MM-dd HH:mm:ss", null); rawItem.SKU = item.SKU; rawItem.Name = item.Name; rawItem.Category = item.Category; rawItem.Description = item.Description; rawItem.Url = item.Url; rawItem.OriginalUrl = item.OriginalUrl; rawItem.ImageUrl = item.Image; rawItem.Price = Convert.ToDecimal(item.Price.Replace("$", "")); rawItem.Brand = item.Brand; rawItem.Colour = item.Colour; rawItem.Currency = item.Currency; rawItem.DeliveryCost = item.DeliveryCost; rawItem.DeliveryTime = item.DeliveryTime; rawItem.Feature = item.Features; rawItem.Gender = item.Gender; rawItem.Size = item.Size; rawItem.StockLevel = item.StockLevel; result.Add(rawItem); } Console.WriteLine("Finishing read the XML file: " + _fullPathFileName + " ....."); return result; } catch (Exception e) { Console.WriteLine("Read xml file failed\n" + e.ToString()); return result; //still return result although got exception } }
//read csv one line and extract to DataItemRaw object, if fail will throw exception. this mean if one line fail - the whole thing fail (for now) private DataItemRaw ExtractLineData(string oneLine) { DataItemRaw lineItem = new DataItemRaw(); try { //remove = for some field /* oneLine = oneLine.Replace(",=\"", ",\""); oneLine = oneLine.Substring(1, oneLine.Length - 2); string[] items = oneLine.Split(new string[] {"\",\""},StringSplitOptions.None ); */ string[] items = oneLine.Split(new string[] { "," }, StringSplitOptions.None); items = TrimValue(items); lineItem.DateCreated = DateTime.ParseExact(items[0], "yyyy-MM-dd HH:mm:ss", null); lineItem.DateModified = DateTime.ParseExact(items[1], "yyyy-MM-dd HH:mm:ss", null); lineItem.SKU = items[2]; lineItem.Name = items[3]; lineItem.Category = items[4]; lineItem.Description = items[5]; lineItem.Url = items[6]; lineItem.OriginalUrl = items[7]; //image lineItem.ImageUrl = items[8]; //price lineItem.Price = Convert.ToDecimal(items[15]); lineItem.Brand = items[16]; lineItem.Colour = items[17]; lineItem.Currency = items[18]; lineItem.DeliveryCost = items[19]; lineItem.DeliveryTime = items[20]; lineItem.Feature = items[21]; lineItem.Gender = items[22]; lineItem.Size = items[23]; lineItem.StockLevel = items[24]; } catch (Exception e) { throw e; } return lineItem; }
/* * the is specific procedure for CommissionFactory(now used only for The Iconic) * - it will either add or update the feed item to local database */ private void CommissionFactoryAddFeedItem(Batch batch, DataItemRaw item) { int batchId = batch.BatchId; int MID = batch.Merchant.MerchantID; SqlCommand cmd = new SqlCommand("ProcessCFRawData", sqlConn); cmd.CommandType = CommandType.StoredProcedure; try { //passing parameter cmd.Parameters.Add(new SqlParameter("@BatchId", batchId)); cmd.Parameters.Add(new SqlParameter("@MID", MID)); cmd.Parameters.Add(new SqlParameter("@SKU", MID.ToString() + "-" + item.SKU.Trim())); cmd.Parameters.Add(new SqlParameter("@Name", item.Name)); cmd.Parameters.Add(new SqlParameter("@Category", item.Category)); cmd.Parameters.Add(new SqlParameter("@Description", item.Description)); cmd.Parameters.Add(new SqlParameter("@Url", item.Url)); cmd.Parameters.Add(new SqlParameter("@OriginalUrl", item.OriginalUrl)); cmd.Parameters.Add(new SqlParameter("@ImageUrl", item.ImageUrl)); cmd.Parameters.Add(new SqlParameter("@Price", item.Price)); cmd.Parameters.Add(new SqlParameter("@DeliveryCost", RemNull(item.DeliveryCost))); cmd.Parameters.Add(new SqlParameter("@CurrencyCode", RemNull(item.Currency))); cmd.Parameters.Add(new SqlParameter("@Brand", item.Brand)); cmd.Parameters.Add(new SqlParameter("@Colour", RemNull(item.Colour))); cmd.Parameters.Add(new SqlParameter("@Gender", RemNull(item.Gender))); cmd.Parameters.Add(new SqlParameter("@Size", RemNull(item.Size))); //execute cmd.ExecuteNonQuery(); } catch (Exception ex) { Console.WriteLine("DatabaseManager.CommissionFactoryAddFeedItem is failed at Item SKU: " + item.SKU + " - " + ex.ToString()); } }