public IEnumerable <ITradeData> ReadTradeData(TextReader textReader)
        {
            string line  = textReader.ReadLine();
            var    cIdx  = ColumnIndexes.GeFromHeaderLine(line, Separator);
            int    rowNo = 2;

            while ((line = textReader.ReadLine()) != null)
            {
                ITradeData tradeData = null;
                try
                {
                    string[] values = line.Split(new char[] { Separator });
                    if (values.Length > 6)
                    {
                        throw new FormatException("Too many columns in a row.");
                    }
                    tradeData = new TradeData(values[cIdx.DateIndex], values[cIdx.OpenIndex], values[cIdx.HighIndex], values[cIdx.LowIndex], values[cIdx.CloseIndex], values[cIdx.VolumeIndex]).CheckDataBusinessCorrectness();
                }
                catch (Exception e)
                {
                    e.Data["rowNo"] = rowNo;
                    Trace.TraceError("Exception when processing row number: " + rowNo + " (" + e.Message + ")");
                    throw e;
                }
                rowNo++;
                yield return(tradeData);
            }
        }
        protected override async Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken)
        {
            // Inputs
            var key        = Key.Get(context);
            var encoding   = Encoding.Get(context);
            var iterations = Iterations.Get(context);

            var inDt        = DataTable.Get(context);
            var dataColumns = DataTableHelper.IdentifyDataColumns(inDt, ColumnIndexes?.Get(context), ColumnNames?.Get(context));
            var outDt       = DataTableHelper.NewCryptoDataTable(inDt, dataColumns);

            using (var crypto = new Crypto(Algorithm, encoding, iterations))
            {
                outDt.BeginLoadData();

                AddToDataTable(inDt, outDt, dataColumns, key, crypto);

                outDt.AcceptChanges();
                outDt.EndLoadData();
            }

            var sortBy = Sort.Get(context);

            if (sortBy != null)
            {
                outDt.DefaultView.Sort = sortBy;
                outDt = outDt.DefaultView.ToTable();
            }

            // Outputs
            return((ctx) => Result.Set(ctx, outDt));
        }
Exemple #3
0
 /// <summary>
 /// Gets the stored value in the column specified by name
 /// </summary>
 /// <typeparam name="T">Target type</typeparam>
 /// <param name="name">Name of the column</param>
 /// <returns></returns>
 public T GetValue <T>(string name)
 {
     if (!ColumnIndexes.ContainsKey(name))
     {
         throw new ArgumentException(String.Format("Column {0} not found", name));
     }
     return(GetValue <T>(ColumnIndexes[name]));
 }
Exemple #4
0
 /// <summary>
 /// Gets the stored value in the column specified by name.
 /// </summary>
 /// <typeparam name="T">Target type</typeparam>
 /// <param name="name">Name of the column</param>
 /// <returns></returns>
 public virtual T GetValue <T>(string name)
 {
     //The method is marked virtual to allow to be mocked
     if (!ColumnIndexes.ContainsKey(name))
     {
         throw new ArgumentException(String.Format("Column {0} not found", name));
     }
     return(GetValue <T>(ColumnIndexes[name]));
 }
Exemple #5
0
        /// <summary>
        /// Gets a column information by name. Returns null if not found.
        /// </summary>
        public CqlColumn GetColumn(string name)
        {
            int index;

            if (!ColumnIndexes.TryGetValue(name, out index))
            {
                return(null);
            }
            return(Columns[index]);
        }
            public static ColumnIndexes GeFromHeaderLine(string headerLine, char separator)
            {
                ColumnIndexes indexes = new ColumnIndexes();

                var columns = headerLine.Split(new char[] { separator });

                indexes.DateIndex   = Array.IndexOf <string>(columns, "Date");
                indexes.OpenIndex   = Array.IndexOf <string>(columns, "Open");
                indexes.HighIndex   = Array.IndexOf <string>(columns, "High");
                indexes.LowIndex    = Array.IndexOf <string>(columns, "Low");
                indexes.CloseIndex  = Array.IndexOf <string>(columns, "Close");
                indexes.VolumeIndex = Array.IndexOf <string>(columns, "Volume");
                return(indexes);
            }
        protected override async Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken)
        {
            var source = DataTable.Get(context);
            var result = new Dictionary <string, object>();

            if (source.Rows.Count > 0)
            {
                var dataColumns       = DataTableHelper.IdentifyDataColumns(source, ColumnIndexes?.Get(context), ColumnNames?.Get(context));
                var convertibleValues = IdentifyConvertibleValues(source, dataColumns);
                Compute(source.AsEnumerable(), result, convertibleValues);
            }

            // Outputs
            return((ctx) => Result.Set(ctx, result));
        }
        private Func <DataRow, bool> GetCustomModeHandler(AsyncCodeActivityContext context, DataTable dt, Func <object, bool> predicate)
        {
            var indexes    = new HashSet <int>();
            var colIndexes = ColumnIndexes.Get(context);

            if (colIndexes != null)
            {
                foreach (var index in colIndexes)
                {
                    indexes.Add(index);
                }
            }
            else
            {
                var index = 0;
                var names = ColumnNames.Get(context);
                foreach (DataColumn col in dt.Columns)
                {
                    if (names.Contains(col.ColumnName))
                    {
                        indexes.Add(index);
                    }

                    index++;
                }
            }

            IEnumerable <object> filter(DataRow dr) => dr.ItemArray.Where((_, index) => indexes.Contains(index));

            if (Operator == ConditionOperator.And)
            {
                return((DataRow dr) => filter(dr).Any(predicate));
            }

            return((DataRow dr) => filter(dr).All(predicate));
        }
