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); } } } } }
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); }
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); }
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); }
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); }