コード例 #1
0
        /// <summary>
        /// Created a clone of the orignal and copy the orignal releational rows to the clone database
        /// The copy is done only for the rows that are part of the sorted filtered rows table
        /// The row order is keep the same as the sorted filtered rows table
        /// Only rows in the paging range (speciefied by startIndex, blockSize) are copyied
        /// </summary>
        /// <param name="sortedRows">Sorted Rows row set</param>
        /// <param name="cloneName">The Name of the clone dataset</param>
        /// <param name="dsStore">The oringnal dataset</param>
        /// <param name="startIndex">The start index for paging</param>
        /// <param name="blockSize">The size of the paging block</param>
        /// <returns>The sorted, filtered, and paged dataset</returns>
        private static DataSet CopySortedDataToOrigClone(DataRow[] sortedRows, string cloneName, DataSet dsStore, int startIndex, int blockSize)
        {
            DataRowCollection offerRows = dsStore.Tables[0].Rows;

            //DataSet dsFinal = new DataSet(cloneName);
            // dsFinal = dsStore.Clone();

            ServerPaymentItemsDataSets dataSets = new ServerPaymentItemsDataSets();
            DataSet dsFinal = dataSets.CreateStoreDataSet(cloneName, true);

            dsFinal.DataSetName = cloneName;

            int startPosition = 0;
            int endPosition   = sortedRows.Length;

            if (UseBlockSize(startIndex, blockSize, endPosition, 0))
            {
                startPosition = startIndex;
                int maxEndPosition = blockSize + startIndex;
                if (maxEndPosition < endPosition)
                {
                    endPosition = maxEndPosition;
                }
            }
            for (int rowIndex = startPosition; rowIndex < endPosition; rowIndex++)  //foreach (DataRow row in sortedRows)
            {
                DataRow row      = sortedRows[rowIndex];
                DataRow offerRow = offerRows.Find((object)row["itemOffer_itemOffer_Id"]);

                if (offerRow != null)
                {
                    DataRow[] itemRow  = offerRow.GetChildRows("itemOffer_item");
                    DataRow[] priceRow = offerRow.GetChildRows("itemOffer_price");
                    DataRow[] moneyRow = priceRow[0].GetChildRows("price_money");

                    DataRow[] propertiesRow = itemRow[0].GetChildRows("item_properties");
                    //  DataRow[] propertyRow = propertiesRow[0].GetChildRows("properties_property");

                    dsFinal.Tables["itemOffer"].ImportRow(offerRow);
                    dsFinal.Tables["item"].ImportRow(itemRow[0]);
                    dsFinal.Tables["price"].ImportRow(priceRow[0]);
                    dsFinal.Tables["money"].ImportRow(moneyRow[0]);

                    //if (propertiesRow.Length > 0)
                    // {
                    //   dsFinal.Tables["properties"].ImportRow(propertiesRow[0]);
                    //    foreach (DataRow property in propertyRow)
                    //   {
                    //       dsFinal.Tables["property"].ImportRow(property);
                    //   }
                    // }
                }
            }

            return(dsFinal);
        }
コード例 #2
0
        /// <summary>
        /// Update the store data with a new response
        /// </summary>
        /// <param name="response">xml string store response received from the PaymentItems</param>
        /// <param name="key">The key is the store name to copy</param>
        private void CopyResponseToStoreData(XmlDocument xmlDoc, string key)
        {
            string response = xmlDoc.InnerXml;

            try
            {
                //  MemoryStream schema = LoadSchemaFile("StoreImportSchemaFull.xsd");
                ServerPaymentItemsDataSets dataSets = new ServerPaymentItemsDataSets();
                DataSet dsStoreCreated = dataSets.CreateStoreDataSet("StoreDataSet", true);

                XmlNode itemOffersNode = xmlDoc.SelectSingleNode("/Response/store");

                XmlNodeList itemOffersNodeList = xmlDoc.SelectNodes("/Response/store/itemOffers/itemOffer");

                lock (lockObject)
                {
                    if (mDebug)
                    {
                        xmlDoc.Save(String.Format(@"{0}CopyResponseToStoreXml_{1}.xml", mDebugDir, key));
                    }

                    mStoreXml[key].InnerXml = xmlDoc.InnerXml;
                    //DataSet dsStore = LoadXMLInToDataSet(itemOffersNode, schema, "StoreDataSet");
                    DataSet dsStore = dataSets.LoadStoreDataXMLInToDataSet(itemOffersNodeList, dsStoreCreated, true);

                    if (mDebug)
                    {
                        dsStore.WriteXml(String.Format(@"{0}CopyResponseToStoreData_{1}.xml", mDebugDir, key));
                    }

                    mStoreDataSet[key] = dsStore;
                }
            }

            catch (Exception ex)
            {
                mLogger.Error(String.Format("Error in CopyResponseToStoreData for Store {0} Error: {1}\n Response: {2}", key, ex, response));
            }
        }