Exemple #9
0
        internal void CheckCommandsForIndexes()
        {
            bool isTransposed = false;

            foreach (Command command in Commands)
            {
                if ((command as TransposeCommand) != null)
                {
                    isTransposed = !isTransposed;
                }
                var indexedCommand = command as IUseIndexes;
                if (indexedCommand != null)
                {
                    foreach (Index usedIndex in indexedCommand.UsedIndexes)
                    {
                        if (isTransposed)
                        {
                            if (!RowIndexes.Any(i => i == usedIndex || i.IsAll))
                            {
                                usedIndex.IsHidden = true;
                                RowIndexes.Add(usedIndex);
                            }
                        }
                        else
                        {
                            if (!ColumnIndexes.Any(i => i == usedIndex || i.IsAll))
                            {
                                usedIndex.IsHidden = true;
                                ColumnIndexes.Add(usedIndex);
                            }
                        }
                    }
                }
                var errorBarCommand = command as ErrorBarCommand;
                if (errorBarCommand != null)
                {
                    ColumnIndexes.Add(errorBarCommand.MinusIndex);
                    if (errorBarCommand.PlusIndex != null)
                    {
                        ColumnIndexes.Add(errorBarCommand.PlusIndex);
                    }
                }
                var yCommand = command as YCommand;
                if (yCommand != null)
                {
                    if (isTransposed)
                    {
                        if (!RowIndexes.Any(i => i == yCommand.Index || i.IsAll))
                        {
                            RowIndexes.Add(yCommand.Index);
                        }
                    }
                    else
                    {
                        if (!ColumnIndexes.Any(i => i == yCommand.Index || i.IsAll))
                        {
                            ColumnIndexes.Add(yCommand.Index);
                        }
                    }
                }
            }
        }
Exemple #10
0
 /// <summary>
 /// Gets a column information by name. Returns null if not found.
 /// </summary>
 public CqlColumn GetColumn(string name)
 {
     return(ColumnIndexes.TryGetValue(name, out var index)
         ? Columns[index]
         : null);
 }
Exemple #11
0
 public BoardCellLocation(ColumnIndexes column, RowIndexes row)
 {
     Column = column;
     Row    = row;
 }
 private string GetPhoneNumber(Word.Row row, ColumnIndexes index)
 {
     string phoneNumber = row.Cells[(int)index].Range.Text;
     phoneNumber = RemoveEmptyRowCharacters(phoneNumber);
     return Utility.RemoveSpaces(phoneNumber);
 }
        private ProductIncrementalValue CreateProductIncrementalValue(string row, int noOfRowValues, ColumnIndexes columnIndexes)
        {
            var rowValues = SplitRow(row);

            if (rowValues.Count() != noOfRowValues)
            {
                InvalidInputRows.Add(row);
                return(null);
            }
            string productName = rowValues[columnIndexes.ProductNameIndex];

            int originYear;

            if (!int.TryParse(rowValues[columnIndexes.OriginYearIndex], out originYear))
            {
                InvalidInputRows.Add(row);
                return(null);
            }

            int developmentYear;

            if (!int.TryParse(rowValues[columnIndexes.DevelopmentYearIndex], out developmentYear))
            {
                InvalidInputRows.Add(row);
                return(null);
            }

            double incrementalValue;

            if (!double.TryParse(rowValues[columnIndexes.IncrementalValueIndex], out incrementalValue))
            {
                InvalidInputRows.Add(row);
                return(null);
            }

            if (!ValidateParameters(productName, originYear, developmentYear))
            {
                InvalidInputRows.Add(row);
                return(null);
            }

            var productIncrementalValue = new ProductIncrementalValue
            {
                ProductName      = productName,
                OriginYear       = originYear,
                DevelopmentYear  = developmentYear,
                IncrementalValue = incrementalValue
            };

            return(productIncrementalValue);
        }