public void LoadPrices(IPriceProvider a_PriceProvider, Settings.V2._PriceSettings a_Settings, bool a_Silent) { StopUpdaterThread(); m_ItemsDB.ResetItemPrices(); ItemPrices.PricesDataTable pricesTable = new ItemPrices.PricesDataTable(); string selectSQL = "Select * from " + pricesTable.TableName + " where " + "(" + pricesTable.ProviderIDColumn.ColumnName + " = @ProviderID) AND " + "(" + pricesTable.RegionIDColumn.ColumnName + " = @RegionID) AND " + "(" + pricesTable.SolarIDColumn.ColumnName + " = @SolarID) AND " + "(" + pricesTable.StationIDColumn.ColumnName + " = @StationID) AND" + "(" + pricesTable.PriceTypeColumn.ColumnName + " = @PriceType)"; SQLiteCommand sqlCommand = new SQLiteCommand(selectSQL, m_DbConnection); PriceRecord priceFilter = a_PriceProvider.GetCurrentFilter(); sqlCommand.Parameters.AddWithValue("@ProviderID", (UInt32)priceFilter.Provider); sqlCommand.Parameters.AddWithValue("@RegionID", priceFilter.RegionID); sqlCommand.Parameters.AddWithValue("@SolarID", priceFilter.SolarID); sqlCommand.Parameters.AddWithValue("@StationID", priceFilter.StationID); sqlCommand.Parameters.AddWithValue("@PriceType", (UInt32)priceFilter.PriceType); SQLiteDataAdapter adapter = new SQLiteDataAdapter(sqlCommand); adapter.Fill(pricesTable); foreach (ItemPrices.PricesRow currRow in pricesTable.Rows) { DbRecordToItemRecord(currRow); } TestMarketPrices(a_PriceProvider, a_Settings, a_Silent); }
private List <PriceRecord> ParseReplyXML(XmlDocument a_Xml) { XmlNodeList xmlItems = a_Xml.GetElementsByTagName("row"); List <PriceRecord> result = new List <PriceRecord>(); foreach (XmlNode currNode in xmlItems) { PriceRecord newRecord = GetCurrentFilter(); String attr_buysell = currNode.Attributes["buysell"].Value; if ("b" == attr_buysell) { newRecord.PriceType = PriceTypes.Buy95Pct; } else if ("s" == attr_buysell) { newRecord.PriceType = PriceTypes.Sell95Pct; } else { throw new FormatException("Invalid response xml format"); } newRecord.TypeID = Convert.ToUInt32(currNode.Attributes["typeID"].Value); newRecord.Price = Convert.ToDouble(currNode.Attributes["price"].Value, CultureInfo.InvariantCulture); newRecord.UpdateTime = (UInt64)DateTime.UtcNow.ToFileTimeUtc(); result.Add(newRecord); } return(result); }
protected PriceRecord ComposePrice(JToken a_Value, UInt32 a_TypeID, PriceTypes a_PriceType) { PriceRecord result = GetCurrentFilter(); result.PriceType = a_PriceType; result.Price = a_Value.Value <double>(); result.TypeID = a_TypeID; result.UpdateTime = (UInt64)DateTime.UtcNow.ToFileTimeUtc(); return(result); }
private static void PriceRecordToDbRecord(PriceRecord a_PriceRecord, ItemPrices.PricesRow a_DbRecord) { a_DbRecord.ProviderID = (UInt32)a_PriceRecord.Provider; a_DbRecord.RegionID = a_PriceRecord.RegionID; a_DbRecord.SolarID = a_PriceRecord.SolarID; a_DbRecord.StationID = a_PriceRecord.StationID; a_DbRecord.PriceType = (UInt32)a_PriceRecord.PriceType; a_DbRecord.TypeID = a_PriceRecord.TypeID; a_DbRecord.Price = a_PriceRecord.Price; a_DbRecord.UpdateTime = a_PriceRecord.UpdateTime; }
private PriceRecord ComposePrice(XmlNode a_ItemNode, UInt32 a_TypeID, PriceTypes a_PriceType) { PriceRecord result = GetCurrentFilter(); result.PriceType = a_PriceType; result.Price = ReadInnerDouble(a_ItemNode); result.TypeID = a_TypeID; result.UpdateTime = (UInt64)DateTime.UtcNow.ToFileTimeUtc(); return(result); }
public bool IsMatchesFilter(PriceRecord a_Filter) { return ( (this.Provider == a_Filter.Provider) && (this.RegionID == a_Filter.RegionID) && (this.SolarID == a_Filter.SolarID) && (this.StationID == a_Filter.StationID) && (this.PriceType == a_Filter.PriceType) ); }
public PriceRecord GetCurrentFilter() { PriceRecord filter = new PriceRecord(); filter.Provider = PriceProviders.FuzzworkCoUk; filter.RegionID = m_Settings.IsRegion ? m_Settings.RegionID : 0; filter.SolarID = 0; filter.StationID = m_Settings.IsRegion ? 0 : m_Settings.StationID; filter.PriceType = m_Settings.PriceType; filter.TypeID = 0; filter.Price = 0; filter.UpdateTime = 0; return(filter); }
public PriceRecord GetCurrentFilter() { PriceRecord filter = new PriceRecord(); filter.Provider = PriceProviders.EveMarketdataCom; filter.RegionID = m_Settings.RegionID; filter.SolarID = m_Settings.SolarID; filter.StationID = m_Settings.StationID; filter.PriceType = m_Settings.PriceType; filter.TypeID = 0; filter.Price = 0; filter.UpdateTime = 0; return(filter); }
public void DropPrices(IPriceProvider a_PriceProvider) { StopUpdaterThread(); ItemPrices.PricesDataTable pricesTable = new ItemPrices.PricesDataTable(); string selectSQL = "Delete from " + pricesTable.TableName + " where " + "(" + pricesTable.ProviderIDColumn.ColumnName + " = @ProviderID) AND " + "(" + pricesTable.RegionIDColumn.ColumnName + " = @RegionID) AND " + "(" + pricesTable.SolarIDColumn.ColumnName + " = @SolarID) AND " + "(" + pricesTable.StationIDColumn.ColumnName + " = @StationID) AND" + "(" + pricesTable.PriceTypeColumn.ColumnName + " = @PriceType)"; SQLiteCommand sqlCommand = new SQLiteCommand(selectSQL, m_DbConnection); PriceRecord priceFilter = a_PriceProvider.GetCurrentFilter(); sqlCommand.Parameters.AddWithValue("@ProviderID", (UInt32)priceFilter.Provider); sqlCommand.Parameters.AddWithValue("@RegionID", priceFilter.RegionID); sqlCommand.Parameters.AddWithValue("@SolarID", priceFilter.SolarID); sqlCommand.Parameters.AddWithValue("@StationID", priceFilter.StationID); sqlCommand.Parameters.AddWithValue("@PriceType", (UInt32)priceFilter.PriceType); sqlCommand.ExecuteNonQuery(); }
private void ApplyPrices(List <PriceRecord> a_Prices, PriceRecord a_Filter) { ItemPrices.PricesDataTable newDbData = new ItemPrices.PricesDataTable(); foreach (PriceRecord currRecord in a_Prices) { ItemPrices.PricesRow dbRecord = newDbData.NewPricesRow(); PriceRecordToDbRecord(currRecord, dbRecord); newDbData.Rows.Add(dbRecord); // Price provider can return more data then requested (for example, all price types at once, or all regions at once). // If data matches currently selected filter, apply it to loaded items. if (currRecord.IsMatchesFilter(a_Filter)) { DbRecordToItemRecord(dbRecord); } } // Store everything in database m_Database.ReplaceRows(newDbData, newDbData.Rows); }
private void BtnLoadMineralPrices_Click(object sender, EventArgs e) { List <UInt32> loadPricesFor = new List <UInt32>(); loadPricesFor.Add((UInt32)EveTypeIDs.Tritanium); loadPricesFor.Add((UInt32)EveTypeIDs.Pyerite); loadPricesFor.Add((UInt32)EveTypeIDs.Mexallon); loadPricesFor.Add((UInt32)EveTypeIDs.Isogen); loadPricesFor.Add((UInt32)EveTypeIDs.Noxcium); loadPricesFor.Add((UInt32)EveTypeIDs.Zydrine); loadPricesFor.Add((UInt32)EveTypeIDs.Megacyte); loadPricesFor.Add((UInt32)EveTypeIDs.Morphite); IPriceProvider provider = PriceProviderAuto.GetPriceProvider(m_Settings.PriceLoad.Minerals); // @@@@ Check for exceptions? List <PriceRecord> prices = provider.GetPrices(loadPricesFor); PriceRecord priceFilter = provider.GetCurrentFilter(); foreach (PriceRecord currRecord in prices) { if (!currRecord.IsMatchesFilter(priceFilter)) { continue; } switch ((EveTypeIDs)currRecord.TypeID) { case EveTypeIDs.Tritanium: TxtTritanium.Value = (decimal)currRecord.Price; break; case EveTypeIDs.Pyerite: TxtPyerite.Value = (decimal)currRecord.Price; break; case EveTypeIDs.Mexallon: TxtMexallon.Value = (decimal)currRecord.Price; break; case EveTypeIDs.Isogen: TxtIsogen.Value = (decimal)currRecord.Price; break; case EveTypeIDs.Noxcium: TxtNoxcium.Value = (decimal)currRecord.Price; break; case EveTypeIDs.Zydrine: TxtZydrine.Value = (decimal)currRecord.Price; break; case EveTypeIDs.Megacyte: TxtMegacyte.Value = (decimal)currRecord.Price; break; case EveTypeIDs.Morphite: TxtMorphite.Value = (decimal)currRecord.Price; break; } } }