Index: TECH/ObjectUtils/WaardenKopieerder.cls.xml =================================================================== diff -u --- TECH/ObjectUtils/WaardenKopieerder.cls.xml (revision 0) +++ TECH/ObjectUtils/WaardenKopieerder.cls.xml (revision 765) @@ -0,0 +1,46 @@ + + + +1 +vhLib.Class,vhLib.Macro +TECH.Interface + + +%String +list +1 + + + +%String +list +1 + + + +NietTeKopierenProperties:%ListOfDataTypes="" +1 +1 +%Status +1 + + + + +1 +%ListOfDataTypes + + + +1 +Object1:%RegisteredObject,Object2:%RegisteredObject,flagOverwrite:%Boolean=0 + + + + + Index: TECH/ObjectUtils/impl/WaardenKopieerder.cls.xml =================================================================== diff -u --- TECH/ObjectUtils/impl/WaardenKopieerder.cls.xml (revision 0) +++ TECH/ObjectUtils/impl/WaardenKopieerder.cls.xml (revision 765) @@ -0,0 +1,107 @@ + + + +vhLib.Class,vhLib.Macro +TECH.ObjectUtils.WaardenKopieerder,TECH.RegisteredObject + + +%String +list +1 + + + +%String +list +1 + + + +NietTeKopierenProperties:%ListOfDataTypes="" +1 +1 +%Status +1 + + + + +%ListOfDataTypes + + + + +Object1:%RegisteredObject,Object2:%RegisteredObject,flagOverwrite:%Boolean=0 + "_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 PropertyValue As %String = ..GeefPropertyWaarde(Object1,PropertyName) + #dim PropertyValueDefaults As %String = ..GeefPropertyWaarde(Object2,PropertyName) + + #dim PropertyCollection As %String = $listget(PropertyInfo,$$$fldCollection) + + if ##class(TECH.ClassUtils).IsDataType($listget(PropertyInfo,$$$fldClassName)) { + if $length(PropertyCollection) { + if PropertyValue.Count() = 0 || ( flagOverwrite ){ + if PropertyCollection = "list" set PropertyValue = ##class(TECH.ListUtils).CopyListOfDataTypes(PropertyValueDefaults) + if PropertyCollection = "array" set PropertyValue = ##class(TECH.ListUtils).CopyArrayOfDataTypes(PropertyValueDefaults) + } + } elseif ( PropertyValue = "" ) || ( flagOverwrite ) { + set PropertyValue = PropertyValueDefaults + } + + If $$$Not(##class(TECH.ListUtils).Contains(..NietTeKopierenProperties,PropertyName)) { + Do ..ZetPropertyWaarde(Object1,PropertyName,PropertyValue) + Do ..ZetGewijzigdeProperty(PropertyName) + } + } + } +]]> + + + +Object:%Library.Base,Property:%String +1 +0 +%CacheString + + + + +Object:%Library.Base,Property:%String,Value:%CacheString +1 +0 + + + + +PropertyName:%String +1 + + + + + +