diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 21666e5cf..06bb6779a 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "AXSharp.ixc": { - "version": "0.14.0-alpha.112", + "version": "0.14.0-alpha.115", "commands": [ "ixc" ] @@ -15,13 +15,13 @@ ] }, "AXSharp.ixd": { - "version": "0.14.0-alpha.112", + "version": "0.14.0-alpha.115", "commands": [ "ixd" ] }, "AXSharp.ixr": { - "version": "0.14.0-alpha.112", + "version": "0.14.0-alpha.115", "commands": [ "ixr" ] diff --git a/src/data/ctrl/src/AxoDataCrudTask.st b/src/data/ctrl/src/AxoDataCrudTask.st index 911ec1f0b..697ab3e3d 100644 --- a/src/data/ctrl/src/AxoDataCrudTask.st +++ b/src/data/ctrl/src/AxoDataCrudTask.st @@ -32,7 +32,7 @@ NAMESPACE AXOpen.Data END_CLASS TYPE - eCrudOperation : (Create, Read, Update, Delete); + eCrudOperation : (Create, Read, Update, Delete, CreateOrUpdate, EntityExist); END_TYPE END_NAMESPACE diff --git a/src/data/ctrl/src/AxoDataEntityExistTask.st b/src/data/ctrl/src/AxoDataEntityExistTask.st deleted file mode 100644 index 726e26d3a..000000000 --- a/src/data/ctrl/src/AxoDataEntityExistTask.st +++ /dev/null @@ -1,23 +0,0 @@ -USING AXOpen.Core; - -NAMESPACE AXOpen.Data - /// - /// Extends AxoRemoteTask for data operation within AxoData - /// - CLASS AxoDataEntityExistTask - EXTENDS AxoDataExchangeTask - IMPLEMENTS IAxoDataEntityExistTask - VAR PUBLIC - _exist : BOOL; - END_VAR - - METHOD PUBLIC Exist : BOOL - Exist := _exist; - END_METHOD - END_CLASS - - INTERFACE PUBLIC IAxoDataEntityExistTask EXTENDS IAxoTaskState - METHOD Exist : BOOL END_METHOD - END_INTERFACE - -END_NAMESPACE diff --git a/src/data/ctrl/src/AxoDataExchange.st b/src/data/ctrl/src/AxoDataExchange.st index 1d39de2cc..825cd2fdb 100644 --- a/src/data/ctrl/src/AxoDataExchange.st +++ b/src/data/ctrl/src/AxoDataExchange.st @@ -8,35 +8,8 @@ NAMESPACE AXOpen.Data {#ix-generic:} CLASS AxoDataExchange EXTENDS AxoDataExchangeBase IMPLEMENTS IAxoDataExchange VAR PUBLIC - {#ix-set:AttributeName = "<#Create#>"} - CreateTask : AxoDataExchangeTask; - {#ix-set:AttributeName = "<#Read#>"} - ReadTask : AxoDataExchangeTask; - {#ix-set:AttributeName = "<#Update#>"} - UpdateTask : AxoDataExchangeTask; - {#ix-set:AttributeName = "<#Delete#>"} - DeleteTask : AxoDataExchangeTask; - {#ix-set:AttributeName = "<#EntityExist#>"} - EntityExistTask : AxoDataEntityExistTask; - {#ix-set:AttributeName = "<#CreateOrUpdate#>"} - CreateOrUpdateTask : AxoDataExchangeTask; + Operation : AxoDataCrudTask; END_VAR - - METHOD PRIVATE Run - CreateTask.Initialize(THIS); - ReadTask.Initialize(THIS); - UpdateTask.Initialize(THIS); - DeleteTask.Initialize(THIS); - EntityExistTask.Initialize(THIS); - CreateOrUpdateTask.Initialize(THIS); - - CreateTask.Execute(); - ReadTask.Execute(); - UpdateTask.Execute(); - DeleteTask.Execute(); - EntityExistTask.Execute(); - CreateOrUpdateTask.Execute(); - END_METHOD /// /// Runs intialization and cyclical handling of this AxoDataExchange. @@ -47,7 +20,8 @@ NAMESPACE AXOpen.Data parent : IAxoObject; END_VAR THIS.Initialize(parent); - THIS.Run(); + Operation.Initialize(THIS); + Operation.Execute(); END_METHOD /// @@ -59,7 +33,8 @@ NAMESPACE AXOpen.Data context : IAxoContext; END_VAR THIS.Initialize(context); - THIS.Run(); + Operation.Initialize(THIS); + Operation.Execute(); END_METHOD /// @@ -70,7 +45,7 @@ NAMESPACE AXOpen.Data VAR_INPUT identifier : STRING[254]; END_VAR - Create := CreateTask.Invoke(identifier); + Create := Operation.Invoke(identifier, eCrudOperation#Create); END_METHOD /// @@ -81,7 +56,7 @@ NAMESPACE AXOpen.Data VAR_INPUT identifier : STRING[254]; END_VAR - Read := ReadTask.Invoke(identifier); + Read := Operation.Invoke(identifier, eCrudOperation#Read); END_METHOD /// @@ -92,7 +67,7 @@ NAMESPACE AXOpen.Data VAR_INPUT identifier : STRING[254]; END_VAR - Update := UpdateTask.Invoke(identifier); + Update := Operation.Invoke(identifier, eCrudOperation#Update); END_METHOD /// @@ -103,19 +78,19 @@ NAMESPACE AXOpen.Data VAR_INPUT identifier : STRING[254]; END_VAR - Delete := DeleteTask.Invoke(identifier); + Delete := Operation.Invoke(identifier, eCrudOperation#Delete); END_METHOD /// /// Check if data entry exists with given ID in remote repository. /// /// Data identifier. - METHOD PUBLIC EntityExist : IAxoDataEntityExistTask + METHOD PUBLIC EntityExist : IAxoEntityExistTaskState VAR_INPUT identifier : STRING[254]; END_VAR - EntityExistTask.Invoke(identifier); - EntityExist := EntityExistTask; + Operation.Invoke(identifier, eCrudOperation#EntityExist); + EntityExist := Operation; END_METHOD /// @@ -126,19 +101,14 @@ NAMESPACE AXOpen.Data VAR_INPUT identifier : STRING[254]; END_VAR - CreateOrUpdate := CreateOrUpdateTask.Invoke(identifier); + CreateOrUpdate := Operation.Invoke(identifier, eCrudOperation#CreateOrUpdate); END_METHOD /// /// Restores all tasks associated with this object. /// METHOD PUBLIC Restore - CreateTask.Restore(); - ReadTask.Restore(); - UpdateTask.Restore(); - DeleteTask.Restore(); - EntityExistTask.Restore(); - CreateOrUpdateTask.Restore(); + Operation.Restore(); END_METHOD END_CLASS END_NAMESPACE \ No newline at end of file diff --git a/src/data/ctrl/src/AxoDataExchangeTask.st b/src/data/ctrl/src/AxoDataExchangeTask.st index da7831d84..1b1882bc2 100644 --- a/src/data/ctrl/src/AxoDataExchangeTask.st +++ b/src/data/ctrl/src/AxoDataExchangeTask.st @@ -6,8 +6,11 @@ NAMESPACE AXOpen.Data /// CLASS AxoDataExchangeTask EXTENDS AXOpen.Core.AxoRemoteTask + IMPLEMENTS IAxoEntityExistTaskState + VAR PUBLIC DataEntityIdentifier : STRING[254]; + _exist : BOOL; END_VAR METHOD PUBLIC Invoke : IAxoTaskState @@ -18,6 +21,15 @@ NAMESPACE AXOpen.Data DataEntityIdentifier := identifier; Invoke := SUPER.Invoke(); END_METHOD + + METHOD PUBLIC Exist : BOOL + Exist := _exist; + END_METHOD + END_CLASS + INTERFACE PUBLIC IAxoEntityExistTaskState EXTENDS IAxoTaskState + METHOD Exist : BOOL END_METHOD + END_INTERFACE + END_NAMESPACE diff --git a/src/data/ctrl/src/AxoDataFragmentExchange.st b/src/data/ctrl/src/AxoDataFragmentExchange.st index cc8556d26..1299edc8a 100644 --- a/src/data/ctrl/src/AxoDataFragmentExchange.st +++ b/src/data/ctrl/src/AxoDataFragmentExchange.st @@ -10,8 +10,6 @@ NAMESPACE AXOpen.Data CLASS PUBLIC AxoDataFragmentExchange EXTENDS AxoDataExchangeBase IMPLEMENTS IAxoDataExchange VAR PUBLIC Operation : AxoDataCrudTask; - EntityExistTask : AxoDataEntityExistTask; - CreateOrUpdateTask : AxoDataExchangeTask; END_VAR /// @@ -62,12 +60,12 @@ NAMESPACE AXOpen.Data /// Check if data entry exists in each associated remote repository with given ID. /// /// Data identifier. - METHOD PUBLIC EntityExist : IAxoDataEntityExistTask + METHOD PUBLIC EntityExist : IAxoEntityExistTaskState VAR_INPUT Identifier : STRING[254]; END_VAR - EntityExistTask.Invoke(Identifier); - EntityExist := EntityExistTask; + Operation.Invoke(Identifier, eCrudOperation#EntityExist); + EntityExist := Operation; END_METHOD /// @@ -78,13 +76,11 @@ NAMESPACE AXOpen.Data VAR_INPUT Identifier : STRING[254]; END_VAR - CreateOrUpdate := CreateOrUpdateTask.Invoke(Identifier); + CreateOrUpdate := Operation.Invoke(Identifier, eCrudOperation#CreateOrUpdate); END_METHOD METHOD PUBLIC Restore Operation.Restore(); - EntityExistTask.Restore(); - CreateOrUpdateTask.Restore(); END_METHOD /// @@ -98,12 +94,6 @@ NAMESPACE AXOpen.Data THIS.Initialize(context); Operation.Initialize(THIS); Operation.Execute(); - - EntityExistTask.Initialize(THIS); - EntityExistTask.Execute(); - - CreateOrUpdateTask.Initialize(THIS); - CreateOrUpdateTask.Execute(); END_METHOD /// @@ -117,12 +107,6 @@ NAMESPACE AXOpen.Data THIS.Initialize(parent); Operation.Initialize(THIS); Operation.Execute(); - - EntityExistTask.Initialize(THIS); - EntityExistTask.Execute(); - - CreateOrUpdateTask.Initialize(THIS); - CreateOrUpdateTask.Execute(); END_METHOD END_CLASS diff --git a/src/data/ctrl/src/IAxoDataExchange.st b/src/data/ctrl/src/IAxoDataExchange.st index a681818cc..81fe5b7e7 100644 --- a/src/data/ctrl/src/IAxoDataExchange.st +++ b/src/data/ctrl/src/IAxoDataExchange.st @@ -29,7 +29,7 @@ NAMESPACE AXOpen.Data END_VAR END_METHOD - METHOD EntityExist : IAxoDataEntityExistTask + METHOD EntityExist : IAxoEntityExistTaskState VAR_INPUT Identifier : STRING[254]; END_VAR diff --git a/src/data/ctrl/test/AxoDataExchangeTests.st b/src/data/ctrl/test/AxoDataExchangeTests.st index 9c85c3930..729cf767d 100644 --- a/src/data/ctrl/test/AxoDataExchangeTests.st +++ b/src/data/ctrl/test/AxoDataExchangeTests.st @@ -58,7 +58,7 @@ NAMESPACE AXOpen.Data expected := 'CreateRecordIdentifier'; _dataExchange.Create(expected); _context.Close(); - AxUnit.Assert.Equal(_dataExchange.CreateTask.DataEntityIdentifier, expected); + AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected); END_METHOD @@ -72,7 +72,7 @@ NAMESPACE AXOpen.Data expected := 'ReadRecordIdentifier'; _dataExchange.Read(expected); _context.Close(); - AxUnit.Assert.Equal(_dataExchange.ReadTask.DataEntityIdentifier, expected); + AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected); END_METHOD {Test} @@ -85,7 +85,7 @@ NAMESPACE AXOpen.Data expected := 'UpdateRecordIdentifier'; _dataExchange.Update(expected); _context.Close(); - AxUnit.Assert.Equal(_dataExchange.UpdateTask.DataEntityIdentifier, expected); + AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected); END_METHOD {Test} @@ -98,7 +98,7 @@ NAMESPACE AXOpen.Data expected := 'DeleteRecordIdentifier'; _dataExchange.Delete(expected); _context.Close(); - AxUnit.Assert.Equal(_dataExchange.DeleteTask.DataEntityIdentifier, expected); + AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected); END_METHOD {Test} @@ -111,7 +111,7 @@ NAMESPACE AXOpen.Data expected := 'EntityExistRecordIdentifier'; _dataExchange.EntityExist(expected); _context.Close(); - AxUnit.Assert.Equal(_dataExchange.EntityExistTask.DataEntityIdentifier, expected); + AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected); END_METHOD {Test} @@ -124,7 +124,7 @@ NAMESPACE AXOpen.Data expected := 'CreateOrUpdateRecordIdentifier'; _dataExchange.CreateOrUpdate(expected); _context.Close(); - AxUnit.Assert.Equal(_dataExchange.CreateOrUpdateTask.DataEntityIdentifier, expected); + AxUnit.Assert.Equal(_dataExchange.Operation.DataEntityIdentifier, expected); END_METHOD END_CLASS END_NAMESPACE diff --git a/src/data/src/AXOpen.Data.Blazor/AxoDataExchange/DataExchangeViewModel.cs b/src/data/src/AXOpen.Data.Blazor/AxoDataExchange/DataExchangeViewModel.cs index a39258443..9c3073aa9 100644 --- a/src/data/src/AXOpen.Data.Blazor/AxoDataExchange/DataExchangeViewModel.cs +++ b/src/data/src/AXOpen.Data.Blazor/AxoDataExchange/DataExchangeViewModel.cs @@ -145,16 +145,16 @@ public async Task CreateNew() { if (string.IsNullOrEmpty(CreateItemId)) { - AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Cannot create!", "New entry name cannot be empty. Please provide an ID", 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Cannot create!", "New entry name cannot be empty. Please provide an ID", 10); return; } await DataExchange.CreateNewAsync(CreateItemId); - AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Created!", "Item was successfully created!", 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Created!", "Item was successfully created!", 10); } catch (Exception e) { - AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Failed to create new record!", e.Message, 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Failed to create new record!", e.Message, 10); } finally { @@ -168,11 +168,11 @@ public void Delete() try { DataExchange.Delete(SelectedRecord.DataEntityId); - AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Deleted!", "Item was successfully deleted!", 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Deleted!", "Item was successfully deleted!", 10); } catch (Exception e) { - AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Failed to delete", e.Message, 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Failed to delete", e.Message, 10); } finally { @@ -192,7 +192,7 @@ public async Task Copy() } catch (Exception e) { - AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Failed to copy!", e.Message, 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Failed to copy!", e.Message, 10); } finally { @@ -206,14 +206,14 @@ public async Task Copy() public async Task Edit() { await DataExchange.UpdateFromShadowsAsync(); - AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Edited!", "Item was successfully edited!", 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Edited!", "Item was successfully edited!", 10); UpdateObservableRecords(); } public async Task SendToPlc() { await DataExchange.FromRepositoryToControllerAsync(SelectedRecord); - AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Sended to PLC!", "Item was successfully sended to PLC!", 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Sended to PLC!", "Item was successfully sended to PLC!", 10); } public async Task LoadFromPlc() @@ -221,11 +221,11 @@ public async Task LoadFromPlc() try { await DataExchange.CreateDataFromControllerAsync(CreateItemId); - AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Loaded from PLC!", "Item was successfully loaded from PLC!", 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Loaded from PLC!", "Item was successfully loaded from PLC!", 10); } catch (Exception e) { - AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Failed to create new record from the controller", e.Message, 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Failed to create new record from the controller", e.Message, 10); } finally { @@ -248,11 +248,11 @@ public Task ExportDataAsync(string path) IsFileExported = true; - AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Exported!", "Data was successfully exported!", 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Exported!", "Data was successfully exported!", 10); } catch (Exception e) { - AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Error!", e.Message, 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Error!", e.Message, 10); } }); } @@ -267,11 +267,11 @@ public Task ImportDataAsync(string path) this.UpdateObservableRecords(); - AlertDialogService.AddAlertDialog(eAlertDialogType.Success, "Imported!", "Data was successfully imported!", 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Success, "Imported!", "Data was successfully imported!", 10); } catch (Exception e) { - AlertDialogService.AddAlertDialog(eAlertDialogType.Danger, "Error!", e.Message, 10); + AlertDialogService?.AddAlertDialog(eAlertDialogType.Danger, "Error!", e.Message, 10); } }); } diff --git a/src/data/src/AXOpen.Data/DataExchange/AxoDataExchange.cs b/src/data/src/AXOpen.Data/DataExchange/AxoDataExchange.cs index 9fa0a6d88..7ed2bbd60 100644 --- a/src/data/src/AXOpen.Data/DataExchange/AxoDataExchange.cs +++ b/src/data/src/AXOpen.Data/DataExchange/AxoDataExchange.cs @@ -71,7 +71,7 @@ public IEnumerable GetRecords(string identifier) /// public bool RemoteCreate(string identifier) { - CreateTask.ReadAsync().Wait(); + Operation.ReadAsync().Wait(); DataEntity.DataEntityId.SetAsync(identifier).Wait(); var cloned = ((ITwinObject)DataEntity).OnlineToPlain().Result; @@ -84,7 +84,7 @@ public bool RemoteRead(string identifier) { try { - ReadTask.ReadAsync().Wait(); + Operation.ReadAsync().Wait(); var record = Repository.Read(identifier); ((ITwinObject)DataEntity).PlainToOnline(record).Wait(); return true; @@ -98,7 +98,7 @@ public bool RemoteRead(string identifier) /// public bool RemoteUpdate(string identifier) { - UpdateTask.ReadAsync().Wait(); + Operation.ReadAsync().Wait(); DataEntity.DataEntityId.SetAsync(identifier).Wait(); var cloned = ((ITwinObject)DataEntity).OnlineToPlain().Result; Repository.Update(identifier, cloned); @@ -108,7 +108,7 @@ public bool RemoteUpdate(string identifier) /// public bool RemoteDelete(string identifier) { - DeleteTask.ReadAsync().Wait(); + Operation.ReadAsync().Wait(); DataEntity.DataEntityId.SetAsync(identifier).Wait(); Repository.Delete(identifier); return true; @@ -117,7 +117,7 @@ public bool RemoteDelete(string identifier) /// public bool RemoteEntityExist(string identifier) { - EntityExistTask.ReadAsync().Wait(); + Operation.ReadAsync().Wait(); DataEntity.DataEntityId.SetAsync(identifier).Wait(); return Repository.Exists(identifier); } @@ -125,7 +125,7 @@ public bool RemoteEntityExist(string identifier) /// public bool RemoteCreateOrUpdate(string identifier) { - CreateOrUpdateTask.ReadAsync().Wait(); + Operation.ReadAsync().Wait(); DataEntity.DataEntityId.SetAsync(identifier).Wait(); var cloned = ((ITwinObject)DataEntity).OnlineToPlain().Result; @@ -193,12 +193,7 @@ public void SetRepository(IRepository repository) /// public void InitializeRemoteDataExchange() { - CreateTask.InitializeExclusively(RemoteCreate); - ReadTask.InitializeExclusively(RemoteRead); - UpdateTask.InitializeExclusively(RemoteUpdate); - DeleteTask.InitializeExclusively(RemoteDelete); - EntityExistTask.InitializeExclusively(RemoteEntityExist); - CreateOrUpdateTask.InitializeExclusively(RemoteCreateOrUpdate); + Operation.InitializeExclusively(Handle); this.WriteAsync().Wait(); //_idExistsTask.InitializeExclusively(Exists); //_createOrUpdateTask.Initialize(CreateOrUpdate); @@ -219,45 +214,72 @@ public void InitializeRemoteDataExchange(IRepository repository) /// public void DeInitializeRemoteDataExchange() { - CreateTask.DeInitialize(); - ReadTask.DeInitialize(); - UpdateTask.DeInitialize(); - DeleteTask.DeInitialize(); - EntityExistTask.DeInitialize(); - CreateOrUpdateTask.DeInitialize(); + Operation.DeInitialize(); this.WriteAsync().Wait(); //_idExistsTask.InitializeExclusively(Exists); //_createOrUpdateTask.Initialize(CreateOrUpdate); } + private async void Handle() + { + Operation.ReadAsync().Wait(); + var operation = (eCrudOperation)Operation.CrudOperation.LastValue; + var identifier = Operation.DataEntityIdentifier.LastValue; + + switch (operation) + { + case eCrudOperation.Create: + this.RemoteCreate(identifier); + break; + case eCrudOperation.Read: + this.RemoteRead(identifier); + break; + case eCrudOperation.Update: + this.RemoteUpdate(identifier); + break; + case eCrudOperation.Delete: + this.RemoteDelete(identifier); + break; + case eCrudOperation.CreateOrUpdate: + this.RemoteCreateOrUpdate(identifier); + break; + case eCrudOperation.EntityExist: + var result = this.RemoteEntityExist(identifier); + await Operation._exist.SetAsync(result); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + private bool RemoteCreate() { - return RemoteCreate(CreateTask.DataEntityIdentifier.GetAsync().Result); + return RemoteCreate(Operation.DataEntityIdentifier.GetAsync().Result); } private bool RemoteRead() { - return RemoteRead(ReadTask.DataEntityIdentifier.GetAsync().Result); + return RemoteRead(Operation.DataEntityIdentifier.GetAsync().Result); } private bool RemoteUpdate() { - return RemoteUpdate(UpdateTask.DataEntityIdentifier.GetAsync().Result); + return RemoteUpdate(Operation.DataEntityIdentifier.GetAsync().Result); } private bool RemoteDelete() { - return RemoteDelete(DeleteTask.DataEntityIdentifier.GetAsync().Result); + return RemoteDelete(Operation.DataEntityIdentifier.GetAsync().Result); } private bool RemoteEntityExist() { - return RemoteEntityExist(EntityExistTask.DataEntityIdentifier.GetAsync().Result); + return RemoteEntityExist(Operation.DataEntityIdentifier.GetAsync().Result); } private bool RemoteCreateOrUpdate() { - return RemoteCreateOrUpdate(CreateOrUpdateTask.DataEntityIdentifier.GetAsync().Result); + return RemoteCreateOrUpdate(Operation.DataEntityIdentifier.GetAsync().Result); } public async Task CreateAsync(string identifier, TPlain plain) diff --git a/src/data/src/AXOpen.Data/DataFragmentExchange/AxoDataFragmentExchange.cs b/src/data/src/AXOpen.Data/DataFragmentExchange/AxoDataFragmentExchange.cs index e99377990..746d7d828 100644 --- a/src/data/src/AXOpen.Data/DataFragmentExchange/AxoDataFragmentExchange.cs +++ b/src/data/src/AXOpen.Data/DataFragmentExchange/AxoDataFragmentExchange.cs @@ -38,20 +38,16 @@ public object CreateBuilder() public void InitializeRemoteDataExchange() { Operation.InitializeExclusively(Handle); - EntityExistTask.InitializeExclusively(HandleEntityExist); - CreateOrUpdateTask.InitializeExclusively(HandleCreateOrUpdate); this.WriteAsync().Wait(); } public void DeInitializeRemoteDataExchange() { Operation.DeInitialize(); - EntityExistTask.DeInitialize(); - CreateOrUpdateTask.DeInitialize(); this.WriteAsync().Wait(); } - private void Handle() + private async void Handle() { Operation.ReadAsync().Wait(); var operation = (eCrudOperation)Operation.CrudOperation.LastValue; @@ -71,29 +67,18 @@ private void Handle() case eCrudOperation.Delete: this.RemoteDelete(identifier); break; + case eCrudOperation.CreateOrUpdate: + this.RemoteCreateOrUpdate(identifier); + break; + case eCrudOperation.EntityExist: + var result = this.RemoteEntityExist(identifier); + await Operation._exist.SetAsync(result); + break; default: throw new ArgumentOutOfRangeException(); } } - private async void HandleEntityExist() - { - EntityExistTask.ReadAsync().Wait(); - var identifier = EntityExistTask.DataEntityIdentifier.LastValue; - - var result = this.RemoteEntityExist(identifier); - - await EntityExistTask._exist.SetAsync(result); - } - - private void HandleCreateOrUpdate() - { - CreateOrUpdateTask.ReadAsync().Wait(); - var identifier = CreateOrUpdateTask.DataEntityIdentifier.LastValue; - - this.RemoteCreateOrUpdate(identifier); - } - public IRepository? Repository { get; private set; } public ITwinObject RefUIData { get; private set; } diff --git a/src/data/tests/AXOpen.Data.Tests/DataExchange/AxoDataExchangeTests.cs b/src/data/tests/AXOpen.Data.Tests/DataExchange/AxoDataExchangeTests.cs index 635a45c89..baf859767 100644 --- a/src/data/tests/AXOpen.Data.Tests/DataExchange/AxoDataExchangeTests.cs +++ b/src/data/tests/AXOpen.Data.Tests/DataExchange/AxoDataExchangeTests.cs @@ -552,17 +552,12 @@ public async void InitializeRemoteDataExchange_ShouldInitializeRPC_Calls_WithGiv var repo = new InMemoryRepository(); sut.InitializeRemoteDataExchange(repo); - await sut.CreateTask.DataEntityIdentifier.SetAsync("foo"); - sut.CreateTask.StartTimeStamp.Cyclic = DateAndTime.Now; + await sut.Operation.DataEntityIdentifier.SetAsync("foo"); + sut.Operation.StartTimeStamp.Cyclic = DateAndTime.Now; - Assert.True(await sut.CreateTask.IsInitialized.GetAsync()); - Assert.True(await sut.ReadTask.IsInitialized.GetAsync()); - Assert.True(await sut.UpdateTask.IsInitialized.GetAsync()); - Assert.True(await sut.DeleteTask.IsInitialized.GetAsync()); - Assert.True(await sut.EntityExistTask.IsInitialized.GetAsync()); - Assert.True(await sut.CreateOrUpdateTask.IsInitialized.GetAsync()); + Assert.True(await sut.Operation.IsInitialized.GetAsync()); } [Fact()] @@ -575,17 +570,12 @@ public async void InitializeRemoteDataExchange_ShouldInitializeRPC_Calls() sut.SetRepository(repo); sut.InitializeRemoteDataExchange(); - await sut.CreateTask.DataEntityIdentifier.SetAsync("foo"); - sut.CreateTask.StartTimeStamp.Cyclic = DateAndTime.Now; + await sut.Operation.DataEntityIdentifier.SetAsync("foo"); + sut.Operation.StartTimeStamp.Cyclic = DateAndTime.Now; - Assert.True(await sut.CreateTask.IsInitialized.GetAsync()); - Assert.True(await sut.ReadTask.IsInitialized.GetAsync()); - Assert.True(await sut.UpdateTask.IsInitialized.GetAsync()); - Assert.True(await sut.DeleteTask.IsInitialized.GetAsync()); - Assert.True(await sut.EntityExistTask.IsInitialized.GetAsync()); - Assert.True(await sut.CreateOrUpdateTask.IsInitialized.GetAsync()); + Assert.True(await sut.Operation.IsInitialized.GetAsync()); } [Fact()] @@ -597,26 +587,16 @@ public async void DeInitializeRemoteDataExchange_ShouldInitializeRPC_Calls() var repo = new InMemoryRepository(); sut.InitializeRemoteDataExchange(repo); - await sut.CreateTask.DataEntityIdentifier.SetAsync("foo"); - sut.CreateTask.StartTimeStamp.Cyclic = DateAndTime.Now; + await sut.Operation.DataEntityIdentifier.SetAsync("foo"); + sut.Operation.StartTimeStamp.Cyclic = DateAndTime.Now; - Assert.True(await sut.CreateTask.IsInitialized.GetAsync()); - Assert.True(await sut.ReadTask.IsInitialized.GetAsync()); - Assert.True(await sut.UpdateTask.IsInitialized.GetAsync()); - Assert.True(await sut.DeleteTask.IsInitialized.GetAsync()); - Assert.True(await sut.EntityExistTask.IsInitialized.GetAsync()); - Assert.True(await sut.CreateOrUpdateTask.IsInitialized.GetAsync()); + Assert.True(await sut.Operation.IsInitialized.GetAsync()); sut.DeInitializeRemoteDataExchange(); - Assert.False(await sut.CreateTask.IsInitialized.GetAsync()); - Assert.False(await sut.ReadTask.IsInitialized.GetAsync()); - Assert.False(await sut.UpdateTask.IsInitialized.GetAsync()); - Assert.False(await sut.DeleteTask.IsInitialized.GetAsync()); - Assert.False(await sut.EntityExistTask.IsInitialized.GetAsync()); - Assert.False(await sut.CreateOrUpdateTask.IsInitialized.GetAsync()); + Assert.False(await sut.Operation.IsInitialized.GetAsync()); } diff --git a/src/integrations/src/AXOpen.Integrations.Blazor/Program.cs b/src/integrations/src/AXOpen.Integrations.Blazor/Program.cs index 9449287cd..47b223cf6 100644 --- a/src/integrations/src/AXOpen.Integrations.Blazor/Program.cs +++ b/src/integrations/src/AXOpen.Integrations.Blazor/Program.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Components.Web; using Pocos.IntegrationAxoDataFramentsExchange; using Serilog; +using AXOpen.Core; namespace axopen_integrations_blazor { @@ -22,7 +23,7 @@ public static async Task Main(string[] args) builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddSingleton(); - + builder.Services.AddAxoCoreServices(); builder.Services.AddIxBlazorServices(); //builder.Services.AddScoped(); @@ -108,7 +109,6 @@ public static async Task Main(string[] args) // Entry.Plc.AxoLoggers.LoggerOne.StartDequeuing(AxoApplication.Current.Logger, 250); - Entry.Plc.AxoLoggers.LoggerTwo.StartDequeuing(AxoApplication.Current.Logger, 250); // diff --git a/src/templates.simple/.config/dotnet-tools.json b/src/templates.simple/.config/dotnet-tools.json index eca5c36c9..fc8e2cd35 100644 --- a/src/templates.simple/.config/dotnet-tools.json +++ b/src/templates.simple/.config/dotnet-tools.json @@ -3,13 +3,13 @@ "isRoot": true, "tools": { "AXSharp.ixc": { - "version": "0.14.0-alpha.112", + "version": "0.14.0-alpha.115", "commands": [ "ixc" ] }, "AXSharp.ixr": { - "version": "0.14.0-alpha.112", + "version": "0.14.0-alpha.115", "commands": [ "ixr" ]