public async Task <ActionResult <WineModel> > GetWine(int id)
        {
            Cql cql = new($"WHERE id=? allow filtering", id);

            return(await CassandraConnection.GetInstance().GetRecord <WineModel>(cql)
                   .ConfigureAwait(false));
        }
示例#2
0
        virtual public void Connect(Session owner, bool moveNext, out int streamId)
        {
            if (_hostsIter == null)
            {
                _hostsIter = owner.Policies.LoadBalancingPolicy.NewQueryPlan(Statement).GetEnumerator();
                if (!_hostsIter.MoveNext())
                {
                    var ex = new NoHostAvailableException(new Dictionary <IPAddress, List <Exception> >());
                    _logger.Error(ex);
                    throw ex;
                }
            }
            else
            {
                if (moveNext)
                {
                    if (!_hostsIter.MoveNext())
                    {
                        var ex = new NoHostAvailableException(InnerExceptions);
                        _logger.Error(ex);
                        throw ex;
                    }
                }
            }

            Connection = owner.Connect(_hostsIter, TriedHosts, InnerExceptions, out streamId);
        }
示例#3
0
        public IActionResult Index([FromQuery] string k)
        {
            // Create the return object
            QueryResult queryResult = new QueryResult()
            {
                URL = null
            };

            // Return empty if no key specified in query string
            if (k == null || k == string.Empty)
            {
                return(View(queryResult));
            }

            // Make a connection to Cassandra and get a session
            CassandraConnection cassandraConnection = new CassandraConnection();
            ISession            csSession           = cassandraConnection.GetSession();

            URLLookup urlLookup = new URLLookup(csSession);

            // Get the actual long URL
            if (!urlLookup.LookupURL(k, out string url))
            {
                // Return NotFound page if key doesn't exist
                return(NotFound());
            }

            // Attache the URL to the result object
            queryResult.URL = url;

            // Return result
            return(View(queryResult));
        }
示例#4
0
        public async Task <UserModel> GetUser(int id)
        {
            Cql cql = new($"SELECT * FROM {tableName} WHERE userid=?", id);

            return(await CassandraConnection.GetInstance().GetRecord <UserModel>(cql)
                   .ConfigureAwait(false));
        }
        /// <summary>
        /// Retrieve data for recommendation
        /// </summary>
        /// <param name="cql">Cql request</param>
        /// <returns>List of wines</returns>
        public static async Task <List <WineModel> > GetWineData(Cql cql, int limit)
        {
            var result = await CassandraConnection.GetInstance()
                         .GetByRequestData <WineModel>(cql);

            return(new List <WineModel>().CopyElements(result, limit));
        }
示例#6
0
        public void CreateAnswers_WhenSendAValidObject_ShouldCreateAndReturnObject()
        {
            var connectionMock = new CassandraConnection("answers", "localhost");
            var mapperMock     = new Mock <IMapper>();
            var expected       = new EvaluationScore()
            {
                Id            = Guid.NewGuid(),
                IdEvaluation  = Guid.NewGuid(),
                Qualification = Guid.NewGuid(),
                Date          = DateTime.Now,
                Name          = "TestName",
                Owner         = "TestOwner",
                Score         = 50,
                ScoreFormula  = "Formula",
                Weight        = 12,
                QuestionList  = new List <QuestionScore>()
                {
                    new QuestionScore()
                    {
                        IdQuestion   = Guid.NewGuid(),
                        Answers      = new List <Guid>(),
                        Score        = 5,
                        ScoreFormula = "QS1",
                        OptionList   = new List <OptionScore>()
                        {
                            new OptionScore()
                            {
                                IdOption = Guid.NewGuid(), IsAnswer = true, Sequence = 1, UserSelected = false, Weight = 3
                            }
                        }
                    },
                    new QuestionScore()
                    {
                        IdQuestion   = Guid.NewGuid(),
                        Answers      = new List <Guid>(),
                        Score        = 5,
                        ScoreFormula = "QS2",
                        OptionList   = new List <OptionScore>()
                    },
                },
                QualificationRanges = new List <QualificationRange>()
                {
                    new QualificationRange()
                    {
                        Id = Guid.NewGuid(), Start = 100, End = 0, Qualification = "GOOD"
                    }
                },
            };

            mapperMock.Setup(m => m.Insert(expected, null)).Verifiable();
            mapperMock.Setup(m => m.Single <EvaluationScore>(It.IsAny <string>(), It.IsAny <Guid>())).Returns(expected);

            var answerDao = new AnswersDao(MockUtils.MockConnectionFactory(mapperMock));
            var response  = answerDao.CreateAnswers(expected);

            Assert.Equal(expected.Id, response.Id);
        }
