コード例 #1
0
        public SystemContainer(BlockingCollection<Operations> BlockingQueue, DateTime limitTime)
        {
            _BlockingQueue = BlockingQueue;
            IEnumerable<Int32> keys;
            TSystem system;

            lock (Program.usersLock)
            {
                keys = from key in Program.idUsers.Keys select key;
            }
            List<DBResult> loadedResult = Program.remoteDbHandler.GetSystemsLastPositions(keys.ToList<Int32>(), limitTime);
            lock (lockSystems)
            {
                foreach (DBResult loadedResultItem in loadedResult)
                {
                    try
                    {
                        system = OldSystems[loadedResultItem.SystemId];
                    }
                    catch (KeyNotFoundException)
                    {
                        system = new TSystem(loadedResultItem.SystemId);
                    }
                    system.AddPosition(loadedResultItem);
                    OldSystems[loadedResultItem.SystemId] = system;
                }
            }
        }
コード例 #2
0
        public SystemContainer(BlockingCollection <Operations> BlockingQueue, DateTime limitTime)
        {
            _BlockingQueue = BlockingQueue;
            IEnumerable <Int32> keys;
            TSystem             system;

            lock (Program.usersLock)
            {
                keys = from key in Program.idUsers.Keys select key;
            }
            List <DBResult> loadedResult = Program.remoteDbHandler.GetSystemsLastPositions(keys.ToList <Int32>(), limitTime);

            lock (lockSystems)
            {
                foreach (DBResult loadedResultItem in loadedResult)
                {
                    try
                    {
                        system = OldSystems[loadedResultItem.SystemId];
                    }
                    catch (KeyNotFoundException)
                    {
                        system = new TSystem(loadedResultItem.SystemId);
                    }
                    system.AddPosition(loadedResultItem);
                    OldSystems[loadedResultItem.SystemId] = system;
                }
            }
        }
コード例 #3
0
ファイル: Parser.cs プロジェクト: thisiscam/formula
        private void StartTSystem(string name, Span span)
        {
            Contract.Requires(currentModule == null);
            var tsys = new TSystem(span, name);

            parseResult.Program.Node.AddModule(tsys);
            crntModRefState = ModRefState.Input;
            currentModule   = tsys;
        }
コード例 #4
0
        private void addUserButton_Click(object sender, EventArgs e)
        {
            var dialog = new AddUserForm();

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                TSystem.AddUser(Admin, dialog.newUser);
                searchButton_Click(sender, e);
            }
        }
コード例 #5
0
        public TSystem GetSystem <TSystem>() where TSystem : IEditorSystem, new()
        {
            if (_systems.TryGetValue(typeof(TSystem), out var system))
            {
                return((TSystem)system);
            }

            system = new TSystem();
            AddSystem(system);
            return((TSystem)system);
        }
コード例 #6
0
        private void searchButton_Click(object sender, EventArgs e)
        {
            var list = nameRadioButton.Checked ? TSystem.GetUsersByName(Admin, searchTextBox.Text) : TSystem.GetUsersByEMail(Admin, searchTextBox.Text);

            usersListBox.Items.Clear();
            foreach (var user in list)
            {
                usersListBox.Items.Add(user);
            }
            usersListBox.Refresh();
        }
コード例 #7
0
 private void saveButton_Click(object sender, EventArgs e)
 {
     if (_selectedUser == null)
     {
         return;
     }
     _selectedUser.Name    = nameTextBox.Text;
     _selectedUser.EMail   = emailTextBox.Text;
     _selectedUser.IsAdmin = adminRadioButton.Checked;
     TSystem.EditUser(Admin, _selectedUser);
     searchButton_Click(sender, e);
 }
コード例 #8
0
        /// <inheritdoc />
        public TSystem[] Get <TSystem>() where TSystem : ISystem
        {
            if (!_data.TryGetValue(typeof(TSystem), out var value))
            {
                return(Array.Empty <TSystem>());
            }

            var result = new TSystem[value.Length];

            Array.Copy(value, result, value.Length);
            return(result);
        }
コード例 #9
0
        private void passwordButton_Click(object sender, EventArgs e)
        {
            if (_selectedUser == null)
            {
                return;
            }
            var dialog = new PasswordForm();

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                TSystem.PasswordChange(Admin, _selectedUser, dialog.newPass);
            }
        }
