aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-11-12 20:38:57 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-11-12 20:38:57 +0200
commit14e4bd850fa6730eecd7d15bd7044f364b41c986 (patch)
tree4e1945a18def6d1c91f239b2b4dbf6e11c0d51db /Software/Visual_Studio/PPC
parent775f0015321f91aa5be3aca079e289e89d4719f5 (diff)
downloadTango-14e4bd850fa6730eecd7d15bd7044f364b41c986.tar.gz
Tango-14e4bd850fa6730eecd7d15bd7044f364b41c986.zip
Working on data store view.
Diffstat (limited to 'Software/Visual_Studio/PPC')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/DataStore/DefaultDataStoreService.cs75
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj6
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Connectivity/DefaultConnectivityProvider.cs2
3 files changed, 79 insertions, 4 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/DataStore/DefaultDataStoreService.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/DataStore/DefaultDataStoreService.cs
index 7c8cf4158..6cae220aa 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/DataStore/DefaultDataStoreService.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/DataStore/DefaultDataStoreService.cs
@@ -18,6 +18,8 @@ using Tango.Transport;
using Tango.Core.ExtensionMethods;
using Newtonsoft.Json.Linq;
using Tango.BL;
+using Tango.DataStore.Editing;
+using Newtonsoft.Json;
namespace Tango.PPC.Common.DataStore
{
@@ -25,11 +27,14 @@ namespace Tango.PPC.Common.DataStore
public class DefaultDataStoreService : IDataStoreService, IExternalBridgeRequestHandler
{
private IDataStoreManager _manager;
+ private IMachineProvider _machineProvider;
public DefaultDataStoreService(IPPCExternalBridgeService externalBridge, IMachineProvider machineProvider)
{
externalBridge.RegisterRequestHandler(this);
+
+ _machineProvider = machineProvider;
machineProvider.MachineOperator.RegisterRequestHandler<PutDataStoreItemRequest>(OnPutDataStoreItemRequest);
machineProvider.MachineOperator.RegisterRequestHandler<GetDataStoreItemRequest>(OnGetDataStoreItemRequest);
}
@@ -134,13 +139,13 @@ namespace Tango.PPC.Common.DataStore
}
[ExternalBridgeRequestHandlerMethod(typeof(RemoteDataStoreGetAllItemsRequest), RequestHandlerLoggingMode.LogRequestName)]
- public async Task RemoteDataStoreGetAllItemsRequest(RemoteDataStoreGetAllItemsRequest request, String token, ExternalBridgeReceiver receiver)
+ public async Task OnRemoteDataStoreGetAllItemsRequest(RemoteDataStoreGetAllItemsRequest request, String token, ExternalBridgeReceiver receiver)
{
List<RemoteDataStoreCollection> collections = new List<RemoteDataStoreCollection>();
using (ObservablesContext db = ObservablesContext.CreateDefault())
{
- var items = db.DataStoreItems.ToList();
+ var items = db.DataStoreItems.Where(x => !x.IsDeleted).ToList();
foreach (var itemsGroup in items.GroupBy(x => x.CollectionName))
{
@@ -161,6 +166,72 @@ namespace Tango.PPC.Common.DataStore
}, token);
}
+ [ExternalBridgeRequestHandlerMethod(typeof(UpdateDataStoreRequest), RequestHandlerLoggingMode.LogRequestName)]
+ public async Task OnUpdateDataStoreRequest(UpdateDataStoreRequest request, String token, ExternalBridgeReceiver receiver)
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ var allItems = db.DataStoreItems.ToList();
+
+ foreach (var guid in request.ToDelete)
+ {
+ var item = allItems.FirstOrDefault(x => x.Guid == guid);
+ if (item != null)
+ {
+ item.IsDeleted = true;
+ item.IsSynchronized = true;
+ item.LastUpdated = DateTime.UtcNow;
+ }
+ }
+
+ foreach (var item in request.ToUpsert)
+ {
+ var itemDb = allItems.FirstOrDefault(x => x.Guid == item.Guid);
+
+ if (itemDb == null)
+ {
+ itemDb = new BL.Entities.DataStoreItem();
+ itemDb.Guid = item.Guid;
+ db.DataStoreItems.Add(itemDb);
+ }
+
+ itemDb.CollectionName = item.CollectionName;
+ itemDb.DataType = item.DataType;
+ itemDb.IsDeleted = item.IsDeleted;
+ itemDb.IsSynchronized = true;
+ itemDb.Key = item.Key;
+ itemDb.LastUpdated = item.LastUpdated;
+ itemDb.Value = item.Value;
+ }
+
+ db.SaveChanges();
+
+ if (_machineProvider.IsConnected)
+ {
+ Core.Threading.ThreadFactory.StartNew(() =>
+ {
+ foreach (var item in request.ToUpsert)
+ {
+ try
+ {
+ var response = _machineProvider.MachineOperator.SendRequest<DataStoreItemModifiedRequest, DataStoreItemModifiedResponse>(new DataStoreItemModifiedRequest()
+ {
+ Collection = item.CollectionName,
+ Key = item.Key
+ }).Result;
+ }
+ catch (Exception ex)
+ {
+ Logging.LogManager.Default.Log(ex, $"Error notifying firmware about data store item change '{item.CollectionName}.{item.Key}'.");
+ }
+ }
+ });
+ }
+ }
+
+ await receiver.SendGenericResponse(new UpdateDataStoreResponse(), token);
+ }
+
private RemoteDataStoreItem CreateRemoteItem(IDataStoreItem item)
{
RemoteDataStoreItem remote = new RemoteDataStoreItem();
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
index 3d7f11809..2ed04c904 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj
@@ -383,6 +383,10 @@
<Project>{58e8825f-0c96-449c-b320-1e82b0aa876b}</Project>
<Name>Tango.CSV</Name>
</ProjectReference>
+ <ProjectReference Include="..\..\Tango.DataStore.Editing\Tango.DataStore.Editing.csproj">
+ <Project>{ee088ff7-04d1-41fb-9d6a-cedeee7a7b9c}</Project>
+ <Name>Tango.DataStore.Editing</Name>
+ </ProjectReference>
<ProjectReference Include="..\..\Tango.DataStore.EF\Tango.DataStore.EF.csproj">
<Project>{88d9906b-8fc4-4fe0-b7eb-127a0a8fcee4}</Project>
<Name>Tango.DataStore.EF</Name>
@@ -511,7 +515,7 @@
</Target>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Connectivity/DefaultConnectivityProvider.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Connectivity/DefaultConnectivityProvider.cs
index fb5b9796f..5218d9f70 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Connectivity/DefaultConnectivityProvider.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Connectivity/DefaultConnectivityProvider.cs
@@ -182,7 +182,7 @@ namespace Tango.PPC.UI.Connectivity
|| net.NetworkInterfaceType == NetworkInterfaceType.Ethernet3Megabit
|| net.NetworkInterfaceType == NetworkInterfaceType.FastEthernetFx
|| net.NetworkInterfaceType == NetworkInterfaceType.FastEthernetT
- || net.NetworkInterfaceType == NetworkInterfaceType.GigabitEthernet) && net.Name == "Ethernet" && net.OperationalStatus == OperationalStatus.Up)
+ || net.NetworkInterfaceType == NetworkInterfaceType.GigabitEthernet) && net.Name.ToStringOrEmpty().StartsWith("Ethernet") && net.OperationalStatus == OperationalStatus.Up)
{
IsLanConnected = true;
return;