示例#7
0
        public UserRepository()
        {
            const string getUserByName = "SELECT * FROM users WHERE username = :username";
            const string createUser    = "******";

            _cassandraConnection = CassandraConnection.GetInstance();
            _getUserByName       = _cassandraConnection.PreparedStatement(getUserByName);
            _createUser          = _cassandraConnection.PreparedStatement(createUser);
        }
示例#8
0
        public BlogRepository()
        {
            const string getAllBlogs = "SELECT * FROM blogs";
            const string createBlog  = "INSERT INTO blogs (id, content, date, title, writer) VALUES (now(), :content, :date, :title, :writer)";

            _cassandraConnection = CassandraConnection.GetInstance();
            _userRepository      = new UserRepository();
            _getAllBlogs         = _cassandraConnection.PreparedStatement(getAllBlogs);
            _createBlog          = _cassandraConnection.PreparedStatement(createBlog);
        }
        public HttpResponseMessage Reset()
        {
            var connection = CassandraConnection.GetInstance();

            foreach (var table in connection.GetTables())
            {
                connection.ExecuteNonReader($"TRUNCATE TABLE {CassandraConnection.KeySpace}.{table}");
            }

            return(Request.CreateResponse(HttpStatusCode.OK));
        }
示例#10
0
        /// <summary>
        /// Retrieve selected wines from DB by their IDs
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public static async Task <List <WineModel> > GetSelectedData(int[] ids)
        {
            List <WineModel> selectedWines = new List <WineModel>();

            foreach (int id in ids)
            {
                Cql cql = new("WHERE id=? allow filtering", id);
                selectedWines.Add(await CassandraConnection.GetInstance().GetRecord <WineModel>(cql));
            }

            return(selectedWines);
        }
        public async Task <IEnumerable <WineModel> > GetWines([FromQuery] int page)
        {
            int startIndex = _pageSize * (page - 1);

            Cql cql = new($"SELECT * FROM {_tableName} where id >= ? and id < ? allow filtering", startIndex, startIndex + _pageSize);

            var temp = await CassandraConnection.GetInstance().GetByRequestData <WineModel>(cql);

            List <WineModel> result = temp.ToList().OrderBy(wine => wine.Id).ToList();

            return(result);
        }
示例#12
0
        public async Task UpdateUserInfo(int id, string name, string email)
        {
            Cql cql = new("WHERE userid=?", id);

            var user = await CassandraConnection.GetInstance().GetRecord <UserModel>(cql)
                       .ConfigureAwait(false);

            UserModel newUser = new UserModel {
                Email    = email,
                Name     = name,
                UserId   = user.UserId,
                Password = user.Password
            };

            await CassandraConnection.GetInstance().UpdateRecord(newUser)
            .ConfigureAwait(false);
        }
        public async Task <JsonResult> GetFilteredWinesByPage(string color, string wine_type, string country, string vintage, int page)
        {
            Cql cql = new(WineControllerHelper.GenerateFilterCql(_tableName, color, wine_type, country, vintage));

            var tempList = (await CassandraConnection.GetInstance().GetByRequestData <WineModel> (cql)).ToList();
            List <WineModel> sortedResult = tempList.OrderBy(a => a.Id).ToList();

            int startIndex = _pageSize * (page - 1);
            int endIndex   = startIndex + _pageSize;

            var pagedList    = new List <WineModel>();
            int loopEndIndex = endIndex > tempList.Count ? tempList.Count : endIndex;

            for (int i = startIndex; i < loopEndIndex; i++)
            {
                pagedList.Add(sortedResult[i]);
            }

            return(new JsonResult(new FilterResult()
            {
                WineList = pagedList,
                Count = tempList.Count
            }));
        }
        public async Task <int> GetNumberOfWines()
        {
            Cql cql = new($"select id from {_tableName}");

            return(await CassandraConnection.GetInstance().GetNumberOfRecords <WineModel>(cql));
        }
示例#15
0
 public async Task DeleteUser(int id)
 {
     Cql cql = new("WHERE userid=?", id);
     await CassandraConnection.GetInstance().DeleteRecord <UserModel>(cql)
     .ConfigureAwait(false);
 }
