blob: a994a2ac877085af325700f01329bcb297e2a6f8 [file] [log] [blame]
using BaSys40.Models.Core.AssetAdministrationShell.Generics;
using BaSys40.Utils.ResultHandling;
using BaSys40.API.Platform.Agents;
using BaSys40.Models.Core.AssetAdministrationShell.Implementations;
using BaSys40.API.ServiceProvider;
using System.Collections.Generic;
using System.Linq;
using BaSys40.Models.Connectivity;
namespace BaSys40.API.AssetAdministrationShell.Connectables
{
public class ConnectedAssetAdministrationShell : IConnectableAssetAdministrationShell
{
public IAssetAdministrationShell AssetAdministrationShell { get; private set; }
public IServiceDescriptor ServiceDescriptor { get; private set; }
private readonly IAssetAdministrationShellAgent serviceImpl;
private Dictionary<string, ISubmodelServiceProvider> submodelServiceProviders;
public ConnectedAssetAdministrationShell(IAssetAdministrationShellAgent service)
{
serviceImpl = service;
submodelServiceProviders = new Dictionary<string, ISubmodelServiceProvider>();
}
public void BindTo(IAssetAdministrationShell element)
{
AssetAdministrationShell = element;
}
public IAssetAdministrationShell GetBinding()
{
return AssetAdministrationShell;
}
public IResult<ISubmodel> CreateSubmodel(ISubmodel submodel)
{
return serviceImpl.CreateSubmodel(AssetAdministrationShell.IdShort, submodel);
}
public IResult DeleteSubmodel(string submodelId)
{
return serviceImpl.DeleteSubmodel(AssetAdministrationShell.IdShort, submodelId);
}
public IResult<ISubmodel> RetrieveSubmodel(string submodelId)
{
return serviceImpl.RetrieveSubmodel(AssetAdministrationShell.IdShort, submodelId);
}
public IResult<ElementContainer<ISubmodel>> RetrieveSubmodels()
{
return serviceImpl.RetrieveSubmodels(AssetAdministrationShell.IdShort);
}
public void RegisterSubmodelServiceProvider(string id, ISubmodelServiceProvider submodelServiceProvider)
{
submodelServiceProviders.Add(id, submodelServiceProvider);
}
public ISubmodelServiceProvider GetSubmodelServiceProvider(string id)
{
if (submodelServiceProviders.TryGetValue(id, out ISubmodelServiceProvider submodelServiceProvider))
return submodelServiceProvider;
else
return null;
}
public IEnumerable<ISubmodelServiceProvider> GetSubmodelServiceProviders()
{
return submodelServiceProviders.Values?.ToList();
}
}
}