Index: TECH/ObjectUtils/impl/WaardenKopieerder.cls.xml =================================================================== diff -u -r769 -r848 --- TECH/ObjectUtils/impl/WaardenKopieerder.cls.xml (.../WaardenKopieerder.cls.xml) (revision 769) +++ TECH/ObjectUtils/impl/WaardenKopieerder.cls.xml (.../WaardenKopieerder.cls.xml) (revision 848) @@ -2,35 +2,15 @@ vhLib.Class -TECH.ObjectUtils.WaardenKopieerder,TECH.RegisteredObject +TECH.RegisteredObject,TECH.ObjectUtils.WaardenKopieerder - -%String -list -1 - - %String list 1 - -NietTeKopierenProperties:%ListOfDataTypes=##class(%ListOfDataTypes).%New() -1 -1 -%Status -1 - - - - -Mag blijven of mag weg ? %ListOfDataTypes @@ -52,26 +32,33 @@ #dim PropertyInfo As %List = itProperties.Next() #dim PropertyName As %String = itProperties.Key() - #dim PropertyValue As %String = ..GeefPropertyWaarde(Object1,PropertyName) - #dim PropertyValueDefaults As %String = ..GeefPropertyWaarde(Object2,PropertyName) + #dim WaardePropertyObject1 As %String = ..GeefPropertyWaarde(Object1,PropertyName) + #dim WaardePropertyObject2 As %String = ..GeefPropertyWaarde(Object2,PropertyName) - #dim PropertyCollection As %String = $listget(PropertyInfo,$$$fldCollection) + #dim PropertyIsCollection As %String = $listget(PropertyInfo,$$$fldCollection) - if ##class(TECH.ClassUtils).IsDataType($listget(PropertyInfo,$$$fldClassName)) { - if $length(PropertyCollection) { - if PropertyValue.Count() = 0 || ( flagOverwrite ){ - If (PropertyValueDefaults.Count()>0) { - if PropertyCollection = "list" set PropertyValue = ##class(TECH.ListUtils).CopyListOfDataTypes(PropertyValueDefaults) - if PropertyCollection = "array" set PropertyValue = ##class(TECH.ListUtils).CopyArrayOfDataTypes(PropertyValueDefaults) + #dim MagOverschrijven As %Boolean = 0 + + if ..WaardenVerschillen(WaardePropertyObject1 , WaardePropertyObject2 , PropertyIsCollection ) { + if ##class(TECH.ClassUtils).IsDataType($listget(PropertyInfo,$$$fldClassName)) { + if $length(PropertyIsCollection) { + set MagOverschrijven = ..MagOverschrijven(PropertyName , (WaardePropertyObject1.Count()=0) , (WaardePropertyObject2.Count()=0), flagOverwrite) + if MagOverschrijven { + if (WaardePropertyObject2.Count()>0) { + if PropertyIsCollection = "list" set WaardePropertyObject1 = ##class(TECH.ListUtils).CopyListOfDataTypes(WaardePropertyObject2) + if PropertyIsCollection = "array" set WaardePropertyObject1 = ##class(TECH.ListUtils).CopyArrayOfDataTypes(WaardePropertyObject2) + } + } + } else { + set MagOverschrijven = ..MagOverschrijven(PropertyName , (WaardePropertyObject1="") , (WaardePropertyObject2="" ) , flagOverwrite) + if MagOverschrijven { + set WaardePropertyObject1 = WaardePropertyObject2 } } - } elseif ( PropertyValue = "" ) || ( flagOverwrite ) { - set:(PropertyValueDefaults '= "") PropertyValue = PropertyValueDefaults - } - - If $$$Not(##class(TECH.ListUtils).Contains(..NietTeKopierenProperties,PropertyName)) { - Do ..ZetPropertyWaarde(Object1,PropertyName,PropertyValue) - Do ..ZetGewijzigdeProperty(PropertyName) + if MagOverschrijven { + do ..ZetPropertyWaarde(Object1,PropertyName,WaardePropertyObject1) + do ..ZetGewijzigdeProperty(PropertyName) + } } } } @@ -80,6 +67,29 @@ ]]> + +Value1:%CacheString,Value2:%CacheString,PropertyIsCollection:%Boolean + + + + +PropertyName:%String,OudeWaardeIsLeeg:%Boolean,NieuweWaardeIsLeeg:%Boolean,flagOverwrite:%Boolean +1 +%Boolean + + + 1 TECH.ObjectUtils.KopieerWaardenResultaat