diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-10-23 03:58:38 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-10-23 03:58:38 +0300 |
| commit | 2d803e9410cd383d8e66c300f86fe0f7374c81ea (patch) | |
| tree | 7ac7ac109fd8cafd0752673e826123475b9f0e13 /Software/Visual_Studio | |
| parent | 8d2b13aaa70bc6a8f521df4eab165caf078c33fa (diff) | |
| download | Tango-2d803e9410cd383d8e66c300f86fe0f7374c81ea.tar.gz Tango-2d803e9410cd383d8e66c300f86fe0f7374c81ea.zip | |
Improvements to DataStore Remote.
Diffstat (limited to 'Software/Visual_Studio')
12 files changed, 79 insertions, 8 deletions
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/ProcedureProject.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/ProcedureProject.cs index 168d1498b..03d99da1d 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/ProcedureProject.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/ProcedureProject.cs @@ -67,6 +67,7 @@ namespace Tango.FSE.Procedures project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(IMachineOperator))); project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(IMessage))); project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(System.Drawing.Point))); + project.ReferenceAssemblies.Add(ReferenceAssembly.FromType(typeof(Tango.DataStore.IDataStoreItem))); return project; } diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/Tango.FSE.Procedures.csproj b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/Tango.FSE.Procedures.csproj index b7e4b238c..2e7099857 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/Tango.FSE.Procedures.csproj +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Procedures/Tango.FSE.Procedures.csproj @@ -284,6 +284,10 @@ <Project>{58e8825f-0c96-449c-b320-1e82b0aa876b}</Project> <Name>Tango.CSV</Name> </ProjectReference> + <ProjectReference Include="..\..\..\Tango.DataStore\Tango.DataStore.csproj"> + <Project>{e0364dfa-0721-4637-9d32-9d22aac109d6}</Project> + <Name>Tango.DataStore</Name> + </ProjectReference> <ProjectReference Include="..\..\..\Tango.FileSystem\Tango.FileSystem.csproj"> <Project>{c6ebbbbe-2123-44dc-aef7-a0d47d736ac0}</Project> <Name>Tango.FileSystem</Name> diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/DataStore/RemoteDataStoreCollection.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/DataStore/RemoteDataStoreCollection.cs index cb49c667d..0ff387e85 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/DataStore/RemoteDataStoreCollection.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/DataStore/RemoteDataStoreCollection.cs @@ -76,7 +76,7 @@ namespace Tango.FSE.UI.DataStore Collection = Name }).Result; - return result.Items; + return result.Items.Cast<IDataStoreItem>().ToList(); } public void Delete(string key) 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 e6da8e8e7..f11d37659 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/DataStore/DefaultDataStoreService.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/DataStore/DefaultDataStoreService.cs @@ -15,6 +15,7 @@ using Tango.PMR.DataStore; using Tango.PPC.Common.Connection; using Tango.PPC.Common.ExternalBridge; using Tango.Transport; +using Tango.Core.ExtensionMethods; namespace Tango.PPC.Common.DataStore { @@ -71,7 +72,7 @@ namespace Tango.PPC.Common.DataStore var item = GetManager().GetCollection(request.Collection).GetItem(request.Key, request.DefaultValue); await receiver.SendGenericResponse(new RemoteDataStoreGetItemResponse() { - Item = item + Item = CreateRemoteItem(item) }, token); } @@ -105,7 +106,7 @@ namespace Tango.PPC.Common.DataStore var all = GetManager().GetCollection(request.Collection).GetAll(); await receiver.SendGenericResponse(new RemoteDataStoreGetAllResponse() { - Items = all + Items = all.Select(x => CreateRemoteItem(x)).ToList() }, token); } @@ -119,6 +120,15 @@ namespace Tango.PPC.Common.DataStore }, token); } + private RemoteDataStoreItem CreateRemoteItem(IDataStoreItem item) + { + RemoteDataStoreItem remote = new RemoteDataStoreItem(); + + item.MapPropertiesTo(remote, MappingFlags.All); + + return remote; + } + #endregion #region Proto Handlers diff --git a/Software/Visual_Studio/Tango.DataStore.EF/EFDataStoreItem.cs b/Software/Visual_Studio/Tango.DataStore.EF/EFDataStoreItem.cs index 45061c7ef..6bcb97d17 100644 --- a/Software/Visual_Studio/Tango.DataStore.EF/EFDataStoreItem.cs +++ b/Software/Visual_Studio/Tango.DataStore.EF/EFDataStoreItem.cs @@ -22,7 +22,7 @@ namespace Tango.DataStore.EF public override string ToString() { - return $"{Key}: {Value}"; + return DataStoreHelper.FormatDataStoreItem(this); } } } diff --git a/Software/Visual_Studio/Tango.DataStore.LiteDB/LiteDBDataStoreItem.cs b/Software/Visual_Studio/Tango.DataStore.LiteDB/LiteDBDataStoreItem.cs index 544a15b61..ba2e5748e 100644 --- a/Software/Visual_Studio/Tango.DataStore.LiteDB/LiteDBDataStoreItem.cs +++ b/Software/Visual_Studio/Tango.DataStore.LiteDB/LiteDBDataStoreItem.cs @@ -24,7 +24,7 @@ namespace Tango.DataStore.Lite public override string ToString() { - return $"{Key}: {Value}"; + return DataStoreHelper.FormatDataStoreItem(this); } } } diff --git a/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreGetAllResponse.cs b/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreGetAllResponse.cs index 98848924c..2d9e0f527 100644 --- a/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreGetAllResponse.cs +++ b/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreGetAllResponse.cs @@ -8,11 +8,11 @@ namespace Tango.DataStore.Remote { public class RemoteDataStoreGetAllResponse { - public List<IDataStoreItem> Items { get; set; } + public List<RemoteDataStoreItem> Items { get; set; } public RemoteDataStoreGetAllResponse() { - Items = new List<IDataStoreItem>(); + Items = new List<RemoteDataStoreItem>(); } } } diff --git a/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreGetItemResponse.cs b/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreGetItemResponse.cs index ebd19eb4f..82393a786 100644 --- a/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreGetItemResponse.cs +++ b/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreGetItemResponse.cs @@ -8,6 +8,6 @@ namespace Tango.DataStore.Remote { public class RemoteDataStoreGetItemResponse { - public IDataStoreItem Item { get; set; } + public RemoteDataStoreItem Item { get; set; } } } diff --git a/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreItem.cs b/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreItem.cs new file mode 100644 index 000000000..c58e3ab28 --- /dev/null +++ b/Software/Visual_Studio/Tango.DataStore.Remote/RemoteDataStoreItem.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.DataStore.Remote +{ + public class RemoteDataStoreItem : IDataStoreItem + { + public string Guid { get; set; } + public string Key { get; set; } + public DataType Type { get; set; } + public object Value { get; set; } + public DateTime Date { get; set; } + public bool IsSynchronized { get; set; } + + public RemoteDataStoreItem() + { + Guid = System.Guid.NewGuid().ToString(); + Date = DateTime.UtcNow; + } + + public override string ToString() + { + return DataStoreHelper.FormatDataStoreItem(this); + } + } +} diff --git a/Software/Visual_Studio/Tango.DataStore.Remote/Tango.DataStore.Remote.csproj b/Software/Visual_Studio/Tango.DataStore.Remote/Tango.DataStore.Remote.csproj index b60d91d71..87a9c4766 100644 --- a/Software/Visual_Studio/Tango.DataStore.Remote/Tango.DataStore.Remote.csproj +++ b/Software/Visual_Studio/Tango.DataStore.Remote/Tango.DataStore.Remote.csproj @@ -58,6 +58,7 @@ <Compile Include="RemoteDataStoreGetItemResponse.cs" /> <Compile Include="RemoteDataStoreGetRequest.cs" /> <Compile Include="RemoteDataStoreGetResponse.cs" /> + <Compile Include="RemoteDataStoreItem.cs" /> <Compile Include="RemoteDataStorePutRequest.cs" /> <Compile Include="RemoteDataStorePutResponse.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> diff --git a/Software/Visual_Studio/Tango.DataStore/DataStoreHelper.cs b/Software/Visual_Studio/Tango.DataStore/DataStoreHelper.cs index bf78bc35e..53745990e 100644 --- a/Software/Visual_Studio/Tango.DataStore/DataStoreHelper.cs +++ b/Software/Visual_Studio/Tango.DataStore/DataStoreHelper.cs @@ -83,5 +83,29 @@ namespace Tango.DataStore throw new NotSupportedException("The specified data type is not supported."); } + + /// <summary> + /// Formats the data store item as a string. + /// </summary> + /// <param name="item">The item.</param> + /// <returns></returns> + public static String FormatDataStoreItem(IDataStoreItem item) + { + if (item.Type != DataType.Bytes) + { + return $"{item.Key}: {item.Value}"; + } + else + { + byte[] bytes = (byte[])item.Value; + + StringBuilder hex = new StringBuilder(); + foreach (byte b in bytes) + { + hex.AppendFormat("{0:x2} ", b); + } + return hex.ToString(); + } + } } } diff --git a/Software/Visual_Studio/Tango.DataStore/Tango.DataStore.csproj b/Software/Visual_Studio/Tango.DataStore/Tango.DataStore.csproj index 2411e3b45..37c0ecfc2 100644 --- a/Software/Visual_Studio/Tango.DataStore/Tango.DataStore.csproj +++ b/Software/Visual_Studio/Tango.DataStore/Tango.DataStore.csproj @@ -21,6 +21,7 @@ <DefineConstants>DEBUG;TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> + <DocumentationFile>bin\Debug\Tango.DataStore.xml</DocumentationFile> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> @@ -29,6 +30,7 @@ <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> + <DocumentationFile>bin\Release\Tango.DataStore.xml</DocumentationFile> </PropertyGroup> <ItemGroup> <Reference Include="System" /> |
