Exemplo n.º 1
0
        private static void FindChildLangStrings(
            XmlNode node, string childName, string childChildName, string langCodeAttrib,
            Action <AdminShell.LangStr> action)
        {
            if (node == null || action == null)
            {
                return;
            }
            var n1 = node.SelectSingleNode(childName);

            if (n1 != null)
            {
                var nl = n1.SelectNodes(childChildName);
                if (nl != null)
                {
                    foreach (XmlNode ni in nl)
                    {
                        if (ni.Attributes != null && ni.Attributes[langCodeAttrib] != null)
                        {
                            var ls = new AdminShell.LangStr();
                            ls.lang = ni.Attributes["language_code"].InnerText;
                            ls.str  = ni.InnerText;
                            action(ls);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        public static JObject createSecurityScheme(AdminShell.SubmodelElement sschemaSem)
        {
            JObject sschemaJOBject = new JObject();

            foreach (AdminShell.Qualifier smQualifier in sschemaSem.qualifiers)
            {
                sschemaJOBject[smQualifier.type] = smQualifier.value;
            }
            if (sschemaSem.description != null)
            {
                AdminShell.ListOfLangStr tdDescription = sschemaSem.description.langString;
                if (tdDescription.Count != 1)
                {
                    sschemaJOBject["description"] = tdDescription[0].str;
                    int     index        = 1;
                    JObject descriptions = new JObject();
                    for (index = 1; index < tdDescription.Count; index++)
                    {
                        AdminShell.LangStr desc = tdDescription[index];
                        descriptions[desc.lang] = desc.str;
                    }
                    sschemaJOBject["descriptions"] = descriptions;
                }
                else
                {
                    sschemaJOBject["description"] = tdDescription[0].str;
                }
            }

            return(sschemaJOBject);
        }
 private void repLangStr(string head, AdminShell.LangStr ls)
 {
     if (ls == null)
     {
         return;
     }
     rep(head + "@" + "" + ls.lang, "" + ls.str);
 }
Exemplo n.º 4
0
        public static JObject ExportSMtoJson(AdminShell.Submodel sm)
        {
            JObject exportData = new JObject();

            try
            {
                JObject TDJson = new JObject();
                if (sm.qualifiers != null)
                {
                    foreach (AdminShell.Qualifier smQualifier in sm.qualifiers)
                    {
                        TDJson[smQualifier.type] = smQualifier.value.ToString();
                    }
                }

                // description
                if (sm.description != null)
                {
                    AdminShell.ListOfLangStr tdDescription = sm.description.langString;
                    if (tdDescription.Count != 1)
                    {
                        TDJson["description"] = tdDescription[0].str;
                        int     index        = 1;
                        JObject descriptions = new JObject();
                        for (index = 1; index < tdDescription.Count; index++)
                        {
                            AdminShell.LangStr desc = tdDescription[index];
                            descriptions[desc.lang] = desc.str;
                        }
                        TDJson["descriptions"] = descriptions;
                    }
                    else
                    {
                        TDJson["description"] = tdDescription[0].str;
                    }
                }
                //version
                if (sm.administration != null)
                {
                    JObject versionInfo           = new JObject();
                    AdminShell.Administration adm = sm.administration;
                    if (adm.version != "")
                    {
                        versionInfo["instance"] = adm.version;
                    }
                    if (adm.revision != "")
                    {
                        versionInfo["model"] = adm.version;
                    }
                    if (versionInfo.Count != 0)
                    {
                        TDJson["version"] = versionInfo;
                    }
                }
                // id
                TDJson["id"] = sm.identification.id;
                if (sm.submodelElements != null)
                {
                    foreach (AdminShell.SubmodelElementWrapper tdElementWrapper in sm.submodelElements)
                    {
                        AdminShell.SubmodelElement tdElement = tdElementWrapper.submodelElement;
                        if (tdElement.idShort == "@type")
                        {
                            List <object> typeList = new List <object>();
                            foreach (AdminShell.Qualifier _typeQual in tdElement.qualifiers)
                            {
                                typeList.Add((_typeQual.value));
                            }
                            TDJson["@type"] = JToken.FromObject(typeList);
                        }
                        if (tdElement.idShort == "titles")
                        {
                            JObject _titlesJObject = new JObject();
                            AdminShell.MultiLanguageProperty mlp     = new AdminShell.MultiLanguageProperty(tdElement);
                            AdminShell.LangStringSet         _titles = new AdminShell.LangStringSet(mlp.value);
                            foreach (AdminShell.LangStr _title in _titles.langString)
                            {
                                _titlesJObject[_title.lang] = _title.str;
                            }
                            TDJson["titles"] = _titlesJObject;
                        }
                        if (tdElement.idShort == "@context")
                        {
                            List <object> contextList  = new List <object>();
                            JObject       _conSemantic = new JObject();
                            foreach (AdminShell.Qualifier _con in tdElement.qualifiers)
                            {
                                if (_con.type == "@context")
                                {
                                    contextList.Add((_con.value));
                                }
                                else
                                {
                                    _conSemantic[_con.type] = _con.value;
                                }
                            }
                            if (_conSemantic.Count != 0)
                            {
                                contextList.Add(_conSemantic);
                            }
                            TDJson["@context"] = JToken.FromObject(contextList);
                        }
                        if (tdElement.idShort == "properties")
                        {
                            TDJson["properties"] = createTDProperties(tdElement);
                        }
                        else if (tdElement.idShort == "actions")
                        {
                            TDJson["actions"] = createTDActions(tdElement);
                        }
                        else if (tdElement.idShort == "events")
                        {
                            TDJson["events"] = createTDEvents(tdElement);
                        }
                        else if (tdElement.idShort == "links")
                        {
                            TDJson["links"] = createTDLinks(tdElement)["links"];
                        }
                        else if (tdElement.idShort == "forms")
                        {
                            TDJson["forms"] = createForms(tdElement)["forms"];
                        }
                        else if (tdElement.idShort == "security")
                        {
                            TDJson["security"] = createTDSecurity(tdElement)["security"];
                        }
                        else if (tdElement.idShort == "securityDefinitions")
                        {
                            TDJson["securityDefinitions"] = createTDSecurityDefinitions(tdElement);
                        }
                        else if (tdElement.idShort == "profile")
                        {
                            TDJson["profile"] = createTDProfile(tdElement);
                        }
                        else if (tdElement.idShort == "schemaDefinitions")
                        {
                            TDJson["schemaDefinitions"] = createTDSchemaDefinitions(tdElement);
                        }
                    }
                }
                exportData["status"] = "success";
                exportData["data"]   = TDJson;
            }
            catch (Exception ex)
            {
                exportData["status"] = "error";
                exportData["data"]   = ex.ToString();
            }
            return(exportData);
        }
Exemplo n.º 5
0
        public static JObject createDataSchema(AdminShell.SubmodelElement sem)
        {
            JObject semJObject = new JObject();

            AdminShell.SubmodelElementCollection _tempCollection = new AdminShell.SubmodelElementCollection(sem);
            string dschemaType = "";

            foreach (AdminShell.SubmodelElementWrapper _tempChild in _tempCollection.EnumerateChildren())
            {
                AdminShell.SubmodelElement dsElement = _tempChild.submodelElement;
                if (dsElement.idShort == "titles")
                {
                    JObject _titlesJObject = new JObject();
                    AdminShell.MultiLanguageProperty mlp     = new AdminShell.MultiLanguageProperty(dsElement);
                    AdminShell.LangStringSet         _titles = new AdminShell.LangStringSet(mlp.value);
                    foreach (AdminShell.LangStr _title in _titles.langString)
                    {
                        _titlesJObject[_title.lang] = _title.str;
                    }
                    semJObject["titles"] = _titlesJObject;
                }
                if (dsElement.idShort == "oneOf")
                {
                    List <JObject> oneOfJObjects = new List <JObject>();
                    AdminShell.SubmodelElementCollection _enumCOllection =
                        new AdminShell.SubmodelElementCollection(dsElement);
                    foreach (AdminShell.SubmodelElementWrapper _temponeOf in _enumCOllection.EnumerateChildren())
                    {
                        AdminShell.SubmodelElement _oneOf = _temponeOf.submodelElement;
                        oneOfJObjects.Add(createDataSchema(_oneOf));
                    }
                    semJObject["oneOf"] = JToken.FromObject(oneOfJObjects);
                }
                if (dsElement.idShort == "enum")
                {
                    semJObject["enum"] = JToken.FromObject(enumELement(dsElement.qualifiers));
                }
            }
            if (sem.description != null)
            {
                AdminShell.ListOfLangStr tdDescription = sem.description.langString;
                if (tdDescription.Count != 1)
                {
                    semJObject["description"] = tdDescription[0].str;
                    int     index        = 1;
                    JObject descriptions = new JObject();
                    for (index = 1; index < tdDescription.Count; index++)
                    {
                        AdminShell.LangStr desc = tdDescription[index];
                        descriptions[desc.lang] = desc.str;
                    }
                    semJObject["descriptions"] = JToken.FromObject(descriptions);
                }
                else
                {
                    semJObject["description"] = tdDescription[0].str;
                }
            }
            foreach (AdminShell.Qualifier smQualifier in sem.qualifiers)
            {
                if (smQualifier.type == "readOnly" || smQualifier.type == "writeOnly")
                {
                    semJObject[smQualifier.type] = Convert.ToBoolean(smQualifier.value);
                }
                else if (smQualifier.type == "minItems" || smQualifier.type == "maxItems" ||
                         smQualifier.type == "minLength" || smQualifier.type == "maxLength")
                {
                    semJObject[smQualifier.type] = Convert.ToUInt32(smQualifier.value);
                }
                else if (smQualifier.type == "data1.type" || smQualifier.type == "type")
                {
                    if (smQualifier.type == "type")
                    {
                        semJObject[smQualifier.type] = smQualifier.value;
                    }
                    if (smQualifier.type == "data1.type")
                    {
                        semJObject["data1"] = JToken.FromObject(new JObject {
                            ["type"] = smQualifier.value
                        });
                    }
                    dschemaType = smQualifier.value;
                }
                else
                {
                    semJObject[smQualifier.type] = smQualifier.value;
                }
            }
            if (dschemaType == "array")
            {
                JObject arrayObject = createArraySchema(sem);
                if (arrayObject.ContainsKey("items"))
                {
                    semJObject["items"] = arrayObject["items"];
                }
            }
            else if (dschemaType == "object")
            {
                JObject objectSchemaJObject = createObjectSchema(sem);
                if (objectSchemaJObject.ContainsKey("properties"))
                {
                    semJObject["properties"] = JToken.FromObject(objectSchemaJObject["properties"]);
                }
                if (objectSchemaJObject.ContainsKey("required"))
                {
                    semJObject["required"] = JToken.FromObject(objectSchemaJObject["required"]);
                }
            }
            else if (dschemaType == "integer")
            {
                List <string> integerSchema = new List <string> {
                    "minimum", "exclusiveMinimum", "maximum",
                    "exclusiveMaximum", "multipleOf"
                };
                foreach (string elem in integerSchema)
                {
                    foreach (AdminShell.Qualifier semQual in sem.qualifiers)
                    {
                        if (elem == semQual.type)
                        {
                            semJObject[semQual.type] = (int)Convert.ToDouble(semQual.value);
                        }
                    }
                }
            }
            else if (dschemaType == "number")
            {
                List <string> numberSchema = new List <string> {
                    "minimum", "exclusiveMinimum", "maximum",
                    "exclusiveMaximum", "multipleOf"
                };
                foreach (string elem in numberSchema)
                {
                    foreach (AdminShell.Qualifier semQual in sem.qualifiers)
                    {
                        if (elem == semQual.type)
                        {
                            semJObject[semQual.type] = Convert.ToDecimal(semQual.value.ToString());
                        }
                    }
                }
            }



            return(semJObject);
        }
Exemplo n.º 6
0
        public void AddKeyListLangStr(StackPanel view, string key, List <AdminShell.LangStr> langStr, ModifyRepo repo = null)
        {
            // sometimes needless to show
            if (repo == null && (langStr == null || langStr.Count < 1))
            {
                return;
            }
            int rows = 1; // default!

            if (langStr != null && langStr.Count > 1)
            {
                rows = langStr.Count;
            }
            int rowOfs = 0;

            if (repo != null)
            {
                rowOfs = 1;
            }

            // Grid
            var g = new Grid();

            g.Margin = new Thickness(0, 0, 0, 0);

            // 0 key
            var gc = new ColumnDefinition();

            gc.Width = new GridLength(100);
            g.ColumnDefinitions.Add(gc);

            // 1 langs
            gc       = new ColumnDefinition();
            gc.Width = new GridLength(1.0, GridUnitType.Auto);
            g.ColumnDefinitions.Add(gc);

            // 2 values
            gc       = new ColumnDefinition();
            gc.Width = new GridLength(1.0, GridUnitType.Star);
            g.ColumnDefinitions.Add(gc);

            // 3 buttons behind it
            gc       = new ColumnDefinition();
            gc.Width = new GridLength(1.0, GridUnitType.Auto);
            g.ColumnDefinitions.Add(gc);

            // rows
            for (int r = 0; r < rows + rowOfs; r++)
            {
                var gr = new RowDefinition();
                gr.Height = new GridLength(1.0, GridUnitType.Auto);
                g.RowDefinitions.Add(gr);
            }

            // populate key
            AddSmallLabelTo(g, 0, 0, margin: new Thickness(5, 0, 0, 0), content: "" + key + ":");

            // populate [+]
            if (repo != null)
            {
                repo.RegisterControl(AddSmallButtonTo(g, 0, 3, margin: new Thickness(2, 2, 2, 2), padding: new Thickness(5, 0, 5, 0), content: "Add blank"),
                                     (o) =>
                {
                    var ls = new AdminShell.LangStr();
                    langStr.Add(ls);
                    return(new ModifyRepo.LambdaActionRedrawEntity());
                });
            }

            // contents?
            if (langStr != null)
            {
                for (int i = 0; i < langStr.Count; i++)
                {
                    if (repo == null)
                    {
                        // lang
                        AddSmallLabelTo(g, 0 + i + rowOfs, 1, padding: new Thickness(2, 0, 0, 0), content: "[" + langStr[i].lang + "]");

                        // str
                        AddSmallLabelTo(g, 0 + i + rowOfs, 2, padding: new Thickness(2, 0, 0, 0), content: "" + langStr[i].str);
                    }

                    else
                    {
                        // save in current context
                        var currentI = 0 + i;
                        // lang
                        repo.RegisterControl(
                            AddSmallComboBoxTo(g, 0 + i + rowOfs, 1, margin: new Thickness(0, 2, 2, 2), text: "" + langStr[currentI].lang,
                                               minWidth: 50, items: defaultLanguages, isEditable: true),
                            (o) =>
                        {
                            langStr[currentI].lang = o as string;
                            return(new ModifyRepo.LambdaActionNone());
                        });

                        // str
                        repo.RegisterControl(
                            AddSmallTextBoxTo(g, 0 + i + rowOfs, 2, margin: new Thickness(2, 2, 2, 2), text: "" + langStr[currentI].str),
                            (o) =>
                        {
                            langStr[currentI].str = o as string;
                            return(new ModifyRepo.LambdaActionNone());
                        });

                        // button [-]
                        repo.RegisterControl(AddSmallButtonTo(g, 0 + i + rowOfs, 3, margin: new Thickness(2, 2, 2, 2), padding: new Thickness(5, 0, 5, 0), content: "-"),
                                             (o) => {
                            langStr.RemoveAt(currentI);
                            return(new ModifyRepo.LambdaActionRedrawEntity());
                        });
                    }
                }
            }

            // in total
            view.Children.Add(g);
        }