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; } } }
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; } } }
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; }
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); } }
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); }
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(); }
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); }
/// <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); }
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); } }
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); }
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); } }
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; } }
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); }
/// <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; } } }
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); }
/// <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)); }
/// <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; } } }
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); }
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); }