public void AddAspects(Dictionary dictionary){ if (_dictionary== null) _dictionary=_modelDifferenceObject.Model; foreach (var aspect in dictionary.Aspects){ var node = new DictionaryXmlWriter().GetAspectXml(aspect,dictionary.RootNode); if (string.IsNullOrEmpty(node)) node = "<Application/>"; _dictionary.AddAspect(aspect,new DictionaryXmlReader().ReadFromString(node)); } if (_modelDifferenceObject!= null) _modelDifferenceObject.Model=_dictionary; }
public void ApplicationModel_with_more_than_one_aspect_Can_Be_Saved() { var dictionary1 = new Dictionary(new DictionaryXmlReader().ReadFromString("<Application><BOModel><Class Name=\"MyClass\" Caption=\"Default\"></Class><Class Name=\"MyClass2\" Caption=\"Default2\"></Class></BOModel></Application>"), Schema.GetCommonSchema()); var dictionary = dictionary1.Clone(); var elDict = new Dictionary(new DictionaryXmlReader().ReadFromString("<Application><BOModel><Class Name=\"MyClass\" Caption=\"elDefault\" AttributeWithOnlyAspect=\"elsomething\"></Class><Class Name=\"MyClass2\" Caption=\"Default2\"></Class></BOModel></Application>"), Schema.GetCommonSchema()); dictionary.AddAspect("el", elDict.RootNode); var deDict = new Dictionary(new DictionaryXmlReader().ReadFromString("<Application><BOModel><Class Name=\"MyClass\" Caption=\"deDefault\" DeAttributeWithOnlyAspect=\"desomething\"></Class><Class Name=\"MyClass2\" Caption=\"Default2\"></Class></BOModel></Application>"), Schema.GetCommonSchema()); dictionary.AddAspect("de", deDict.RootNode); var application = Isolate.Fake.Instance<DifferenceObject>(Members.CallOriginal, ConstructorWillBe.Called, Session.DefaultSession); application.Model=dictionary; application.Save(); application.Reload(); var dictionaryXmlWriter = new DictionaryXmlWriter(); Assert.AreEqual(dictionary1.RootNode.ToXml(), new DictionaryXmlReader().ReadFromString(dictionaryXmlWriter.GetAspectXML(DictionaryAttribute.DefaultLanguage, application.Model.RootNode)).ToXml()); Assert.AreEqual(elDict.RootNode.ToXml(), new DictionaryXmlReader().ReadFromString(dictionaryXmlWriter.GetAspectXML("el", application.Model.RootNode)).ToXml()); }
public override object ConvertToStorageType(object value){ var dictionary = value as Dictionary; if (dictionary != null){ string fullXml = new DictionaryXmlWriterEx().GetFullXml(dictionary.RootNode); var schemaXml = dictionary.Schema.RootNode.ToXml().Replace(@" IsNewNode="":True""",""); var serializableDictionary = new SerializableDictionary<string, string>{ {"Schema", schemaXml}, {"DefaultAspect", fullXml} }; serializableDictionary["aspects"] = ""; foreach (var aspect in dictionary.Aspects.Where(s1 => s1!=DictionaryAttribute.DefaultLanguage)){ serializableDictionary["aspects"] += aspect + ","; serializableDictionary[aspect] = new DictionaryXmlWriter().GetAspectXml(dictionary.GetAspectIndex(aspect), dictionary.RootNode); } serializableDictionary["aspects"] = serializableDictionary["aspects"].TrimEnd(','); var stringWriter = new StringWriter(); var writer = new XmlTextWriter(stringWriter); serializableDictionary.WriteXml(writer); var s = stringWriter.GetStringBuilder().ToString(); return s; } return null; }
public void Application_Model_With_More_Than_one_Aspect_And_Spaces_Between_Attribute_Values_Can_Be_Saved(){ const string defaultS = "ProtectedContentText=\"Protected Content\" PreferredLanguage=\"el\" VersionFormat=\"Version {0}.{1}.{2}\" Title=\"Solution1\" Logo=\"ExpressAppLogo\" Company=\"Endligh\" WebSite=\"1\" CanClose=\"True\" "; var dictionary1 = new Dictionary(new DictionaryXmlReader().ReadFromString("<Application "+defaultS + "><BOModel><Class Name=\"MyClass2\" Caption=\"Default\"></Class></BOModel></Application>"), Schema.GetCommonSchema()); Dictionary dictionary = dictionary1.Clone(); dictionary1.AddAspect("el", new DictionaryXmlReader().ReadFromString("<Application Company=\"Greek\"></Application>")); var application = Isolate.Fake.Instance<DifferenceObject>(Members.CallOriginal, ConstructorWillBe.Called, Session.DefaultSession); application.Model=dictionary1; application.Save(); application.Reload(); var dictionaryXmlWriter = new DictionaryXmlWriter(); Assert.AreEqual(dictionary.RootNode.ToXml(), new DictionaryXmlReader().ReadFromString(dictionaryXmlWriter.GetAspectXML(DictionaryAttribute.DefaultLanguage, application.Model.RootNode)).ToXml()); }