Esempio n. 1
0
 public AccountsController(DataReaderSettings dataReaderSettings, IMarginTradingAccountsRepository accountsRepository,
                           IMarginTradingAccountStatsRepository accountStatsRepository)
 {
     _dataReaderSettings     = dataReaderSettings;
     _accountsRepository     = accountsRepository;
     _accountStatsRepository = accountStatsRepository;
 }
        public void ConvertJson2Xml_HelloWorld_RoundTripsJsonToXmlAndBack()
        {
            // input from example at http://xmlspec.org/#/specification
            var inputJson =
                @"{
	""hello"" : ""world""
}";

            var expectedXml = @"<object><hello>world</hello></object>";

            var jsonTokenizer = new JsonReader.JsonTokenizer();
            var tokens1       = jsonTokenizer.GetTokens(inputJson);

            var writerSettings = new DataWriterSettings {
                PrettyPrint = false
            };
            var xmlFormatter = new TransformFormatter <ModelTokenType, MarkupTokenType>(new XmlWriter.XmlFormatter(writerSettings), new XmlWriter.XmlOutTransformer(writerSettings));
            var actualXml    = xmlFormatter.Format(tokens1);

            Assert.Equal(expectedXml, actualXml);

            var expectedJson = @"{""hello"":""world""}";

            var readerSettings = new DataReaderSettings(writerSettings.Resolver);
            var xmlTokenizer   = new TransformTokenizer <MarkupTokenType, ModelTokenType>(new XmlReader.XmlTokenizer(), new XmlReader.XmlInTransformer(readerSettings));
            var tokens2        = xmlTokenizer.GetTokens(actualXml);

            var jsonFormatter = new JsonWriter.JsonFormatter(new DataWriterSettings {
                PrettyPrint = false
            });
            var actualJson = jsonFormatter.Format(tokens2);

            Assert.Equal(expectedJson, actualJson);
        }
Esempio n. 3
0
 public Application(IRabbitMqService rabbitMqService, DataReaderSettings dataReaderSettings,
                    IMarginTradingSettingsCacheService marginTradingSettingsCacheService)
 {
     _rabbitMqService    = rabbitMqService;
     _dataReaderSettings = dataReaderSettings;
     _marginTradingSettingsCacheService = marginTradingSettingsCacheService;
     ;
 }
Esempio n. 4
0
        bool IDataFilter <TTokenType> .TryRead(DataReaderSettings settings, IStream <Token <TTokenType> > tokens, out object value)
        {
            TResult result;
            bool    success = this.TryRead(settings, tokens, out result);

            value = result;
            return(success);
        }
Esempio n. 5
0
            /// <summary>
            /// Ctor
            /// </summary>
            /// <param name="settings"></param>
            public XmlInTransformer(DataReaderSettings settings)
            {
                if (settings == null)
                {
                    throw new ArgumentNullException("settings");
                }

                this.Settings = settings;
            }
Esempio n. 6
0
 public MarginTradingEnabledFilter(
     DataReaderSettings dataReaderSettings,
     IMarginTradingSettingsCacheService marginTradingSettingsCacheService,
     ICacheProvider cacheProvider,
     ILog log)
 {
     _dataReaderSettings = dataReaderSettings;
     _marginTradingSettingsCacheService = marginTradingSettingsCacheService;
     _cacheProvider = cacheProvider;
     _log           = log;
 }
Esempio n. 7
0
        /// <summary>
        /// Ctor
        /// </summary>
        /// <param name="settings"></param>
        /// <param name="contentTypes"></param>
        public JsonReader(DataReaderSettings settings, params string[] contentTypes)
            : base(settings != null ? settings : new DataReaderSettings())
        {
            if (contentTypes == null)
            {
                throw new NullReferenceException("contentTypes");
            }

            // copy values so cannot be modified from outside
            this.ContentTypes = new string[contentTypes.Length];
            Array.Copy(contentTypes, this.ContentTypes, contentTypes.Length);
        }
Esempio n. 8
0
        public void Read_NullValueTypes()
        {
            var input = "{a:null}";

            var settings = new DataReaderSettings();

            settings.AllowNullValueTypes = true;

            var reader = new JsonReader(settings);

            var actual = reader.Read <ClassA>(input);

            Assert.Equal(default(int), actual.a);
        }
