/// <summary>Gets informations of the current object as a specific <see cref="InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category.</param> void IInfoOutputQueriable.FillInfoOutput(InfoOutput infoOutput, string categoryName) { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add(new InfoOutputProperty("RowCount", RowCount), new InfoOutputProperty("ColumnCount", ColumnCount), new InfoOutputProperty("SubDiagonalCount", SubDiagonalCount), new InfoOutputProperty("SuperDiagonalCount", SuperDiagonalCount)); var dataTable = new System.Data.DataTable("Data"); for (int j = 0; j < ColumnCount; j++) { dataTable.Columns.Add(j.ToString(), typeof(double)); } for (int k = 0; k < RowCount; k++) { var row = dataTable.NewRow(); for (int j = 0; j < ColumnCount; j++) { row[j] = this[k, j]; } dataTable.Rows.Add(row); } infoOutputCollection.Add(dataTable); }
/// <summary>Gets informations of the current object as a specific <see cref="InfoOutput" /> instance. /// </summary> /// <param name="infoOutput">The <see cref="InfoOutput" /> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category.</param> public void FillInfoOutput(InfoOutput infoOutput, string categoryName = InfoOutput.GeneralCategoryName) { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add(new InfoOutputProperty("RowCount", RowCount), new InfoOutputProperty("ColumnCount", ColumnCount), new InfoOutputProperty("Dimension", Dimension), new InfoOutputProperty("IsSymmetric", true)); var dataTable = new System.Data.DataTable("Data"); for (int j = 0; j < Dimension; j++) { dataTable.Columns.Add(j.ToString(), typeof(double)); } for (int k = 0; k < Dimension; k++) { var row = dataTable.NewRow(); for (int j = 0; j < Dimension; j++) { row[j] = this[k, j]; } dataTable.Rows.Add(row); } infoOutputCollection.Add(dataTable); }
/// <summary>Gets informations of the current object as a specific <see cref="T:Dodoni.BasicComponents.Containers.InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="T:Dodoni.BasicComponents.Containers.InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category.</param> public virtual void FillInfoOutput(InfoOutput infoOutput, string categoryName = "General") { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add("Tenor", Tenor); infoOutputCollection.Add("Start date adjustment", StartDateAdjustment); infoOutputCollection.Add("End date adjustment", EndDateAdjustment); }
/// <summary>Gets informations of the current object as a specific <see cref="InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category name.</param> public void FillInfoOutput(InfoOutput infoOutput, string categoryName) { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add("Rounding rule", RoundingRule.Name.String); (BondMarket as IInfoOutputQueriable).FillInfoOutput(infoOutput, categoryName + ".Bond market"); (SwapMarket as IInfoOutputQueriable).FillInfoOutput(infoOutput, categoryName + ".Swap market"); }
/// <summary>Gets informations of the current object as a specific <see cref="InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category name.</param> void IInfoOutputQueriable.FillInfoOutput(InfoOutput infoOutput, string categoryName) { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add("Day count convention", DayCountConvention.Name.String); infoOutputCollection.Add("Business day convention", BusinessDayConvention.Name.String); infoOutputCollection.Add("Coupon frequency", CouponFrequency.Name.String); }
/// <summary>Gets informations of the current object as a specific <see cref="InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category name.</param> public void FillInfoOutput(InfoOutput infoOutput, string categoryName) { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add("Day count convention", DayCountConvention.Name.String); infoOutputCollection.Add("Business day convention", BusinessDayConvention.Name.String); infoOutputCollection.Add("Business days to settle", BusinessDaysToSettle); infoOutputCollection.Add("Coupon frequency", CouponFrequency.Name.String); }
/// <summary>Gets informations of the current object as a specific <see cref="T:Dodoni.BasicComponents.Containers.InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="T:Dodoni.BasicComponents.Containers.InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category.</param> public virtual void FillInfoOutput(InfoOutput infoOutput, string categoryName = "General") { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add("Period start month", PeriodStartMonth); infoOutputCollection.Add("Period start year offset", PeriodStartYearOffset); infoOutputCollection.Add("Tenor", Tenor); infoOutputCollection.Add("Start date adjustment", StartDateAdjustment); infoOutputCollection.Add("End date adjustment", EndDateAdjustment); }
/// <summary>Gets informations of the current object as a specific <see cref="T:Dodoni.BasicComponents.Containers.InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="T:Dodoni.BasicComponents.Containers.InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category.</param> public void FillInfoOutput(InfoOutput infoOutput, string categoryName = "General") { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add("End date", EndDate); infoOutputCollection.Add("Spot date adjustment", SpotDateAdjustment); infoOutputCollection.Add("Start date adjustment", StartDateAdjustment); infoOutputCollection.Add("End date adjustment", EndDateAdjustment); infoOutputCollection.Add("Business days to settle", BusinessDaysToSettle); }
/// <summary>Gets informations of the current object as a specific <see cref="InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category name.</param> void IInfoOutputQueriable.FillInfoOutput(InfoOutput infoOutput, string categoryName) { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add("Business days to settle", BusinessDaysToSettle); infoOutputCollection.Add("Fixed leg Business day convention", FixedBusinessDayConvention.Name.String); infoOutputCollection.Add("Fixed leg Day count convention", FixedDayCountConvention.Name.String); infoOutputCollection.Add("Fixed leg Frequency", FixedFrequency.Name.String); infoOutputCollection.Add("Floating leg Business day convention", FloatingBusinessDayConvention.Name.String); infoOutputCollection.Add("Floating leg Day count convention", FloatingDayCountConvention.Name.String); infoOutputCollection.Add("Floating leg Frequency", FloatingFrequency.Name.String); }
/// <summary>Gets informations of the current object as a specific <see cref="InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category name.</param> public void FillInfoOutput(InfoOutput infoOutput, string categoryName) { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add("Business days to settle", BusinessDaysToSettle); infoOutputCollection.Add("Fixing lag", FixingLag.Name.String); infoOutputCollection.Add("Business day convention", BusinessDayConvention.Name.String); infoOutputCollection.Add("Day count convention", DayCountConvention.Name.String); infoOutputCollection.Add("Future base point value", FutureBasePointValue); infoOutputCollection.Add("Libor rate rounding rule", LiborRateRoundingRule.Name.String); infoOutputCollection.Add("Caplet tenor convention", CapletTenorConvention.Name.String); infoOutputCollection.Add("Libor index name", LiborIndexName); }
/// <summary>Gets informations of the current object as a specific <see cref="InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category name.</param> /// <remarks>This implementation returns a <see cref="System.Data.DataTable"/> objects which contains the <see cref="System.DateTime"/> objects.</remarks> void IInfoOutputQueriable.FillInfoOutput(InfoOutput infoOutput, string categoryName) { var dateTable = new System.Data.DataTable("Dates"); dateTable.Columns.Add("Value", typeof(DateTime)); foreach (DateTime date in m_DateScheduleSet) { dateTable.Rows.Add(date); } InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add(dateTable); infoOutputCollection.Add("Holiday calendar", HolidayCalendar.Name.String); }
/// <summary>Stores informations of an <see cref="IPolynomial"/> object into a specified <see cref="InfoOutputPackage"/>. /// </summary> /// <param name="polynomial">The <see cref="IPolynomial"/> object.</param> /// <param name="infoOutputPackage">The <see cref="InfoOutputPackage"/> object to store the degree and coefficients of <paramref name="polynomial"/>.</param> internal static void FillInfoOutput(IPolynomial polynomial, InfoOutputPackage infoOutputPackage) { infoOutputPackage.Add("Degree", polynomial.Degree); DataTable coefficientDataTable = new DataTable("Coefficients"); coefficientDataTable.Columns.Add("Order", typeof(int)); coefficientDataTable.Columns.Add("Coefficient.Real", typeof(double)); coefficientDataTable.Columns.Add("Coefficient.Imaginary", typeof(double)); for (int order = 0; order <= polynomial.Degree; order++) { var coefficient = polynomial.GetCoefficient(order); coefficientDataTable.Rows.Add(order, coefficient.Real, coefficient.Imaginary); } infoOutputPackage.Add(coefficientDataTable); }
/// <summary>Gets informations of the current object as a specific <see cref="InfoOutput"/> instance. /// </summary> /// <param name="infoOutput">The <see cref="InfoOutput"/> object which is to be filled with informations concering the current instance.</param> /// <param name="categoryName">The name of the category, i.e. all informations will be added to these category.</param> public void FillInfoOutput(InfoOutput infoOutput, string categoryName = InfoOutput.GeneralCategoryName) { InfoOutputPackage infoOutputCollection = infoOutput.AcquirePackage(categoryName); infoOutputCollection.Add("Frequency", m_Frequency.Name); infoOutputCollection.Add("Business day convention", m_BusinessDayConvention.Name); if ((m_FirstRegularDate != null) && (m_FirstRegularDate.HasValue == true)) { infoOutputCollection.Add("First regular date", m_FirstRegularDate.Value); } if ((m_LastRegularDate != null) && (m_LastRegularDate.HasValue == true)) { infoOutputCollection.Add("Last regular date", m_LastRegularDate.Value); } infoOutputCollection.Add("Seed date business day convention", SeedBusinessDayConvention.Name); if (m_ReferenceDate != DateTime.MinValue) { infoOutputCollection.Add("Reference date", m_ReferenceDate); } m_TimeSpanDescription.FillInfoOutput(infoOutput, categoryName); }
public static object GetOutputPropertyValue( [ExcelArgument(Name = "objectName", Description = "The name of the object", AllowReference = true)] object xlObjectName, [ExcelArgument(Name = "propertyName", Description = "The name of the property", AllowReference = true)] object xlPropertyName, [ExcelArgument(Name = "propertyGroupName", Description = "[optional] The name of the property group ('general properties' is standard)", AllowReference = true)] object xlPropertyGroupName, [ExcelArgument(Name = "category", Description = "The category of the output, i.e. 'general' etc.", AllowReference = true)] object xlCategoryName) { try { if (ExcelDnaUtil.IsInFunctionWizard() == true) { return(String.Empty); } IExcelDataQuery objectNameQuery = ExcelDataQuery.Create(xlObjectName); string objectName; ExcelPoolItem poolItem; if ((objectNameQuery.TryGetValue <string>(out objectName, dataAdvice: ExcelDataAdvice.Create(ExcelPool.GetObjectNames())) != ExcelCellValueState.ProperValue) || (ExcelPool.TryGetItem(objectName, out poolItem) == false)) { throw new ArgumentException("No object with name '" + objectNameQuery.ToString(0, 0).GetRelevantSubstring() + "' available."); } /* get the output of the pool object: */ InfoOutput itemOutput = new InfoOutput(); poolItem.Value.FillInfoOutput(itemOutput); InfoOutputPackage itemOutputCollection = null; IExcelDataQuery categoryNameQuery = ExcelDataQuery.Create(xlCategoryName); if (categoryNameQuery.IsEmpty == true) { itemOutputCollection = itemOutput.GetGeneralPackage(); } else { string categoryName = categoryNameQuery.GetValue <string>(dataAdvice: ExcelDataAdvice.Create(itemOutput.CategoryNames)); itemOutputCollection = itemOutput.GetPackage(categoryName); } string propertyGroupName = InfoOutputPackage.GeneralPropertyGroupName.String; IExcelDataQuery propertyGroupNameQuery = ExcelDataQuery.Create(xlPropertyGroupName); if (propertyGroupNameQuery.IsEmpty == false) { propertyGroupName = propertyGroupNameQuery.GetValue <string>(dataAdvice: ExcelDataAdvice.Create(itemOutputCollection.PropertyGroupNames)); } IIdentifierStringDictionary <InfoOutputProperty> properties; if (itemOutputCollection.TryGetProperties(propertyGroupName, out properties) == false) { throw new ArgumentException("The property group name' " + propertyGroupName + "' is invalid."); } IExcelDataQuery propertyNameQuery = ExcelDataQuery.Create(xlPropertyName); string propertyName; if (propertyNameQuery.TryGetValue <string>(out propertyName, dataAdvice: ExcelDataAdvice.Create(properties)) != ExcelCellValueState.ProperValue) { throw new ArgumentException("The property name '" + propertyNameQuery.ToString(0, 0) + "' is invalid."); } InfoOutputProperty property; if (properties.TryGetValue(propertyName, out property) == false) { throw new ArgumentException("No property with name '" + propertyName + "' found."); } return(ExcelDataConverter.GetExcelCellRepresentation(property.Value)); } catch (Exception e) { return(ExcelDataConverter.GetExcelRangeErrorMessage(e.Message)); } }
/// <summary>Adds the property 'State'. /// </summary> /// <param name="infoOutputCollection">The <see cref="InfoOutputPackage"/> object.</param> /// <param name="state">The state.</param> public static void Add(this InfoOutputPackage infoOutputCollection, InfoOutputState state) { infoOutputCollection.Add("State", state, Resources.State); }
public static object GetOutputRange( [ExcelArgument(Name = "objectName", Description = "The name of the object", AllowReference = true)] object xlObjectName, [ExcelArgument(Name = "tableName", Description = "The name of the table", AllowReference = true)] object xlTableName, [ExcelArgument(Name = "rowIndices", Description = "An [optional] Excel Range vector that contains null-based (excluding header) row indices of the table", AllowReference = true)] object xlRowIndices, [ExcelArgument(Name = "columnIndicesOrNames", Description = "An [optional] Excel Range vector which contains column names or null-based column indices of the table", AllowReference = true)] object xlColumnIndicesOrNames, [ExcelArgument(Name = "category", Description = "The category of the output, i.e. 'general' etc.", AllowReference = true)] object xlCategoryName) { try { if (ExcelDnaUtil.IsInFunctionWizard() == true) { return(String.Empty); } string objectName; ExcelPoolItem poolItem; IExcelDataQuery objectNameQuery = ExcelDataQuery.Create(xlObjectName); if ((objectNameQuery.TryGetValue <string>(out objectName, dataAdvice: ExcelDataAdvice.Create(ExcelPool.GetObjectNames())) != ExcelCellValueState.ProperValue) || (ExcelPool.TryGetItem(objectName, out poolItem) == false)) { throw new ArgumentException("No object with name '" + objectNameQuery.ToString(0, 0).GetRelevantSubstring() + "' available."); } InfoOutput infoOutput = new InfoOutput(); poolItem.Value.FillInfoOutput(infoOutput); InfoOutputPackage itemOutputCollection = null; IExcelDataQuery categoryNameQuery = ExcelDataQuery.Create(xlCategoryName); if (categoryNameQuery.IsEmpty == true) { itemOutputCollection = infoOutput.GetGeneralPackage(); } else { string categoryName = categoryNameQuery.GetValue <string>(dataAdvice: ExcelDataAdvice.Create(infoOutput.CategoryNames)); itemOutputCollection = infoOutput.GetPackage(categoryName); } IExcelDataQuery tableNameDataQuery = ExcelDataQuery.Create(xlTableName); DataTable tableOutput; string tableName; if ((tableNameDataQuery.TryGetValue <string>(out tableName, dataAdvice: ExcelDataAdvice.Create(itemOutputCollection.GetDataTableNames())) != ExcelCellValueState.ProperValue) || (itemOutputCollection.TryGetDataTable(tableName, out tableOutput) == false)) { throw new ArgumentException("Table with name '" + tableNameDataQuery.ToString(0, 0) + "' is invalid."); } int rowCount, columnCount; IEnumerable <int> rowIndices = GetRowIndices(ExcelDataQuery.Create(xlRowIndices), tableOutput, out rowCount); IEnumerable <int> columnIndices = GetColumnIndices(ExcelDataQuery.Create(xlColumnIndicesOrNames), tableOutput, out columnCount); return(ExcelDataConverter.GetExcelRangeOutput(GetSubTable(rowIndices, rowCount, columnIndices, columnCount, tableOutput))); } catch (Exception e) { return(ExcelDataConverter.GetExcelRangeErrorMessage(e.Message)); } }
/// <summary>Adds the property 'Execution time'. /// </summary> /// <param name="infoOutputCollection">The <see cref="InfoOutputPackage"/> object.</param> /// <param name="executionTime">The exection time in milliseconds.</param> public static void AddExecutionTime(this InfoOutputPackage infoOutputCollection, long executionTime) { infoOutputCollection.Add("Execution time", executionTime, Resources.ExecutionTime); }
public static object GetOutputNames( [ExcelArgument(Name = "objectName", Description = "The name of the object", AllowReference = true)] object xlObjectName, [ExcelArgument(Name = "outputType", Description = "Contains the type of the output, i.e. 'tables' or 'properties'", AllowReference = true)] object xlOutputType, [ExcelArgument(Name = "propertyGroupName", Description = "[optional] If 'inputType = \"properties\" this argument represents the name of the table which represents the properties", AllowReference = true)] object xlPropertyTableName, [ExcelArgument(Name = "category", Description = "[optional] The category of the output, i.e. 'general' etc.", AllowReference = true)] object xlCategoryName) { try { if (ExcelDnaUtil.IsInFunctionWizard() == true) { return(String.Empty); } IExcelDataQuery objectNameQuery = ExcelDataQuery.Create(xlObjectName); string objectName; ExcelPoolItem poolItem; if ((objectNameQuery.TryGetValue <string>(out objectName, dataAdvice: ExcelDataAdvice.Create(ExcelPool.GetObjectNames())) != ExcelCellValueState.ProperValue) || (ExcelPool.TryGetItem(objectName, out poolItem) == false)) { throw new ArgumentException("No object with name '" + objectNameQuery.ToString(0, 0).GetRelevantSubstring() + "' available."); } IExcelDataQuery outputTypeQuery = ExcelDataQuery.Create(xlOutputType); eQueryType outputType; if (outputTypeQuery.TryGetValue <eQueryType>(out outputType, EnumStringRepresentationUsage.StringAttribute) != ExcelCellValueState.ProperValue) { throw new ArgumentException("Invalid output type '" + outputTypeQuery.ToString(0, 0) + "'."); } /* get the output of the pool object: */ InfoOutput itemOutput = new InfoOutput(); poolItem.Value.FillInfoOutput(itemOutput); InfoOutputPackage itemOutputCollection = null; IExcelDataQuery categoryNameQuery = ExcelDataQuery.Create(xlCategoryName); if (categoryNameQuery.IsEmpty == true) { itemOutputCollection = itemOutput.GetGeneralPackage(); } else { string categoryName = categoryNameQuery.GetValue <string>(0, 0, ExcelDataAdvice.Create(itemOutput.CategoryNames)); itemOutputCollection = itemOutput.GetPackage(categoryName); } IExcelDataQuery propertyTableQuery = ExcelDataQuery.Create(xlPropertyTableName); if (outputType == eQueryType.PropertyNames) { string propertyTableName = InfoOutputPackage.GeneralPropertyGroupName.String; if (propertyTableQuery.IsEmpty == false) { propertyTableName = propertyTableQuery.GetValue <string>(0, 0, ExcelDataAdvice.Create(itemOutputCollection.PropertyGroupNames)); } IIdentifierStringDictionary <InfoOutputProperty> propertyCollection; if (itemOutputCollection.TryGetProperties(propertyTableName, out propertyCollection) == false) { throw new ArgumentException("The property table with name' " + propertyTableName + "' is invalid."); } object[,] outputRange = new object[propertyCollection.Count() + 1, 1]; outputRange[0, 0] = "Property names (output)"; int j = 1; foreach (var property in propertyCollection) { outputRange[j, 0] = (string)property.Name; j++; } return(ExcelDataConverter.GetExcelRangeOutput(outputRange)); } else { if (propertyTableQuery.IsEmpty == false) { throw new ArgumentException("The property table with name' " + propertyTableQuery.ToString(0, 0) + "' is invalid."); } List <object> outputRange = new List <object>(); outputRange.Add("Table names"); foreach (var table in itemOutputCollection.GetDataTables(InfoOutputPackage.DataTableType.Single | InfoOutputPackage.DataTableType.Parent)) { outputRange.Add(table.Item1.String); } return(ExcelDataConverter.GetExcelRangeOutput(outputRange)); } } catch (Exception e) { return(ExcelDataConverter.GetExcelRangeErrorMessage(e.Message)); } }