Index: APPS/PM/KenmMWFPlugin.cls.xml =================================================================== diff -u --- APPS/PM/KenmMWFPlugin.cls.xml (revision 0) +++ APPS/PM/KenmMWFPlugin.cls.xml (revision 1412) @@ -0,0 +1,291 @@ + + + +1 +%RegisteredObject +0 + + +TECH.Events.KenmerkenModifiedEventData +1 + + + +KenmerkenModifiedEventData:TECH.Events.KenmerkenModifiedEventData +1 +1 +%Status + + + + +1 + + + + +KenmerkModifiedEventData:TECH.Events.KenmerkModifiedEventData +1 + 0)) + { + // 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() + { + 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)) + { + Set WaardenIndexVoorKenmerk = ##class(%ArrayOfDataTypes).%New() + Do PropertiesIndex.SetAt(WaardenIndexVoorKenmerk,Kenmerk) + } + Do WaardenIndexVoorKenmerk.SetAt(NieuweObjecten,GewijzigdeWaarde) + } + + } + } + + Set OperatieScope = ##class(TECH.OperatieScope).StartMetTx() + + Set Iterator = ##class(TECH.ListIterator).%New(TeBewarenObjecten) + While (Iterator.HasNext()) + { + Set Object = Iterator.Next() + Set Status = Object.%Save() + } + + Set Iterator = ##class(TECH.ListIterator).%New(ObjectenTeVerwijderenLijst) + + While (Iterator.HasNext()) + { + Set Object = Iterator.Next() + Set Status = Object.%DeleteId(Object.%Id()) + } + + Do OperatieScope.Gelukt() +]]> + + + +GroepID:%String +1 +%String + + + + +1 +KenmerkenModifiedEvent:TECH.Events.KenmerkenModifiedEvent + + + + +1 +KenmerkModifiedEvent:TECH.Events.KenmerkModifiedEvent + + + + +1 + + + + Index: vhUnitTest/APPS/PM/KenmMWFPluginMock.cls.xml =================================================================== diff -u --- vhUnitTest/APPS/PM/KenmMWFPluginMock.cls.xml (revision 0) +++ vhUnitTest/APPS/PM/KenmMWFPluginMock.cls.xml (revision 1412) @@ -0,0 +1,16 @@ + + + +1 +APPS.PM.KenmMWFPlugin +0 + + +GroepID:%String +1 +%String + + + + Index: vhUnitTest/APPS/PM/HalffabUT.cls.xml =================================================================== diff -u --- vhUnitTest/APPS/PM/HalffabUT.cls.xml (revision 0) +++ vhUnitTest/APPS/PM/HalffabUT.cls.xml (revision 1412) @@ -0,0 +1,50 @@ + + + +persistent +1 +%Persistent +0 + + +%Integer + + + +%String + + + +%String + + + +%String + + + +%Library.CacheStorage +^vhUnitTest.APPS.PM.HalffabUTD +HalffabUTDefaultData +^vhUnitTest.APPS.PM.HalffabUTD +^vhUnitTest.APPS.PM.HalffabUTI +^vhUnitTest.APPS.PM.HalffabUTS + +listnode +"HalffabUT" + +Kenmerk1 + + +Kenmerk2 + + +Kenmerk3 + + +%%CLASSNAME + + + + + Index: vhUnitTest/APPS/PM/TestKenmMWFPlugin.cls.xml =================================================================== diff -u --- vhUnitTest/APPS/PM/TestKenmMWFPlugin.cls.xml (revision 0) +++ vhUnitTest/APPS/PM/TestKenmMWFPlugin.cls.xml (revision 1412) @@ -0,0 +1,257 @@ + + + + +Do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","APPS.PM.TestKenmMWFPlugin") +1 +vhUnitTest.TestCase +0 + + + 2 x 2 combinaties") + + /* + +----------+----------+----------+ + | Kenmerk1 | Kenmerk2 | Kenmerk3 | + +----------+----------+----------+ + | | | Waarde1 | + +----------+----------+----------+ + */ + + Set KenmerkenModifiedEventData = ##class(TECH.Events.KenmerkenModifiedEventData).%New() + Set Waarden = ##class(%ListOfDataTypes).%New() + Set KenmerkModifiedEventData = ##class(TECH.Events.KenmerkModifiedEventData).%New(32988,"UTKenmerkGroep","Kenmerk1",Waarden) + Do KenmerkenModifiedEventData.Wijzigingen.Insert(KenmerkModifiedEventData) + + Set Waarden = ##class(%ListOfDataTypes).%New() + Set KenmerkModifiedEventData = ##class(TECH.Events.KenmerkModifiedEventData).%New(32988,"UTKenmerkGroep","Kenmerk2",Waarden) + Do KenmerkenModifiedEventData.Wijzigingen.Insert(KenmerkModifiedEventData) + + Set Waarden = ##class(%ListOfDataTypes).%New() + Do Waarden.Insert("Waarde1") + Set KenmerkModifiedEventData = ##class(TECH.Events.KenmerkModifiedEventData).%New(32988,"UTKenmerkGroep","Kenmerk3",Waarden) + Do KenmerkenModifiedEventData.Wijzigingen.Insert(KenmerkModifiedEventData) + + Do ##class(vhUnitTest.APPS.PM.KenmMWFPluginMock).%New(KenmerkenModifiedEventData) + + Do ..GeefAantalUniekeWaarden(.Kenmerk1,.Kenmerk2,.Kenmerk3,.AantalRijen) + + Do $$$AssertEquals(Kenmerk1,0,"Er zijn geen waarden voor kenmerk1") + Do $$$AssertEquals(Kenmerk2,0,"Er zijn geen waarden voor kenmerk2") + Do $$$AssertEquals(Kenmerk3,1,"Er is 1 waarde voor kenmerk3") + Do $$$AssertEquals(AantalRijen,1,"Er is 1 rij") + + /* + +----------+----------+----------+ + | Kenmerk1 | Kenmerk2 | Kenmerk3 | + +----------+----------+----------+ + | | | | + +----------+----------+----------+ + */ + + Set KenmerkenModifiedEventData = ##class(TECH.Events.KenmerkenModifiedEventData).%New() + Set Waarden = ##class(%ListOfDataTypes).%New() + Set KenmerkModifiedEventData = ##class(TECH.Events.KenmerkModifiedEventData).%New(32988,"UTKenmerkGroep","Kenmerk1",Waarden) + Do KenmerkenModifiedEventData.Wijzigingen.Insert(KenmerkModifiedEventData) + + Set Waarden = ##class(%ListOfDataTypes).%New() + Set KenmerkModifiedEventData = ##class(TECH.Events.KenmerkModifiedEventData).%New(32988,"UTKenmerkGroep","Kenmerk2",Waarden) + Do KenmerkenModifiedEventData.Wijzigingen.Insert(KenmerkModifiedEventData) + + Set Waarden = ##class(%ListOfDataTypes).%New() + Set KenmerkModifiedEventData = ##class(TECH.Events.KenmerkModifiedEventData).%New(32988,"UTKenmerkGroep","Kenmerk3",Waarden) + Do KenmerkenModifiedEventData.Wijzigingen.Insert(KenmerkModifiedEventData) + + Do ##class(vhUnitTest.APPS.PM.KenmMWFPluginMock).%New(KenmerkenModifiedEventData) + + Do ..GeefAantalUniekeWaarden(.Kenmerk1,.Kenmerk2,.Kenmerk3,.AantalRijen) + + Do $$$AssertEquals(Kenmerk1,0,"Er zijn geen waarden") + Do $$$AssertEquals(Kenmerk2,0,"Er zijn geen waarden") + Do $$$AssertEquals(Kenmerk3,0,"Er zijn geen waarden") + Do $$$AssertEquals(AantalRijen,1,"Er is 1 rij (de null-null-null rij)") + + Do ##class(vhUnitTest.APPS.PM.HalffabUT).%KillExtent() +]]> + + + + + + + +