Esempio n. 9
0
        public RestRequestAsyncHandle ContinueWith <TResult>(Action <TResult> callback)
        {
            return(this.client.ExecuteAsync(this.request, response => {
                var settings = new DataReaderSettings();
                var reader = new JsonReader(settings);
                var data = reader.Read <TResult>(response.Content);

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    throw new Exception(response.ErrorMessage);
                }
                else
                {
                    callback(data);
                }
            }));
        }
        public override bool TryRead(DataReaderSettings settings, IStream <Token <ModelTokenType> > tokens, out DateTime value)
        {
            var token = tokens.Peek();

            if (token == null || token.TokenType != ModelTokenType.Primitive || !(token.Value is string))
            {
                value = default(DateTime);
                return(false);
            }

            if (!TryParseDate(token.ValueAsString(), out value))
            {
                value = default(DateTime);
                return(false);
            }

            tokens.Pop();
            return(true);
        }
        public void ConvertJson2Xml_ArrayAsProperty_RoundTripsJsonToXmlAndBack()
        {
            // input from example at http://xmlspec.org/#/specification
            var inputJson =
                @"{
	""BSON"" : [
		""awesome"",
		5.05,
		1986
	]
}";

            var expectedXml = @"<object><BSON><item>awesome</item><item>5.05</item><item>1986</item></BSON></object>";

            var jsonTokenizer = new JsonReader.JsonTokenizer();
            var tokens1       = jsonTokenizer.GetTokens(inputJson);

            var writerSettings = new DataWriterSettings {
                PrettyPrint = false
            };
            var xmlFormatter = new TransformFormatter <ModelTokenType, MarkupTokenType>(new XmlWriter.XmlFormatter(writerSettings), new XmlWriter.XmlOutTransformer(writerSettings));
            var actualXml    = xmlFormatter.Format(tokens1);

            Assert.Equal(expectedXml, actualXml);

            var expectedJson = @"{""BSON"":[""awesome"",5.05,1986]}";

            var readerSettings = new DataReaderSettings(writerSettings.Resolver);
            var xmlTokenizer   = new TransformTokenizer <MarkupTokenType, ModelTokenType>(new XmlReader.XmlTokenizer(), new XmlReader.XmlInTransformer(readerSettings));
            var tokens2        = xmlTokenizer.GetTokens(actualXml);

            var jsonFormatter = new JsonWriter.JsonFormatter(new DataWriterSettings {
                PrettyPrint = false
            });
            var actualJson = jsonFormatter.Format(tokens2);

            Assert.Equal(expectedJson, actualJson);
        }
        public void ConvertJson2Xml_BooleanValue_RoundTripsJsonToXmlAndBack()
        {
            // input from example at http://codebetter.com/blogs/karlseguin/archive/2010/03/05/xml-serialization.aspx
            var inputJson = @"{valid:true}";

            var expectedXml =
                @"<object>
	<valid>true</valid>
</object>";

            var jsonTokenizer = new JsonReader.JsonTokenizer();
            var tokens1       = jsonTokenizer.GetTokens(inputJson);

            var writerSettings = new DataWriterSettings {
                PrettyPrint = true
            };
            var xmlFormatter = new TransformFormatter <ModelTokenType, MarkupTokenType>(new XmlWriter.XmlFormatter(writerSettings), new XmlWriter.XmlOutTransformer(writerSettings));
            var actualXml    = xmlFormatter.Format(tokens1);

            Assert.Equal(expectedXml, actualXml);

            var expectedJson =
                @"{
	""valid"" : ""true""
}";

            var readerSettings = new DataReaderSettings(writerSettings.Resolver);
            var xmlTokenizer   = new TransformTokenizer <MarkupTokenType, ModelTokenType>(new XmlReader.XmlTokenizer(), new XmlReader.XmlInTransformer(readerSettings));
            var tokens2        = xmlTokenizer.GetTokens(actualXml);

            var jsonFormatter = new JsonWriter.JsonFormatter(new DataWriterSettings {
                PrettyPrint = true
            });
            var actualJson = jsonFormatter.Format(tokens2);

            Assert.Equal(expectedJson, actualJson);
        }
Esempio n. 13
0
        /// <summary>
        /// Ctor
        /// </summary>
        /// <param name="settings"></param>
        public ModelAnalyzer(DataReaderSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }
            this.Settings = settings;

            var filters = new List <IDataFilter <ModelTokenType> >();

            if (settings.Filters != null)
            {
                foreach (var filter in settings.Filters)
                {
                    if (filter != null)
                    {
                        filters.Add(filter);
                    }
                }
            }
            this.Filters = filters;

            this.Coercion = new TypeCoercionUtility(settings, settings.AllowNullValueTypes);
        }