コード例 #3
0
        /// <summary>
        /// Add the item Assets To StoreInventory Items node
        /// </summary>
        /// <param name="response">xml string store response received from the PaymentItems</param>
        /// <param name="storeName">The name of the store used for debugging.</param>
        /// <returns>The reesponse xml document with the items assets added</returns>
        private XmlDocument AddAssetsToStoreInventoryItems(XmlDocument response, string storeName)
        {
            XmlDocument storeResponse = new XmlDocument();

            storeResponse.InnerXml = response.InnerXml;

            try
            {
                if (response == null)
                {
                    throw new Exception("Error: Cached Response for PaymentItems User Inventory Response is not available");
                }
                else
                {
                    XmlNode itemOffersNode = response.SelectSingleNode("/Response/store");

                    XmlNodeList itemOffersNodeList = response.SelectNodes("/Response/store/itemOffers/itemOffer");

                    ServerPaymentItemsDataSets dataSets = new ServerPaymentItemsDataSets();
                    DataSet dsStoreCreated = dataSets.CreateStoreDataSet("StoreDataSet", false);
                    DataSet dsStore        = dataSets.LoadStoreDataXMLInToDataSet(itemOffersNodeList, dsStoreCreated, false);

                    //MemoryStream schema = LoadSchemaFile("StoreImportSchema.xsd");
                    //DataSet dsStore = LoadXMLInToDataSet(itemOffersNode, schema, "StoreDataSet");

                    if (mDebug)
                    {
                        dsStore.WriteXml(String.Format(@"{0}AddAssetsToStoreInventoryItems_{1}.xml", mDebugDir, storeName));
                    }

                    DataTable dtOffer = dsStore.Tables["itemOffer"];
                    DataTable dtItem  = dsStore.Tables["item"];

                    DataColumn itemAssets = new DataColumn("Assets", System.Type.GetType("System.String"));
                    itemAssets.ColumnMapping = MappingType.Element;
                    dtItem.Columns.Add(itemAssets);

                    foreach (DataRow offerRow in dtOffer.Rows)
                    {
                        DataRow[] itemRowArray = offerRow.GetChildRows("itemOffer_item");
                        DataRow   itemRow      = itemRowArray[0];

                        string hangoutItemId = itemRow["name"].ToString();
                        itemRow["Assets"] = String.Format("<![CDATA[{0}]]>", mPaymentItemsManager.GetAssetDataSetDna(hangoutItemId));
                    }

                    StringWriter sw = new StringWriter();
                    dsStore.WriteXml(sw);

                    XmlDocument responseTemp = new XmlDocument();
                    responseTemp.LoadXml(UnEscapeXml(sw.ToString()));

                    XmlNode storeItemOffersNode = storeResponse.SelectSingleNode("/Response/store/itemOffers");

                    storeItemOffersNode.RemoveAll();

                    XmlNodeList newOfferList = responseTemp.SelectNodes("/StoreDataSet/itemOffer");

                    foreach (XmlNode newOffer in newOfferList)
                    {
                        XmlNode newChildNode = storeResponse.ImportNode(newOffer, true);
                        storeItemOffersNode.AppendChild(newChildNode);
                    }

                    //storeResponse.LoadXml(responseTemp.SelectSingleNode("/StoreDataSet").InnerXml);
                }
            }
            catch (Exception ex)
            {
                mLogger.Error(String.Format("Error in AddAssestsToStoreInventoryItems Error: {0}\n Response: {1}", ex, response));
            }

            return(storeResponse);
        }