Пример #1
0
 public void Add(ISubmodelElement submodelElement)
 {
     base.Add(new OperationVariable()
     {
         Value = submodelElement
     });
 }
Пример #2
0
 public static ISubmodelElement CreateSubmodelElement(this PropertyInfo property, object target)
 {
     if (DataType.IsSimpleType(property.PropertyType))
     {
         DataType dataType = DataType.GetDataTypeFromSystemType(property.PropertyType);
         Property smProp   = new Property(dataType)
         {
             IdShort = property.Name,
             Value   = property.GetValue(target)
         };
         return(smProp);
     }
     else
     {
         SubmodelElementCollection smCollection = new SubmodelElementCollection()
         {
             IdShort = property.Name
         };
         object value     = property.GetValue(target);
         Type   valueType = value.GetType();
         foreach (var subProperty in valueType.GetProperties(BindingFlags.Public | BindingFlags.Instance))
         {
             ISubmodelElement smElement = CreateSubmodelElement(subProperty, value);
             smCollection.Value.Add(smElement);
         }
         return(smCollection);
     }
 }
        public IResult <ISubmodelElement> CreateSubmodelElement(string submodelId, ISubmodelElement submodelElement)
        {
            var request  = base.CreateJsonContentRequest(GetUri(SUBMODELS, submodelId, SUBMODEL, SUBMODEL_ELEMENTS), HttpMethod.Put, submodelElement);
            var response = base.SendRequest(request, REQUEST_TIMEOUT);

            return(base.EvaluateResponse <ISubmodelElement>(response, response.Entity));
        }
Пример #4
0
        public async Task <IResult <ISubmodelElement> > CreateSubmodelElementAsync(ISubmodelElement submodelElement)
        {
            var request  = base.CreateJsonContentRequest(GetUri(SUBMODELELEMENTS), HttpMethod.Post, submodelElement);
            var response = await SendRequestAsync(request);

            return(await EvaluateResponseAsync <ISubmodelElement>(response, response.Entity));
        }
Пример #5
0
        public IResult <ISubmodelElement> CreateSubmodelElement(ISubmodelElement submodelElement)
        {
            if (Submodel == null)
            {
                return(new Result <ISubmodelElement>(false, new NotFoundMessage("Submodel")));
            }

            return(Submodel.SubmodelElements.Create(submodelElement));
        }
Пример #6
0
        public IActionResult PutSubmodelElement([FromBody] ISubmodelElement submodelElement)
        {
            if (submodelElement == null)
            {
                return(ResultHandling.NullResult(nameof(submodelElement)));
            }

            var result = CreateSubmodelElement(submodelElement);

            return(result.CreateActionResult(CrudOperation.Create, "submodel/submodelElements/" + submodelElement.IdShort));
        }
Пример #7
0
        public IActionResult RoutedPutSubmodelElement([FromBody] ISubmodelElement submodelElement)
        {
            if (submodelElement == null)
            {
                return(ResultHandling.NullResult(nameof(submodelElement)));
            }

            var controller = HttpContext.RequestServices.GetService <SubmodelServices>();

            return(controller.PutSubmodelElement(submodelElement));
        }
Пример #8
0
        public IResult UpdateSubmodelElement(string submodelElementId, ISubmodelElement submodelElement)
        {
            if (Submodel == null)
            {
                return(new Result(false, new NotFoundMessage("Submodel")));
            }

            if (Submodel.SubmodelElements == null)
            {
                return(new Result(false, new NotFoundMessage(submodelElementId)));
            }

            return(Submodel.SubmodelElements.Update(submodelElementId, submodelElement));
        }
Пример #9
0
        public static ISubmodelElementCollection CreateSubmodelElementCollection <T>(this IEnumerable <T> enumerable, string idShort)
        {
            SubmodelElementCollection smCollection = new SubmodelElementCollection()
            {
                IdShort = idShort
            };
            Type type = typeof(T);

            foreach (var item in enumerable)
            {
                foreach (var property in type.GetProperties())
                {
                    ISubmodelElement smElement = CreateSubmodelElement(property, item);
                    smCollection.Value.Add(smElement);
                }
            }
            return(smCollection);
        }