Esempio n. 14
0
 public abstract bool TryRead(DataReaderSettings settings, IStream <Token <TTokenType> > tokens, out TResult value);
Esempio n. 15
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="settings"></param>
 protected ModelReader(DataReaderSettings settings)
     : base(settings)
 {
 }
Esempio n. 16
0
 public ApiKeyValidator(DataReaderSettings settings)
 {
     _settings = settings;
 }
Esempio n. 17
0
        private static void Main(string[] args)
        {
            PIConnection piConnection;
            var          _logger = LogManager.GetLogger(typeof(Program));


            try
            {
                var options = new CommandLineOptions();


                if (Parser.Default.ParseArguments(args, options))
                {
                    ValidateSettings(options);

                    var readerSettings = new DataReaderSettings();

                    if (options.Server.Length == 1)
                    {
                        piConnection = new PIConnection(options.Server[0]);
                    }
                    else
                    {
                        piConnection = new PIConnection(options.Server[0], options.Server[1]);
                    }

                    if (options.testTagSearch != null && options.testTagSearch.Length > 0)
                    {
                        _logger.Info("Search test started...");

                        piConnection.Connect();

                        var search = new TagsLoader(piConnection.GetPiServer());
                        foreach (var s in options.testTagSearch)
                        {
                            var tags = search.Search(s).ToList();
                            _logger.WarnFormat("Found {0} tags with query {1}", tags.Count, s);

                            if (options.testTagSearchPrintAllTags)
                            {
                                tags.ForEach(t => _logger.InfoFormat("Tag: {0}, PointClass: {1}", t.Name, t.PointClass));
                            }
                        }
                    }

                    if (options.TagQueries != null && options.TagQueries.Length > 0)
                    {
                        _logger.Info("Data reader starting...");


                        piConnection.Connect();

                        if (options.EventsPerDay > 0 && options.TagsCount > 0)
                        {
                            // var type = options.UseParallel? DataReaderSettings.ReadingType.Parallel: DataReaderSettings.ReadingType.Bulk;
                            var type = DataReaderSettings.ReadingType.Bulk;
                            readerSettings.AutoTune(type, options.EventsPerDay, options.TagsCount, options.EventsPerRead);
                        }


                        // starts the data writer


                        // settings data filters to filter out the data if option is specified
                        var filtersFactory = new FiltersFactory();
                        if (options.RemoveDuplicates)
                        {
                            filtersFactory.AddFilter(new DuplicateValuesFilter());
                        }


                        if (options.FilterDigitalStates)
                        {
                            filtersFactory.AddFilter(new SystemStatesFilter());
                        }


                        _logger.Info("Creating worker objects...");
                        var dataWriter = new DataWriter(options.OutfileName, options.EventsPerFile, options.WritersCount, filtersFactory);

                        var dataReader = new DataReaderBulk(readerSettings, dataWriter, options.EnableWrite);

                        //dataReader = options.UseParallel
                        //    ? (IDataReader) new DataReaderParallel(readerSettings, dataWriter)
                        //    : new DataReaderBulk(readerSettings, dataWriter);

                        var orchestrator = new Orchestrator(options.StartTime, options.EndTime,
                                                            readerSettings.TimeIntervalPerDataRequest, dataReader);

                        var tagsLoader = new TagsLoader(piConnection.GetPiServer(), options.TagQueries,
                                                        readerSettings.TagGroupSize, orchestrator);

                        var statistics = new Statistics();

                        // starts the orchestrator
                        _logger.Info("Starting workers...");
                        var tagsLoaderTask = tagsLoader.Run();
                        var writerTask     = dataWriter.Run();

                        // var processorTask = dataProcessor.Run(); -- not using this after determining this was not bringing much performance gain.
                        var orchestratorTask = orchestrator.Run();
                        var dataReaderTask   = dataReader.Run();
                        var statsTask        = statistics.Run();


                        // starts the data reader
                        Task.WaitAll(orchestratorTask, writerTask, dataReaderTask, tagsLoaderTask);

                        statistics.Stop();

                        Task.WaitAll(statsTask);

                        _logger.Info("All tasks completed successfully");
                    }


                    // DEBUG
                    //  Console.ReadKey();

                    // exit ok
                    Environment.Exit(0);
                }
                else
                {
                    // exit with error
                    Environment.Exit(1);
                }
            }


            catch (Exception ex)
            {
                _logger.Error(ex);
            }
        }
        public void ConvertJson2Xml_ComplexGraph_RoundTripsJsonToXmlAndBack()
        {
            // input from pass1.json in test suite at http://www.json.org/JSON_checker/
            const string inputJson = @"[
    ""JSON Test Pattern pass1"",
    {""object with 1 member"":[""array with 1 element""]},
    {},
    [],
    -42,
    true,
    false,
    null,
    {
        ""integer"": 1234567890,
        ""real"": -9876.543210,
        ""e"": 0.123456789e-12,
        ""E"": 1.234567890E+34,
        """":  23456789012E66,
        ""zero"": 0,
        ""one"": 1,
        ""space"": "" "",
        ""quote"": ""\"""",
        ""backslash"": ""\\"",
        ""controls"": ""\b\f\n\r\t"",
        ""slash"": ""/ & \/"",
        ""alpha"": ""abcdefghijklmnopqrstuvwyz"",
        ""ALPHA"": ""ABCDEFGHIJKLMNOPQRSTUVWYZ"",
        ""digit"": ""0123456789"",
        ""0123456789"": ""digit"",
        ""special"": ""`1~!@#$%^&*()_+-={':[,]}|;.</>?"",
        ""hex"": ""\u0123\u4567\u89AB\uCDEF\uabcd\uef4A"",
        ""true"": true,
        ""false"": false,
        ""null"": null,
        ""array"":[  ],
        ""object"":{  },
        ""address"": ""50 St. James Street"",
        ""url"": ""http://www.JSON.org/"",
        ""comment"": ""// /* <!-- --"",
        ""# -- --> */"": "" "",
        "" s p a c e d "" :[1,2 , 3

,

4 , 5        ,          6           ,7        ],""compact"":[1,2,3,4,5,6,7],
        ""jsontext"": ""{\""object with 1 member\"":[\""array with 1 element\""]}"",
        ""quotes"": ""&#34; \u0022 %22 0x22 034 &#x22;"",
        ""\/\\\""\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?""
: ""A key can be any string""
    },
    0.5 ,98.6
,
99.44
,

1066,
1e1,
0.1e1,
1e-1,
1e00,2e+00,2e-00
,""rosebud""]";

            var expectedXml =
                @"<array>
	<item>JSON Test Pattern pass1</item>
	<item>
		<object_x0020_with_x0020_1_x0020_member>
			<item>array with 1 element</item>
		</object_x0020_with_x0020_1_x0020_member>
	</item>
	<item />
	<item />
	<item>-42</item>
	<item>true</item>
	<item>false</item>
	<item />
	<item>
		<integer>1234567890</integer>
		<real>-9876.54321</real>
		<e>1.23456789e-13</e>
		<E>1.23456789e+34</E>
		<double>2.3456789012e+76</double>
		<zero>0</zero>
		<one>1</one>
		<space> </space>
		<quote>""</quote>
		<backslash>\</backslash>
		<controls>"         + "&#x8;&#xC;\n\r\t" + @"</controls>
		<slash>/ &amp; /</slash>
		<alpha>abcdefghijklmnopqrstuvwyz</alpha>
		<ALPHA>ABCDEFGHIJKLMNOPQRSTUVWYZ</ALPHA>
		<digit>0123456789</digit>
		<_x0030_123456789>digit</_x0030_123456789>
		<special>`1~!@#$%^&amp;*()_+-={':[,]}|;.&lt;/&gt;?</special>
		<hex>"         + "\u0123\u4567\u89AB\uCDEF\uABCD\uEF4A" + @"</hex>
		<true>true</true>
		<false>false</false>
		<null />
		<array />
		<object />
		<address>50 St. James Street</address>
		<url>http://www.JSON.org/</url>
		<comment>// /* &lt;!-- --</comment>
		<_x0023__x0020_--_x0020_--_x003E__x0020__x002A__x002F_> </_x0023__x0020_--_x0020_--_x003E__x0020__x002A__x002F_>
		<_x0020_s_x0020_p_x0020_a_x0020_c_x0020_e_x0020_d_x0020_>
			<item>1</item>
			<item>2</item>
			<item>3</item>
			<item>4</item>
			<item>5</item>
			<item>6</item>
			<item>7</item>
		</_x0020_s_x0020_p_x0020_a_x0020_c_x0020_e_x0020_d_x0020_>
		<compact>
			<item>1</item>
			<item>2</item>
			<item>3</item>
			<item>4</item>
			<item>5</item>
			<item>6</item>
			<item>7</item>
		</compact>
		<jsontext>{""object with 1 member"":[""array with 1 element""]}</jsontext>
		<quotes>&amp;#34; "" %22 0x22 034 &amp;#x22;</quotes>
		<"         + "_x002F__x005C__x0022_\uCAFE\uBABE_xAB98__xFCDE_\uBCDA_xEF4A__x0008__x000C__x000A__x000D__x0009__x0060_1_x007E__x0021__x0040__x0023__x0024__x0025__x005E__x0026__x002A__x0028__x0029___x002B_-_x003D__x005B__x005D__x007B__x007D__x007C__x003B__x003A__x0027__x002C_._x002F__x003C__x003E__x003F_" + @">A key can be any string</" + "_x002F__x005C__x0022_\uCAFE\uBABE_xAB98__xFCDE_\uBCDA_xEF4A__x0008__x000C__x000A__x000D__x0009__x0060_1_x007E__x0021__x0040__x0023__x0024__x0025__x005E__x0026__x002A__x0028__x0029___x002B_-_x003D__x005B__x005D__x007B__x007D__x007C__x003B__x003A__x0027__x002C_._x002F__x003C__x003E__x003F_" + @">
	</item>
	<item>0.5</item>
	<item>98.6</item>
	<item>99.44</item>
	<item>1066</item>
	<item>10</item>
	<item>1</item>
	<item>0.1</item>
	<item>1</item>
	<item>2</item>
	<item>2</item>
	<item>rosebud</item>
</array>";

            var jsonTokenizer = new JsonReader.JsonTokenizer();
            var tokens1       = jsonTokenizer.GetTokens(inputJson);

            var writerSettings = new DataWriterSettings {
                PrettyPrint = true
            };
            var xmlFormatter = new TransformFormatter <ModelTokenType, MarkupTokenType>(new XmlWriter.XmlFormatter(writerSettings), new XmlWriter.XmlOutTransformer(writerSettings));
            var actualXml    = xmlFormatter.Format(tokens1);

            Assert.Equal(expectedXml, actualXml);

            const string expectedJson = @"[""JSON Test Pattern pass1"",{""object with 1 member"":[""array with 1 element""]},{},[],-42,true,false,null,{""integer"":1234567890,""real"":-9876.54321,""e"":1.23456789e-13,""E"":1.23456789e+34,"""":2.3456789012e+76,""zero"":0,""one"":1,""space"":"" "",""quote"":""\"""",""backslash"":""\\"",""controls"":""\b\f\n\r\t"",""slash"":""/ & /"",""alpha"":""abcdefghijklmnopqrstuvwyz"",""ALPHA"":""ABCDEFGHIJKLMNOPQRSTUVWYZ"",""digit"":""0123456789"",""0123456789"":""digit"",""special"":""`1~!@#$%^&*()_+-={':[,]}|;.\u003C/>?"",""hex"":""\u0123\u4567\u89AB\uCDEF\uABCD\uEF4A"",""true"":true,""false"":false,""null"":null,""array"":[],""object"":{},""address"":""50 St. James Street"",""url"":""http://www.JSON.org/"",""comment"":""// /* \u003C!-- --"",""# -- --> */"":"" "","" s p a c e d "":[1,2,3,4,5,6,7],""compact"":[1,2,3,4,5,6,7],""jsontext"":""{\""object with 1 member\"":[\""array with 1 element\""]}"",""quotes"":""&#34; \"" %22 0x22 034 &#x22;"",""/\\\""\uCAFE\uBABE\uAB98\uFCDE\uBCDA\uEF4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./\u003C>?"":""A key can be any string""},0.5,98.6,99.44,1066,10,1,0.1,1,2,2,""rosebud""]";

            var readerSettings = new DataReaderSettings(writerSettings.Resolver);
            var xmlTokenizer   = new TransformTokenizer <MarkupTokenType, ModelTokenType>(new XmlReader.XmlTokenizer(), new XmlReader.XmlInTransformer(readerSettings));
            var tokens2        = xmlTokenizer.GetTokens(actualXml);

            var jsonFormatter = new JsonWriter.JsonFormatter(new DataWriterSettings {
                PrettyPrint = false
            });
            var actualJson = jsonFormatter.Format(tokens2);

            Assert.Equal(expectedJson, actualJson);
        }
Esempio n. 19
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="settings"></param>
 public JsonReader(DataReaderSettings settings)
     : base(settings != null ? settings : new DataReaderSettings())
 {
 }