示例#16
0
 public async Task AddUser(UserModel user)
 {
     await CassandraConnection.GetInstance().AddRecord(user)
     .ConfigureAwait(false);
 }
        public object Index([FromForm] string url)
        {
            // Create object to return
            APIResult result = new APIResult()
            {
                Status     = (int)APIStatus.Failure,
                Message    = "",
                URL        = url,
                Shortcut   = string.Empty,
                Popularity = 0
            };

            // Get the URL's SHA512 & SHA256 hash
            string sha512 = SHA512Hash.GetSHA512Hash(url);
            string sha256 = SHA256Hash.GetSHA256Hash(url);

            // Open up a connection to Cassandra
            CassandraConnection csConnection = new CassandraConnection();

            // Get connection session
            ISession csSession = csConnection.GetSession();

            // Lookup database and return the URL's signature if it exists
            SignatureLookup signatureLookup = new SignatureLookup(csSession);

            if (signatureLookup.LookupSignature(sha512, sha256, out string signature, out long hits))
            {
                result.Shortcut   = this.MakeShortcut(signature);
                result.Popularity = hits;
                result.Status     = (int)APIStatus.Success;
                return(Json(result));
            }

            // Get total URL count from the running service
            long id = 0;

            try
            {
                const string BOT           = "<~BOT~>";
                const string EOT           = "<~EOT~>";
                const string COMMAND_COUNT = "COUNT";

                string message = string.Format("{0}{1}{2}", BOT, COMMAND_COUNT, EOT);
                string ip      = "127.0.0.1";
                int    port    = 7079;

                AsyncClientSocket asyncClientSocket = new AsyncClientSocket();
                asyncClientSocket.Transmit(ip, port, message, out string response);
                //SyncClientSocket.Transmit(ip, port, message, out string response);

                if (response == string.Empty)
                {
                    result.Message = "Service Unavailable!";
                    return(Json(result));
                }

                id = long.Parse(response);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            // Prepare dictionary
            char[] dictionary =
            {
                'A', 'B', 'C', 'D', 'E', 'F',
                'G', 'H', 'I', 'J', 'K', 'L',
                'M', 'N', 'O', 'P', 'Q', 'R',
                'S', 'T', 'U', 'V', 'W', 'X',
                'Y', 'Z',

                'a', 'b', 'c', 'd', 'e', 'f',
                'g', 'h', 'i', 'j', 'k', 'l',
                'm', 'n', 'o', 'p', 'q', 'r',
                's', 't', 'u', 'v', 'w', 'x',
                'y', 'z',

                '0', '1', '2', '3', '4', '5',
                '6', '7', '8', '9'
            };

            // Get signature
            signature = BaseN.ChangeBase(id, dictionary);

            // Unique signature is now set
            result.Shortcut = this.MakeShortcut(signature);

            // Insert the new URL into the database
            URLInsertion urlInsertion = new URLInsertion(csSession);

            if (urlInsertion.InsertURL(url, signature, sha512, sha256))
            {
                result.Popularity = 1;
                result.Status     = (int)APIStatus.Success;
            }

            return(Json(result));
        }
示例#18
0
        static void Main(string[] args)
        {
            DateTime start = Config.ParseDateTimeLocal(args[0]);
            DateTime end   = Config.ParseDateTimeLocal(args[1]);
            PROBLEM  pb    = (PROBLEM)Enum.Parse(typeof(PROBLEM), args[2]);

            Dictionary <string, string> dicSettings = new Dictionary <string, string>();

            dicSettings["APP_NAME"]        = "Midax";
            dicSettings["LIMIT"]           = "10";
            dicSettings["DB_CONTACTPOINT"] = "192.168.1.25";
            dicSettings["REPLAY_MODE"]     = "CSV";
            dicSettings["TRADING_MODE"]    = "CALIBRATION";
            Config.Settings = dicSettings;

            // read market data and indicator values
            var marketData    = new Dictionary <string, List <CqlQuote> >();
            var indicatorData = new Dictionary <string, List <CqlQuote> >();
            var profitData    = new Dictionary <string, List <double> >();

            string[] ids = new string[1];
            ids[0] = "CS.D.EURUSD.TODAY.IP";
            while (start <= end)
            {
                List <string> mktdataFiles = new List <string>();
                mktdataFiles.Add(string.Format("..\\..\\..\\MarketSelector\\MktSelectorData\\mktselectdata_{0}_{1}_{2}.csv", start.Day, start.Month, start.Year));
                Config.Settings["REPLAY_CSV"]            = Config.TestList(mktdataFiles);
                Config.Settings["PUBLISHING_START_TIME"] = string.Format("{0}-{1}-{2} {3}:{4}:{5}", start.Year, start.Month, start.Day, 6, 45, 0);
                Config.Settings["PUBLISHING_STOP_TIME"]  = string.Format("{0}-{1}-{2} {3}:{4}:{5}", start.Year, start.Month, start.Day, 18, 0, 0);
                Config.Settings["TRADING_START_TIME"]    = string.Format("{0}-{1}-{2} {3}:{4}:{5}", start.Year, start.Month, start.Day, 8, 0, 0);
                Config.Settings["TRADING_STOP_TIME"]     = string.Format("{0}-{1}-{2} {3}:{4}:{5}", start.Year, start.Month, start.Day, 17, 0, 0);
                Config.Settings["TRADING_CLOSING_TIME"]  = string.Format("{0}-{1}-{2} {3}:{4}:{5}", start.Year, start.Month, start.Day, 16, 55, 0);
                //Config.Settings["PUBLISHING_CSV"] = string.Format("..\\..\\CalibrationData\\calibdata_{0}_{1}_{2}.csv", start.Day, start.Month, start.Year);

                var client = new ReplayStreamingClient();
                client.Connect();
                Dictionary <string, List <CqlQuote> > curDayMktData = client.GetReplayData(ids);
                foreach (var keyVal in curDayMktData)
                {
                    var processableMktData = new List <CqlQuote>();
                    foreach (var quote in keyVal.Value)
                    {
                        if (client.ExpectedIndicatorData["EMA_90_" + ids[0]].Select(cqlq => cqlq.t).Contains(quote.t))
                        {
                            processableMktData.Add(quote);
                        }
                    }
                    if (marketData.ContainsKey(keyVal.Key))
                    {
                        marketData[keyVal.Key].AddRange(processableMktData);
                    }
                    else
                    {
                        marketData[keyVal.Key] = processableMktData;
                    }
                }
                foreach (var keyVal in client.ExpectedIndicatorData)
                {
                    if (indicatorData.ContainsKey(keyVal.Key))
                    {
                        indicatorData[keyVal.Key].AddRange(keyVal.Value);
                    }
                    else
                    {
                        indicatorData[keyVal.Key] = keyVal.Value;
                    }
                }
                foreach (var keyVal in client.ExpectedProfitData)
                {
                    if (!profitData.ContainsKey(keyVal.Key.Key))
                    {
                        profitData[keyVal.Key.Key] = new List <double>();
                    }
                    profitData[keyVal.Key.Key].Add(keyVal.Value);
                }

                // process next day
                do
                {
                    start = start.AddDays(1);
                }while (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday);
            }

            NeuralNetworkForCalibration ann = null;
            var maxError = 1e-5;

            switch (pb)
            {
            case PROBLEM.PARITY:
                ann = new NeuralNetworkParity("Parity-3");
                ann.Train();
                break;

            case PROBLEM.WMA:
                ann      = new NeuralNetworkWMA_5_2(ids[0], marketData, indicatorData, profitData);
                maxError = 5.0;
                break;

            case PROBLEM.FX:
                ann      = new NeuralNetworkFX(ids[0], marketData, indicatorData, profitData);
                maxError = 5.0;
                break;
            }
            if (ann == null)
            {
                MessageBox.Show("Could not instanciate the Neural Network", "Error");
            }
            else
            {
                using (AnnVisualizer visualizer = new AnnVisualizer(ann))
                {
                    ann.Train(maxError);
                    CassandraConnection DBconnection = (CassandraConnection)PublisherConnection.Instance.Database;
                    if (ann.Version > 0)
                    {
                        var          prevError        = DBconnection.GetAnnError(ann.AnnId, ann.StockId, ann.Version - 1);
                        var          prevLearningRate = DBconnection.GetAnnLearningRate(ann.AnnId, ann.StockId, ann.Version - 1);
                        DialogResult dialogResult     = MessageBox.Show(string.Format("The calibration error is {0} (Previously was {1}).\n The learning rate is {2}% (Previously was {3}).\n Would you like to publish the weights to production DB?",
                                                                                      ann.Error, prevError, ann.LearningRatePct, prevLearningRate), ann.GetType().ToString(), MessageBoxButtons.YesNo);
                        if (dialogResult == DialogResult.Yes)
                        {
                            PublisherConnection.Instance.Insert(DateTime.Now, ann);
                        }
                    }
                    else
                    {
                        DialogResult dialogResult = MessageBox.Show(string.Format("The calibration error is {0}.\n The learning rate is {1}%.\n Would you like to publish the weights to production DB?",
                                                                                  ann.Error, ann.LearningRatePct), ann.GetType().ToString(), MessageBoxButtons.YesNo);
                        if (dialogResult == DialogResult.Yes)
                        {
                            PublisherConnection.Instance.Insert(DateTime.Now, ann);
                        }
                    }
                }
            }
        }