Пример #10
0
        private static JArray CustomizeSubmodelElement(ISubmodelElement element, string[] columns)
        {
            JArray jArray      = new JArray();
            Type   elementType = element.GetType();
            List <PropertyInfo> propertyInfos = elementType.GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList();
            JObject             jObj          = new JObject();

            if (element.ModelType == ModelType.SubmodelElementCollection)
            {
                var valueContainer = element as SubmodelElementCollection;
                foreach (var subElement in valueContainer.Value)
                {
                    JArray subJArray = CustomizeSubmodelElement(subElement, columns);
                    jArray.Merge(subJArray, new JsonMergeSettings()
                    {
                        MergeArrayHandling = MergeArrayHandling.Union
                    });
                }
            }
            else
            {
                foreach (var column in columns)
                {
                    var info = propertyInfos.Find(p => p.Name == column.UppercaseFirst());
                    if (info != null)
                    {
                        var value = info.GetValue(element);
                        if (value != null)
                        {
                            jObj.Add(column, JToken.FromObject(value));
                        }
                    }
                }
            }
            if (jObj.HasValues)
            {
                jArray.Add(jObj);
            }

            return(jArray);
        }
Пример #11
0
        public static ISubmodel CreateSubmodelFromObject(this object target)
        {
            if (target == null)
            {
                return(null);
            }

            Type     type     = target.GetType();
            Submodel submodel = new Submodel()
            {
                IdShort        = type.Name,
                Identification = new Identifier(type.FullName, KeyType.Custom)
            };

            foreach (var property in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
            {
                ISubmodelElement smElement = property.CreateSubmodelElement(target);
                submodel.SubmodelElements.Add(smElement);
            }
            return(submodel);
        }
Пример #12
0
 public IResult UpdateSubmodelElement(string submodelElementId, ISubmodelElement submodelElement)
 {
     return(submodelServiceProvider.UpdateSubmodelElement(submodelElementId, submodelElement));
 }
Пример #13
0
 public IResult <ISubmodelElement> CreateSubmodelElement(ISubmodelElement submodelElement)
 {
     return(submodelServiceProvider.CreateSubmodelElement(submodelElement));
 }
 public IResult UpdateSubmodelElement(string submodelElementId, ISubmodelElement submodelElement)
 {
     return(submodelClient.UpdateSubmodelElement(submodelElementId, submodelElement));
 }
        public static EnvironmentSubmodelElement_V1_0 ToEnvironmentSubmodelElement_V1_0(this ISubmodelElement element)
        {
            if (element == null)
            {
                return(null);
            }
            ModelType modelType = element.ModelType;

            if (modelType == null)
            {
                return(null);
            }

            EnvironmentSubmodelElement_V1_0 environmentSubmodelElement = new EnvironmentSubmodelElement_V1_0();

            SubmodelElementType_V1_0 submodelElementType = new SubmodelElementType_V1_0()
            {
                Category    = element.Category,
                Description = element.Description,
                IdShort     = element.IdShort,
                Kind        = element.Kind,
                Parent      = element.Parent?.First?.Value,
                Qualifier   = null,
                SemanticId  = element.SemanticId?.ToEnvironmentReference_V1_0(),
            };

            if (modelType == ModelType.Property && element is IProperty castedProperty)
            {
                environmentSubmodelElement.submodelElement = new Property_V1_0(submodelElementType)
                {
                    Value     = castedProperty.Value?.ToString(),
                    ValueId   = castedProperty.ValueId?.ToEnvironmentReference_V1_0(),
                    ValueType = castedProperty.ValueType?.ToString()
                }
            }
            ;
            else if (modelType == ModelType.Operation && element is IOperation castedOperation)
            {
                environmentSubmodelElement.submodelElement = new Operation_V1_0(submodelElementType);
                List <OperationVariable_V1_0> inputs  = new List <OperationVariable_V1_0>();
                List <OperationVariable_V1_0> outputs = new List <OperationVariable_V1_0>();

                if (castedOperation.InputVariables?.Count > 0)
                {
                    foreach (var inputVar in castedOperation.InputVariables)
                    {
                        inputs.Add(new OperationVariable_V1_0()
                        {
                            Value = inputVar.Value.ToEnvironmentSubmodelElement_V1_0()
                        });
                    }
                }
                if (castedOperation.OutputVariables?.Count > 0)
                {
                    foreach (var outputVar in castedOperation.OutputVariables)
                    {
                        outputs.Add(new OperationVariable_V1_0()
                        {
                            Value = outputVar.Value.ToEnvironmentSubmodelElement_V1_0()
                        });
                    }
                }

                (environmentSubmodelElement.submodelElement as Operation_V1_0).In  = inputs;
                (environmentSubmodelElement.submodelElement as Operation_V1_0).Out = outputs;
            }
            else if (modelType == ModelType.Event && element is IEvent castedEvent)
            {
                environmentSubmodelElement.submodelElement = new Event_V1_0(submodelElementType)
                {
                }
            }
            ;
            else if (modelType == ModelType.Blob && element is IBlob castedBlob)
            {
                environmentSubmodelElement.submodelElement = new Blob_V1_0(submodelElementType)
                {
                    Value    = Convert.ToBase64String(castedBlob.Value),
                    MimeType = castedBlob.MimeType
                }
            }
            ;
            else if (modelType == ModelType.File && element is IFile castedFile)
            {
                environmentSubmodelElement.submodelElement = new File_V1_0(submodelElementType)
                {
                    MimeType = castedFile.MimeType,
                    Value    = castedFile.Value
                }
            }
            ;
            else if (modelType == ModelType.ReferenceElement && element is IReferenceElement castedReferenceElement)
            {
                environmentSubmodelElement.submodelElement = new ReferenceElement_V1_0(submodelElementType)
                {
                    Value = castedReferenceElement.Value?.ToEnvironmentReference_V1_0()
                }
            }
            ;
            else if (modelType == ModelType.RelationshipElement && element is IRelationshipElement castedRelationshipElement)
            {
                environmentSubmodelElement.submodelElement = new RelationshipElement_V1_0(submodelElementType)
                {
                    First  = castedRelationshipElement.First?.ToEnvironmentReference_V1_0(),
                    Second = castedRelationshipElement.Second?.ToEnvironmentReference_V1_0()
                }
            }
            ;
            else if (modelType == ModelType.SubmodelElementCollection && element is ISubmodelElementCollection castedSubmodelElementCollection)
            {
                environmentSubmodelElement.submodelElement = new SubmodelElementCollection_V1_0(submodelElementType);
                List <EnvironmentSubmodelElement_V1_0> environmentSubmodelElements = new List <EnvironmentSubmodelElement_V1_0>();
                if (castedSubmodelElementCollection.Value?.Count > 0)
                {
                    foreach (var smElement in castedSubmodelElementCollection.Value)
                    {
                        environmentSubmodelElements.Add(smElement.ToEnvironmentSubmodelElement_V1_0());
                    }
                }
                (environmentSubmodelElement.submodelElement as SubmodelElementCollection_V1_0).Value = environmentSubmodelElements;
            }
            else
            {
                return(null);
            }

            return(environmentSubmodelElement);
        }
        public static EnvironmentSubmodelElement_V2_0 ToEnvironmentSubmodelElement_V2_0(this ISubmodelElement element)
        {
            if (element == null)
            {
                return(null);
            }
            ModelType modelType = element.ModelType;

            if (modelType == null)
            {
                return(null);
            }

            EnvironmentSubmodelElement_V2_0 environmentSubmodelElement = new EnvironmentSubmodelElement_V2_0();

            SubmodelElementType_V2_0 submodelElementType = new SubmodelElementType_V2_0()
            {
                Category    = element.Category,
                Description = element.Description,
                IdShort     = element.IdShort,
                Kind        = element.Kind,
                Parent      = element.Parent?.First?.Value,
                Qualifier   = null,
                SemanticId  = element.SemanticId?.ToEnvironmentReference_V2_0(),
            };

            if (modelType == ModelType.Property && element is IProperty castedProperty)
            {
                environmentSubmodelElement.submodelElement = new Property_V2_0(submodelElementType)
                {
                    Value     = castedProperty.Value?.ToString(),
                    ValueId   = castedProperty.ValueId?.ToEnvironmentReference_V2_0(),
                    ValueType = castedProperty.ValueType?.ToString()
                }
            }
            ;
            else if (modelType == ModelType.MultiLanguageProperty && element is IMultiLanguageProperty castedMultiLanguageProperty)
            {
                environmentSubmodelElement.submodelElement = new MultiLanguageProperty_V2_0(submodelElementType)
                {
                    Value   = castedMultiLanguageProperty.Value,
                    ValueId = castedMultiLanguageProperty.ValueId?.ToEnvironmentReference_V2_0()
                };
            }
            else if (modelType == ModelType.Range && element is IRange castedRange)
            {
                environmentSubmodelElement.submodelElement = new Range_V2_0(submodelElementType)
                {
                    Min       = castedRange.Min.ToString(),
                    Max       = castedRange.Max.ToString(),
                    ValueType = castedRange.ValueType?.DataObjectType?.Name
                };
            }
            else if (modelType == ModelType.Operation && element is IOperation castedOperation)
            {
                environmentSubmodelElement.submodelElement = new Operation_V2_0(submodelElementType);
                List <OperationVariable_V2_0> inputs    = new List <OperationVariable_V2_0>();
                List <OperationVariable_V2_0> outputs   = new List <OperationVariable_V2_0>();
                List <OperationVariable_V2_0> inoutputs = new List <OperationVariable_V2_0>();

                if (castedOperation.InputVariables?.Count > 0)
                {
                    foreach (var inputVar in castedOperation.InputVariables)
                    {
                        inputs.Add(new OperationVariable_V2_0()
                        {
                            Value = inputVar.Value.ToEnvironmentSubmodelElement_V2_0()
                        });
                    }
                }
                if (castedOperation.OutputVariables?.Count > 0)
                {
                    foreach (var outputVar in castedOperation.OutputVariables)
                    {
                        outputs.Add(new OperationVariable_V2_0()
                        {
                            Value = outputVar.Value.ToEnvironmentSubmodelElement_V2_0()
                        });
                    }
                }
                if (castedOperation.InOutputVariables?.Count > 0)
                {
                    foreach (var inoutputVar in castedOperation.InOutputVariables)
                    {
                        inoutputs.Add(new OperationVariable_V2_0()
                        {
                            Value = inoutputVar.Value.ToEnvironmentSubmodelElement_V2_0()
                        });
                    }
                }

                (environmentSubmodelElement.submodelElement as Operation_V2_0).InputVariables    = inputs;
                (environmentSubmodelElement.submodelElement as Operation_V2_0).OutputVariables   = outputs;
                (environmentSubmodelElement.submodelElement as Operation_V2_0).InOutputVariables = inoutputs;
            }
            else if (modelType == ModelType.Event && element is IEvent castedEvent)
            {
                environmentSubmodelElement.submodelElement = new Event_V2_0(submodelElementType)
                {
                }
            }
            ;
            else if (modelType == ModelType.BasicEvent && element is IBasicEvent castedBasicEvent)
            {
                environmentSubmodelElement.submodelElement = new BasicEvent_V2_0(submodelElementType)
                {
                    Observed = castedBasicEvent.Observed.ToEnvironmentReference_V2_0()
                };
            }
            else if (modelType == ModelType.Entity && element is IEntity castedEntity)
            {
                environmentSubmodelElement.submodelElement = new Entity_V2_0(submodelElementType)
                {
                    EntityType     = (EnvironmentEntityType)Enum.Parse(typeof(EnvironmentEntityType), castedEntity.EntityType.ToString()),
                    AssetReference = castedEntity.Asset.ToEnvironmentReference_V2_0()
                };

                List <EnvironmentSubmodelElement_V2_0> statements = new List <EnvironmentSubmodelElement_V2_0>();
                if (castedEntity.Statements?.Count > 0)
                {
                    foreach (var smElement in castedEntity.Statements)
                    {
                        statements.Add(smElement.ToEnvironmentSubmodelElement_V2_0());
                    }
                }
                (environmentSubmodelElement.submodelElement as Entity_V2_0).Statements = statements;
            }
            else if (modelType == ModelType.Blob && element is IBlob castedBlob)
            {
                environmentSubmodelElement.submodelElement = new Blob_V2_0(submodelElementType)
                {
                    Value    = Convert.ToBase64String(castedBlob.Value),
                    MimeType = castedBlob.MimeType
                }
            }
            ;
            else if (modelType == ModelType.File && element is IFile castedFile)
            {
                environmentSubmodelElement.submodelElement = new File_V2_0(submodelElementType)
                {
                    MimeType = castedFile.MimeType,
                    Value    = castedFile.Value
                }
            }
            ;
            else if (modelType == ModelType.ReferenceElement && element is IReferenceElement castedReferenceElement)
            {
                environmentSubmodelElement.submodelElement = new ReferenceElement_V2_0(submodelElementType)
                {
                    Value = castedReferenceElement.Value?.ToEnvironmentReference_V2_0()
                }
            }
            ;
            else if (modelType == ModelType.RelationshipElement && element is IRelationshipElement castedRelationshipElement)
            {
                environmentSubmodelElement.submodelElement = new RelationshipElement_V2_0(submodelElementType)
                {
                    First  = castedRelationshipElement.First?.ToEnvironmentReference_V2_0(),
                    Second = castedRelationshipElement.Second?.ToEnvironmentReference_V2_0()
                }
            }
            ;
            else if (modelType == ModelType.AnnotatedRelationshipElement && element is IAnnotatedRelationshipElement castedAnnotatedRelationshipElement)
            {
                environmentSubmodelElement.submodelElement = new AnnotatedRelationshipElement_V2_0(submodelElementType)
                {
                    First      = castedAnnotatedRelationshipElement.First?.ToEnvironmentReference_V2_0(),
                    Second     = castedAnnotatedRelationshipElement.Second?.ToEnvironmentReference_V2_0(),
                    Annotation = castedAnnotatedRelationshipElement.Annotation?.ToEnvironmentReference_V2_0()
                };
            }
            else if (modelType == ModelType.SubmodelElementCollection && element is ISubmodelElementCollection castedSubmodelElementCollection)
            {
                environmentSubmodelElement.submodelElement = new SubmodelElementCollection_V2_0(submodelElementType);
                List <EnvironmentSubmodelElement_V2_0> environmentSubmodelElements = new List <EnvironmentSubmodelElement_V2_0>();
                if (castedSubmodelElementCollection.Value?.Count > 0)
                {
                    foreach (var smElement in castedSubmodelElementCollection.Value)
                    {
                        environmentSubmodelElements.Add(smElement.ToEnvironmentSubmodelElement_V2_0());
                    }
                }
                (environmentSubmodelElement.submodelElement as SubmodelElementCollection_V2_0).Value = environmentSubmodelElements;
            }
            else
            {
                return(null);
            }

            return(environmentSubmodelElement);
        }
Пример #17
0
        public async Task <IResult> UpdateSubmodelElementAsync(string submodelElementId, ISubmodelElement submodelElement)
        {
            var request  = base.CreateJsonContentRequest(GetUri(SUBMODELELEMENTS, submodelElementId), HttpMethod.Put, submodelElement);
            var response = await SendRequestAsync(request);

            return(await base.EvaluateResponseAsync(response, response.Entity));
        }
 public IResult <ISubmodelElement> CreateSubmodelElement(ISubmodelElement submodelElement)
 {
     return(submodelClient.CreateSubmodelElement(submodelElement));
 }