Index: APPS/PM/KenmMWFPlugin.cls.xml =================================================================== diff -u -r1434 -r1458 --- APPS/PM/KenmMWFPlugin.cls.xml (.../KenmMWFPlugin.cls.xml) (revision 1434) +++ APPS/PM/KenmMWFPlugin.cls.xml (.../KenmMWFPlugin.cls.xml) (revision 1458) @@ -26,6 +26,13 @@ ]]> + +GroepID:%String +%Boolean + 3) && ($Extract(GroepID,1,3) = "TBX") +]]> + + 1 0)) + If (GewijzigdeWaarde '= "") { - // Er zijn al waarden aanwezig. We gaan de lijst kopiëren van objecten. - // Alle kopiën zijn de objecten waar we onze nieuwe waarde moeten voor invullen. - // Het is voldoende om de objecten te kopiëren in de index van 1 waarde van het kenmerk - Set Lijst = PropertiesIndex.GetAt(Kenmerk).GetNext("") - For i=1:1:Lijst.Count() // Lijst van 1 waarde pakken en deze construct-clonen! + + Set NieuweObjecten = ##class(%ListOfObjects).%New() + // Eerst nagaan of er voor deze property ooit waarden zijn gekend. + If ($IsObject(WaardenIndexVoorKenmerk) && ('WaardenIndexVoorKenmerk.IsDefined(GewijzigdeWaarde)) && (WaardenIndexVoorKenmerk.Count() > 0)) { - Set Kopie = Lijst.GetAt(i).%ConstructClone(0) - Set $zobjproperty(Kopie,Kenmerk) = GewijzigdeWaarde - Do ObjectenLijst.Insert(Kopie) - Do TeBewarenObjecten.Insert(Kopie) - Do NieuweObjecten.Insert(Kopie) + // Er zijn al waarden aanwezig. We gaan de lijst kopiëren van objecten. + // Alle kopiën zijn de objecten waar we onze nieuwe waarde moeten voor invullen. + // Het is voldoende om de objecten te kopiëren in de index van 1 waarde van het kenmerk + Set Lijst = PropertiesIndex.GetAt(Kenmerk).GetNext("") + For i=1:1:Lijst.Count() // Lijst van 1 waarde pakken en deze construct-clonen! + { + Set Kopie = Lijst.GetAt(i).%ConstructClone(0) + Set $zobjproperty(Kopie,Kenmerk) = GewijzigdeWaarde + Do ObjectenLijst.Insert(Kopie) + Do TeBewarenObjecten.Insert(Kopie) + Do NieuweObjecten.Insert(Kopie) + } } - } - ElseIf (('$IsObject(WaardenIndexVoorKenmerk)) || ('WaardenIndexVoorKenmerk.IsDefined(GewijzigdeWaarde))) - { - // Er waren nooit eerder waarden voor deze property gekend. - // We hoeven dus geen kopie te maken en kunnen rechtstreeks de nieuwe waarde invullen in de reeds bestaande objecten - For i=1:1:ObjectenLijst.Count() + ElseIf (('$IsObject(WaardenIndexVoorKenmerk)) || ('WaardenIndexVoorKenmerk.IsDefined(GewijzigdeWaarde))) { - Set Object = ObjectenLijst.GetAt(i) - Set $zobjproperty(Object,Kenmerk) = GewijzigdeWaarde - Do TeBewarenObjecten.Insert(Object) - Do NieuweObjecten.Insert(Object) + // Er waren nooit eerder waarden voor deze property gekend. + // We hoeven dus geen kopie te maken en kunnen rechtstreeks de nieuwe waarde invullen in de reeds bestaande objecten + For i=1:1:ObjectenLijst.Count() + { + Set Object = ObjectenLijst.GetAt(i) + Set $zobjproperty(Object,Kenmerk) = GewijzigdeWaarde + Do TeBewarenObjecten.Insert(Object) + Do NieuweObjecten.Insert(Object) + } } - } - - If (NieuweObjecten.Count() > 0) - { - // Onze index up-to-date houden - If ('PropertiesIndex.IsDefined(Kenmerk)) + + If (NieuweObjecten.Count() > 0) { - Set WaardenIndexVoorKenmerk = ##class(%ArrayOfDataTypes).%New() - Do PropertiesIndex.SetAt(WaardenIndexVoorKenmerk,Kenmerk) + // Onze index up-to-date houden + If ('PropertiesIndex.IsDefined(Kenmerk)) + { + Set WaardenIndexVoorKenmerk = ##class(%ArrayOfDataTypes).%New() + Do PropertiesIndex.SetAt(WaardenIndexVoorKenmerk,Kenmerk) + } + Do WaardenIndexVoorKenmerk.SetAt(NieuweObjecten,GewijzigdeWaarde) } - Do WaardenIndexVoorKenmerk.SetAt(NieuweObjecten,GewijzigdeWaarde) } - } } @@ -305,6 +324,10 @@ Set ProductGroep = $Extract(GroepID,1,3) Set Rol = $Extract(GroepID,4,$Length(GroepID)) + If (Rol = "") + { + Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).InvalidInput(),"Er kon geen rol worden afgeleid uit de productgroep """_ProductGroep_"""")) + } If ('##class(%Dictionary.CompiledClass).%ExistsId("DOM.PM.Maatwerk.Calc.HF.impl."_ProductGroep_".HalffabClassNameFactory")) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).InvalidInput(),"Er werd geen halffab classname factory gevonden voor de productgroep """_ProductGroep_"""")) @@ -327,7 +350,7 @@ KenmerkModifiedEvent:TECH.Events.KenmerkModifiedEvent @@ -342,5 +365,22 @@ Do ModifiedSubscription.%Save() ]]> + + + +Do ##class(APPS.PM.KenmMWFPlugin).ResyncMFWIndex() +1 + + Index: vhUnitTest/APPS/PM/KenmMWFPluginMock.cls.xml =================================================================== diff -u -r1412 -r1458 --- vhUnitTest/APPS/PM/KenmMWFPluginMock.cls.xml (.../KenmMWFPluginMock.cls.xml) (revision 1412) +++ vhUnitTest/APPS/PM/KenmMWFPluginMock.cls.xml (.../KenmMWFPluginMock.cls.xml) (revision 1458) @@ -12,5 +12,12 @@ + + +GroepID:%String +%Boolean + +