Index: TECH/ObjectUtils/impl/Differenciator.cls.xml =================================================================== diff -u -r2844 -r2883 --- TECH/ObjectUtils/impl/Differenciator.cls.xml (.../Differenciator.cls.xml) (revision 2844) +++ TECH/ObjectUtils/impl/Differenciator.cls.xml (.../Differenciator.cls.xml) (revision 2883) @@ -7,39 +7,43 @@ Object:%Base,ReferenceObject:%Base %ListOfDataTypes '"_$classname(ReferenceObject)_"'") + } else { + #dim success As %Boolean = 1 + #dim arrProperties As %String = "" + do arrProperties^vhLib.Class($classname(Object),.arrProperties,"A","A","A",$$$true) - if PropertyIsCollection { - if $method(WaardePropertyObject,"Count") '= $method(WaardePropertyVerwachtObject,"Count") { - do ObjectDifferences.Insert(Property_" : "_$method(WaardePropertyObject,"Count") _" <> "_ $method(WaardePropertyVerwachtObject,"Count") ) - } else { - set itList1 = ##class(TECH.ListIterator).%New(WaardePropertyObject) - set itList2 = ##class(TECH.ListIterator).%New(WaardePropertyVerwachtObject) - while itList1.HasNext() && success { - #dim Value1 As %String = $$$LCVT(itList1.Next()) - #dim Value2 As %String = $$$LCVT(itList2.Next()) - set success = ( Value1 = Value2) - if 'success do ObjectDifferences.Insert("Item "_itList1.Key()_" verschillend : *"_Value1 _ "* <> *"_Value2_"*") + set itProperties = ##class(TECH.ArrayOneDimIterator).%New(.arrProperties) + while itProperties.HasNext() { + #dim PropertyInfo As %list = itProperties.Next() + #dim Property As %String = itProperties.Key() + + continue:$ListGet(PropertyInfo,4) + + #dim PropertyIsCollection As %Boolean = $length($list(PropertyInfo,3)) + + #dim WaardePropertyObject As %CacheString = ..GeefWaarde(Object,Property) + #dim WaardePropertyVerwachtObject As %CacheString = ..GeefWaarde(ReferenceObject,Property) + + if PropertyIsCollection { + if $method(WaardePropertyObject,"Count") '= $method(WaardePropertyVerwachtObject,"Count") { + do ObjectDifferences.Insert(Property_" : "_$method(WaardePropertyObject,"Count") _" <> "_ $method(WaardePropertyVerwachtObject,"Count") ) + } else { + set itList1 = ##class(TECH.ListIterator).%New(WaardePropertyObject) + set itList2 = ##class(TECH.ListIterator).%New(WaardePropertyVerwachtObject) + while itList1.HasNext() && success { + #dim Value1 As %String = $$$LCVT(itList1.Next()) + #dim Value2 As %String = $$$LCVT(itList2.Next()) + set success = ( Value1 = Value2) + if 'success do ObjectDifferences.Insert("Item "_itList1.Key()_" verschillend : *"_Value1 _ "* <> *"_Value2_"*") + } } + } elseif WaardePropertyObject '= WaardePropertyVerwachtObject { + do ObjectDifferences.Insert(Property_" : "_WaardePropertyObject _" <> "_ WaardePropertyVerwachtObject ) } - } elseif WaardePropertyObject '= WaardePropertyVerwachtObject { - do ObjectDifferences.Insert(Property_" : "_WaardePropertyObject _" <> "_ WaardePropertyVerwachtObject ) } }