|
' ******************************************************************************
' **
' ** Yahoo Finance Managed
' ** Written by Marius Häusler 2010
' ** It would be pleasant, if you contact me when you are using this code.
' ** Contact: YahooFinanceManaged@gmail.com
' ** Project Home: http://code.google.com/p/yahoo-finance-managed/
' **
' ******************************************************************************
' **
' ** Copyright 2010 Marius Häusler
' **
' ** Licensed under the Apache License, Version 2.0 (the "License");
' ** you may not use this file except in compliance with the License.
' ** You may obtain a copy of the License at
' **
' ** http://www.apache.org/licenses/LICENSE-2.0
' **
' ** Unless required by applicable law or agreed to in writing, software
' ** distributed under the License is distributed on an "AS IS" BASIS,
' ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' ** See the License for the specific language governing permissions and
' ** limitations under the License.
' **
' ******************************************************************************
Namespace Finance.Support
''' <summary>
''' Implements IID. Serializable. Stores informations of a financial product.
''' </summary>
''' <remarks></remarks>
<Serializable()> _
Public Class YID
Implements IID
Implements SetableID
Private mHelper As New MyHelper
Private mID, mName, mIndustryName As String
Private mStockExchange As New StockExchange
Private mISIN As New ISIN
Private mType As FinancialSecurityType
''' <summary>
''' The full ID with suffix
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Overridable ReadOnly Property ID() As String Implements IID.ID
Get
Return mID
End Get
End Property
Public Overridable Sub SetID(ByVal id As String) Implements SetableID.SetID
mID = id.ToUpper
If mStockExchange IsNot Nothing Then
mStockExchange.Suffix = Me.Suffix
Else
mStockExchange = WorldMarket.StockExchangeBySuffix(Me.Suffix)
End If
End Sub
''' <summary>
''' The base ID without suffix
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public ReadOnly Property BaseID() As String
Get
Dim index As Integer = mID.LastIndexOf("."c)
If index = -1 Then : Return mID
Else : Return mID.Substring(0, index)
End If
End Get
End Property
''' <summary>
''' The suffix of the ID
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public ReadOnly Property Suffix() As String
Get
Dim index As Integer = mID.LastIndexOf("."c)
If index = -1 Then : Return String.Empty
Else : Return mID.Substring(index)
End If
End Get
End Property
''' <summary>
''' The name of the security
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property Name() As String
Get
Return mName
End Get
Set(ByVal value As String)
mName = value
End Set
End Property
''' <summary>
''' The name of the industry
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property IndustryName() As String
Get
Return mIndustryName
End Get
Set(ByVal value As String)
mIndustryName = value
End Set
End Property
''' <summary>
''' Informations about the stock exchange where the stock is traded
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>Don't accept Null/Nothing.</remarks>
Public Property StockExchange() As StockExchange
Get
Return mStockExchange
End Get
Set(ByVal value As StockExchange)
mStockExchange = value
End Set
End Property
''' <summary>
''' The International Securities Identification Number
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property ISIN() As ISIN
Get
Return mISIN
End Get
Set(ByVal value As ISIN)
mISIN = value
End Set
End Property
''' <summary>
''' The type of the security
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Overridable Property Type() As FinancialSecurityType
Get
Return mType
End Get
Set(ByVal value As FinancialSecurityType)
mType = value
End Set
End Property
''' <summary>
''' Default constructor
''' </summary>
''' <remarks></remarks>
Public Sub New()
mID = String.Empty
mName = String.Empty
mIndustryName = String.Empty
mType = FinancialSecurityType.All
End Sub
''' <summary>
''' Creates a new instance by an ID
''' </summary>
''' <param name="id"></param>
''' <remarks></remarks>
Public Sub New(ByVal id As String)
Me.New()
Me.SetID(id)
End Sub
''' <summary>
''' Creates a new instance from an IDSearchResult
''' </summary>
''' <param name="searchResult"></param>
''' <remarks></remarks>
Public Sub New(ByVal searchResult As IDSearchResult)
Me.New()
If searchResult IsNot Nothing Then
Me.SetID(searchResult.ID)
Me.Name = searchResult.Name
Me.IndustryName = searchResult.IndustryName
Me.ISIN.SetISIN(searchResult.ISIN)
Me.Type = searchResult.Type
If mStockExchange.ID = String.Empty And searchResult.Exchange <> String.Empty Then
Dim se As StockExchange = WorldMarket.StockExchangeByID(searchResult.Exchange)
If se Is Nothing Then se = WorldMarket.StockExchangeByName(searchResult.Exchange)
If se IsNot Nothing Then
mStockExchange.ID = se.ID
Else
mStockExchange.Name = searchResult.Exchange
End If
End If
Else
Throw New ArgumentException("The passed result is null", "searchResult")
End If
End Sub
''' <summary>
''' Returns the URL of the Yahoo RSS news feed.
''' </summary>
''' <param name="server">The server of the feed. Decides language.</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function RssNewsURL(Optional ByVal server As Server = Server.USA) As String
Return "http://" & mHelper.ServerString(server) & "finance.yahoo.com/rss/headline?s=" & mHelper.CleanYqlParam(mID)
End Function
Public Function RssFinancialBlogsURL() As String
Return "http://finance.yahoo.com/rss/SeekingAlpha?s=" & mHelper.CleanYqlParam(mID)
End Function
''' <summary>
''' Returns the full ID of the stock.
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Overrides Function ToString() As String
Return mID
End Function
End Class
End Namespace
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.