Index: TECH/ObjectUtils/impl/WaardenKopieerder/KopieerWaarden.cls.xml =================================================================== diff -u --- TECH/ObjectUtils/impl/WaardenKopieerder/KopieerWaarden.cls.xml (revision 0) +++ TECH/ObjectUtils/impl/WaardenKopieerder/KopieerWaarden.cls.xml (revision 1291) @@ -0,0 +1,132 @@ + + + +vhLib.Class +TECH.RegisteredObject + + +%String +list +1 + + + +%ListOfDataTypes + + + + +Object1:%RegisteredObject,Object2:%RegisteredObject,flagOverwrite:%Boolean=0 +TECH.ObjectUtils.KopieerWaardenResultaat + "_Object2.%ClassName(1)) + do ##class(TECH.ExceptionHandler).Throw(Exception) + } + + #dim arrProperties As %String = "" + do arrProperties^vhLib.Class(Object1.%ClassName(1),.arrProperties,"A","A","A") + set itProperties = ##class(TECH.ArrayOneDimIterator).%New(.arrProperties) + while itProperties.HasNext() { + #dim PropertyInfo As %List = itProperties.Next() + #dim PropertyName As %String = itProperties.Key() + + #dim WaardePropertyObject1 As %String = ..GeefPropertyWaarde(Object1,PropertyName) + #dim WaardePropertyObject2 As %String = ..GeefPropertyWaarde(Object2,PropertyName) + + #dim PropertyIsCollection As %String = $listget(PropertyInfo,$$$fldCollection) + + #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 + } + } + if MagOverschrijven { + do ..ZetPropertyWaarde(Object1,PropertyName,WaardePropertyObject1) + do ..ZetGewijzigdeProperty(PropertyName) + } + } + } + } + + Quit ..GeefKopieerWaardenResultaat() +]]> + + + +Value1:%CacheString,Value2:%CacheString,PropertyIsCollection:%Boolean + + + + +PropertyName:%String,OudeWaardeIsLeeg:%Boolean,NieuweWaardeIsLeeg:%Boolean,flagOverwrite:%Boolean +1 +%Boolean + + + + +1 +TECH.ObjectUtils.KopieerWaardenResultaat + + + + +Object:%Library.Base,Property:%String +1 +0 +%CacheString + + + + +Object:%Library.Base,Property:%String,Value:%CacheString +1 +0 + + + + +PropertyName:%String +1 + + + + + + Index: TECH/ObjectUtils/impl/WaardenKopieerder.cls.xml =================================================================== diff -u -r848 -r1291 --- TECH/ObjectUtils/impl/WaardenKopieerder.cls.xml (.../WaardenKopieerder.cls.xml) (revision 848) +++ TECH/ObjectUtils/impl/WaardenKopieerder.cls.xml (.../WaardenKopieerder.cls.xml) (revision 1291) @@ -1,131 +1,16 @@ -vhLib.Class TECH.RegisteredObject,TECH.ObjectUtils.WaardenKopieerder - -%String -list -1 - - - -%ListOfDataTypes - - - Object1:%RegisteredObject,Object2:%RegisteredObject,flagOverwrite:%Boolean=0 TECH.ObjectUtils.KopieerWaardenResultaat "_Object2.%ClassName(1)) - do ##class(TECH.ExceptionHandler).Throw(Exception) - } - - #dim arrProperties As %String = "" - do arrProperties^vhLib.Class(Object1.%ClassName(1),.arrProperties,"A","A","A") - set itProperties = ##class(TECH.ArrayOneDimIterator).%New(.arrProperties) - while itProperties.HasNext() { - #dim PropertyInfo As %List = itProperties.Next() - #dim PropertyName As %String = itProperties.Key() - - #dim WaardePropertyObject1 As %String = ..GeefPropertyWaarde(Object1,PropertyName) - #dim WaardePropertyObject2 As %String = ..GeefPropertyWaarde(Object2,PropertyName) - - #dim PropertyIsCollection As %String = $listget(PropertyInfo,$$$fldCollection) - - #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 - } - } - if MagOverschrijven { - do ..ZetPropertyWaarde(Object1,PropertyName,WaardePropertyObject1) - do ..ZetGewijzigdeProperty(PropertyName) - } - } - } - } - - Quit ..GeefKopieerWaardenResultaat() + set Kopieerder = ##class(TECH.ObjectUtils.impl.WaardenKopieerder.KopieerWaarden).%New() + quit Kopieerder.KopieerWaarden(Object1,Object2,flagOverwrite) ]]> - - -Value1:%CacheString,Value2:%CacheString,PropertyIsCollection:%Boolean - - - - -PropertyName:%String,OudeWaardeIsLeeg:%Boolean,NieuweWaardeIsLeeg:%Boolean,flagOverwrite:%Boolean -1 -%Boolean - - - - -1 -TECH.ObjectUtils.KopieerWaardenResultaat - - - - -Object:%Library.Base,Property:%String -1 -0 -%CacheString - - - - -Object:%Library.Base,Property:%String,Value:%CacheString -1 -0 - - - - -PropertyName:%String -1 - -