コード例 #10
0
 private void deleteButton_Click(object sender, EventArgs e)
 {
     if (_selectedUser == null)
     {
         return;
     }
     if (MessageBox.Show("Do you really want to delete User: \n" + _selectedUser.Name, "Delete User",
                         MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
     {
         return;
     }
     TSystem.RemoveUser(Admin, _selectedUser);
     searchButton_Click(sender, e);
 }
コード例 #11
0
 public void AddElement(DBResult element)
 {
     TSystem selectedSystem;
     try
     {
         selectedSystem = NewSystems[element.SystemId];
         selectedSystem.AddPosition(element);
     }
     catch (KeyNotFoundException)
     {
         selectedSystem = new TSystem(element.SystemId);
         selectedSystem.AddPosition(element);
         NewSystems.Add(element.SystemId, selectedSystem);
     }
 }
コード例 #12
0
        public void AddElement(DBResult element)
        {
            TSystem selectedSystem;

            try
            {
                selectedSystem = NewSystems[element.SystemId];
                selectedSystem.AddPosition(element);
            }
            catch (KeyNotFoundException)
            {
                selectedSystem = new TSystem(element.SystemId);
                selectedSystem.AddPosition(element);
                NewSystems.Add(element.SystemId, selectedSystem);
            }
        }
コード例 #13
0
 public void AddElement(DBResult element)
 {
     TSystem selectedSystem;
     lock (lockSystems)
     {
         try
         {
             selectedSystem = NewSystems[element.SystemId];
         }
         catch (KeyNotFoundException)
         {
             selectedSystem = new TSystem(element.SystemId);
         }
         selectedSystem.AddPosition(element);
         NewSystems[element.SystemId] = selectedSystem;
     }
 }
コード例 #14
0
        public TSystem CreateSystem <TSystem>() where TSystem : class, IGraphicSystem, new()
        {
            var sys = new TSystem();

            if (sys is IComponentSystemIncrementId incrementId)
            {
                incrementId.ID = systems.Count;
            }

            if (sys is IGraphicSystemContextDependent dependent)
            {
                dependent.ContextState = context;
            }

            systems.Add(sys);
            notify.NotifyAdd <IGraphicSystem>(sys);
            return(sys);
        }
コード例 #15
0
        public void AddElement(DBResult element)
        {
            TSystem selectedSystem;

            lock (lockSystems)
            {
                try
                {
                    selectedSystem = NewSystems[element.SystemId];
                }
                catch (KeyNotFoundException)
                {
                    selectedSystem = new TSystem(element.SystemId);
                }
                selectedSystem.AddPosition(element);
                NewSystems[element.SystemId] = selectedSystem;
            }
        }
コード例 #16
0
        /// <summary>
        /// Add selected providers systems
        /// </summary>
        /// <param name="datasToProcess"></param>
        public void InitializeSystems(List <DBResult> datasToProcess)
        {
            TSystem system;

            lock (lockSystems)
            {
                foreach (DBResult dataItem in datasToProcess)
                {
                    try
                    {
                        system = OldSystems[dataItem.SystemId];
                    }
                    catch (KeyNotFoundException)
                    {
                        system = new TSystem(dataItem.SystemId);
                    }
                    system.AddPosition(dataItem);
                    OldSystems[dataItem.SystemId] = system;
                }
            }
        }
コード例 #17
0
ファイル: Scene.cs プロジェクト: kennux/PathTracer
        public TSystem GetOrCreateLightSystem <TSystem>() where TSystem : class, ISceneLightSystem, new()
        {
            TSystem sys = null;

            foreach (var lightSystem in lightSystems)
            {
                sys = lightSystem as TSystem;
                if (sys != null)
                {
                    break;
                }
            }

            if (sys == null)
            {
                sys = new TSystem();
                this.lightSystems.Add(sys);
            }

            return(sys);
        }
コード例 #18
0
        /// <summary>
        /// 添加系统信息
        /// </summary>
        /// <param name="systemAddDto"></param>
        /// <returns></returns>
        public int AddSystemInfo(SystemAddDto systemAddDto)
        {
            string Code;

            if (string.IsNullOrEmpty(systemAddDto.Code))
            {
                Code = IocUnity.Get <RepositorySystem>().GetNextSystemCode();
            }
            else
            {
                Code = systemAddDto.Code;
            }
            TSystem system = new TSystem
            {
                Id          = IdentityHelper.NewSequentialGuid().ToString("N"),
                Name        = systemAddDto.Name,
                EnglishName = systemAddDto.EnglishName,
                Instruction = systemAddDto.Instruction,
                LogoUrl     = systemAddDto.LogoUrl,
                Code        = Code
            };

            return(IocUnity.Get <RepositorySystem>().Insert(system));
        }
コード例 #19
0
 /// <summary>
 /// Add selected providers systems
 /// </summary>
 /// <param name="datasToProcess"></param>
 public void InitializeSystems(List<DBResult> datasToProcess)
 {
     TSystem system;
     lock (lockSystems)
     {
         foreach (DBResult dataItem in datasToProcess)
         {
             try
             {
                 system = OldSystems[dataItem.SystemId];
             }
             catch (KeyNotFoundException)
             {
                 system = new TSystem(dataItem.SystemId);
             }
             system.AddPosition(dataItem);
             OldSystems[dataItem.SystemId] = system;
         }
     }
 }
コード例 #20
0
        private List <Operations> GetDifferent(Dictionary <Int32, TSystem> oldSystems, Dictionary <Int32, TSystem> newSystems)
        {
            List <Operations> finded = new List <Operations>();

            int keyCount = newSystems.Keys.Count;

            for (int i = 0; i < keyCount; ++i)
            {
                int     key       = newSystems.Keys.ElementAt(i);
                TSystem newSystem = newSystems[key];

                newSystem.SimplyToLastPosition();

                Operations operations = new Operations(key);

                try
                {
                    TSystem oldSystem = oldSystems[key];

                    List <DBResult> oldSystemItems = oldSystem.GetPositions();
                    List <DBResult> newSystemItems = newSystem.GetPositions();
                    // Пошук одинакових записів по символу в межах СИСТЕМИ
                    for (int j = 0; j < newSystemItems.Count; ++j)
                    {
                        IEnumerable <DBResult> selectedItems = from item in oldSystemItems
                                                               where item.Symbol.CompareTo(newSystemItems[j].Symbol) == 0 //i <---!!!!
                                                               select item;
                        /* якщо щось знайдено тоді */
                        if (selectedItems.Count() != 0)
                        {
                            System.Console.WriteLine("Found somthing in old list");
                            if (selectedItems.Count() == 0)
                            {
                                System.Console.WriteLine("Error is SystemContainers???");
                            }
                            List <OrdersReq> res = CreateOrder(selectedItems.ElementAt(0), newSystemItems.ElementAt(j));
                            operations.Requests.AddRange(res); // <--- Add to global list
                            oldSystemItems.Remove(selectedItems.ElementAt(0));
                            oldSystemItems.Add(newSystemItems.ElementAt(j));
                        }
                        /* якщо нічого не знайдено тоді ми маємо новий */
                        else
                        {
                            System.Console.WriteLine("Nothing found in new list");
                            List <OrdersReq> res = CreateOrder(selectedItems.ElementAt(0));
                            operations.Requests.AddRange(res); // <--- Add to global list
                            oldSystemItems.Add(newSystemItems.ElementAt(j));
                        }
                    }
                }
                catch (KeyNotFoundException)
                {
                    // Create operations
                    List <DBResult> newSystemItems = newSystem.GetPositions();
                    foreach (DBResult item in newSystemItems)
                    {
                        operations.Requests.AddRange(CreateOrder(item));
                    }
                    // Add new System to dictionery
                    oldSystems[key] = newSystem;
                }
                finded.Add(operations);
            }
            return(finded);
        }
コード例 #21
0
        public List <Order> solve(String userID, Int64 systemID, DateTime endTime)
        {
            // Пролема полягатиме в тому, що коли при відновленні позицій обєкт клієнта виставлятиме позиції,
            // то після їх підтвредження він буде шукати наступні оредри в черзі. А за час додавання можливо добавиться в чергу якийсь ордер. Треба це
            // якось обробити в плоть до того що ще в базі можуть бути  ордери які залишились незафіленими з давана

            //Другий момент полягає в тому що коли будеться робитись щось з словником потрібно доступ до нього синхронізувати
            //Обєкт синхронізації віляєтьтся в Program.cs

            //Позиції провайдера мають запистуватись не з бази а з програмою збереженого списку позицій.
            double          userMoney = 0.0;
            List <Position> userPositions;
            List <Position> providerPositions;
            List <Order>    syncOrders = new List <Order>();

            //1.Get user money
            //2.Get client last poss and verify it
            userPositions = Program.localDbHandler.GetUserLastPositions(userID, systemID);

            //3.Get provider last poss and verify it
            //providerPositions = Program.remoteDbHandler.GetProviderLastPosition(systemID, endTime);
            Dictionary <Int32, TSystem> systems = Program.systemContainer.GetOldSystems();
            TSystem system = systems[(Int32)systemID];

            providerPositions = system.GetPositionsList();

            if (providerPositions == null || providerPositions.Count == 0)
            {
                Program.WriteError("Provider positions in SynchronizationSolver.solve() is null or empty");
                return(syncOrders);
            }
            //4.Compare and get diff positions into an order
            Boolean finded = false;

            for (int i = 0; i < providerPositions.Count; ++i)
            {
                finded = false;
                for (int j = 0; j < userPositions.Count; ++j)
                {
                    if (providerPositions[i].symbol.Trim() == userPositions[j].symbol.Trim())
                    {
                        finded = true;
                        if (providerPositions[i].qty != userPositions[j].qty ||
                            providerPositions[i].direction != userPositions[j].direction)
                        {
                            Position pos   = providerPositions[i] - userPositions[j];
                            Order    order = pos.ToOrder();
                            order.FromID = systemID;
                            syncOrders.Add(order);
                            userPositions.RemoveAt(j);
                            break;
                        }
                        else
                        {
                            userPositions.RemoveAt(j);
                        }
                    }
                }
                if (!finded)
                {
                    if (providerPositions[i].qty != 0.0)
                    {
                        Order order = providerPositions[i].ToOrder();
                        order.FromID = systemID;
                        syncOrders.Add(order);
                    }
                }
            }
            if (userPositions.Count != 0)
            {
                Program.WriteError("May be som error in SynchronizationSolver.solve() becouse after all iterations of loop user pos list not empty");
            }
            //5.Calc required money
            return(syncOrders);
        }