Index: vhUnitTest/DOM/PM/OL/Gamma/OPGZoekProductGroepen.cls.xml =================================================================== diff -u -r1507 -r1619 --- vhUnitTest/DOM/PM/OL/Gamma/OPGZoekProductGroepen.cls.xml (.../OPGZoekProductGroepen.cls.xml) (revision 1507) +++ vhUnitTest/DOM/PM/OL/Gamma/OPGZoekProductGroepen.cls.xml (.../OPGZoekProductGroepen.cls.xml) (revision 1619) @@ -206,7 +206,7 @@ set dtoGamma = implOrgaluxProductGamma.ZoekProductGroepen(ProductCriteria,,LadeSpec) if $IsObject(dtoGamma) { - do $$$AssertEquals(7,dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.Count(),"Controle Groep Test3") + do $$$AssertEquals(8,dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.Count(),"Controle Groep Test3") do $$$AssertEquals("ICT_GrpKey03",dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.GetAt(1).Identifier,"Controle Groep 1") do $$$AssertEquals("ICT_GrpKey04",dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.GetAt(2).Identifier,"Controle Groep 2") do $$$AssertEquals("ICT_GrpKey05",dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.GetAt(3).Identifier,"Controle Groep 3") @@ -698,7 +698,7 @@ set dtoGamma = implOrgaluxProductGamma.ZoekProductGroepen(ProductCriteria,) if $IsObject(dtoGamma) { - do $$$AssertEquals(10,dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.Count(),"Controle Groep TestHogeLade") + do $$$AssertEquals(11,dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.Count(),"Controle Groep TestHogeLade") } else { do $$$AssertTrue(0,"TestZoekProductGroepen HogeLade geen resultaten") // failed Index: DOM/PM/impl/DataM/DataMProduct.cls.xml =================================================================== diff -u -r1609 -r1619 --- DOM/PM/impl/DataM/DataMProduct.cls.xml (.../DataMProduct.cls.xml) (revision 1609) +++ DOM/PM/impl/DataM/DataMProduct.cls.xml (.../DataMProduct.cls.xml) (revision 1619) @@ -296,8 +296,8 @@ Set MultipleGroepenIt = ..GeefMultipleGroepen() While (MultipleGroepenIt.HasNext()){ Set MultipleGroep = MultipleGroepenIt.Next() - Set MultipleNrs = ##class(BL.Kenm.ProdMulti).Create(MultipleGroep).GetMultiplesLB(..GeefPRNr()) ; [Review WV JBL Kenm-Pref] De oproep ##class(BL.Kenm.ProdMulti).Create() genereert 'veel' overhead, en zou mogelijks maar 1x opgeroepen moeten worden per MultiGroep (???) - If (($ll(MultipleNrs)> 0) && ($Data(MultipleNrs))) { ; [Review WV JBL Kenm-Pref] Wat is het nut van de $Data() test ? + Set MultipleNrs = ##class(BL.Kenm.ProdMulti).Create(MultipleGroep).GetMultiplesLB(..GeefPRNr()) + If ($ll(MultipleNrs) > 0) { for i=1:1:$ll(MultipleNrs) { Do Multiples.Insert($lg(MultipleNrs,i)) @@ -309,14 +309,15 @@ +1 TECH.Iterator 1 ","Sleutel") + Do $$$ProdKenmSetAt("","InfoSleutel") + Do $$$ProdKenmSetAt("ICT_GrpKey24","GroepSleutel") + + Do $$$ProdKenmSetAt($LB("SINGLE"),"GeneratieType") + Do $$$ProdKenmSetAt($LB("vhUnitTest.com"),"WebSites") + Do $$$ProdKenmSetAt($LB("Keuken"),"MeubelToepassing") + Do $$$ProdKenmSetAt($LB("Opbergen_Borden"),"ZoneToepassing") + Do $$$ProdKenmSetAt($LB("Set"),"SamenstellingsType") + ; + Do $$$ProdKenmSetAt("WOODLINE_Noot","ProductType") + Do $$$ProdKenmSetAt($LB("TBX_intivo"),"LadeFamilie") + Do $$$ProdKenmSetAt($LB("D","D/Z"),"LadeType") + ; + Do $$$ProdKenmSetAt($LB(600),"Diepte") + Do $$$ProdKenmSetAt("900","LadeBreedteMin") + Do $$$ProdKenmSetAt("900","LadeBreedteMax") + Do $$$ProdKenmSetAt("40","ProductHoogte") + Do $$$ProdKenmSetAt($LB("TIPS_Antislipmat_AanTeRaden_SepBestellen"),"BOWeten") + } + ElseIf PRNr="1099" { Set UnID = "1099.1" Set sc=..BLProdMulti.AddProdMultiKenmerk(UnID) Index: APPS/PM/KenmerkenService.cls.xml =================================================================== diff -u -r1609 -r1619 --- APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1609) +++ APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1619) @@ -60,62 +60,41 @@ } /// UnIDs verzamelen - Set SQLUnIDs = "" - Set SQLUnIDsReedsToegevoegd = 0 + Set UnIDs = ##class(%ListOfDataTypes).%New() Set PRNrIterator = ##class(TECH.ListIterator).%New(PRNrs) While (PRNrIterator.HasNext()) { Set PRNr = PRNrIterator.Next() Set Product = ProductAPI.GeefProduct(PRNr) If ($IsObject(Product)){ - /// UnIDs verzamelen van dit PRNr - Set UnIDs = ##class(%ListOfDataTypes).%New() + /// UnIDs verzamelen van dit PRNr Set Multiples = Product.GeefMultiples() If (Multiples.Count() > 0){ Set UnIDs = Multiples }Else{ - Do UnIDs.Insert(PRNr) ; [Review WV JBL Kenm-Pref] de If-Else structuur --> je gaat ervan uit dat er geen conflicten bestaan tussen PRNr en PRNr.1 ofzo ? - } - - /// UnIDs naar SQLUnIDs - Set UnIDIt = ##class(TECH.ListIterator).%New(UnIDs) - While (UnIDIt.HasNext()){ - If (SQLUnIDsReedsToegevoegd){ - Set SQLUnIDs = SQLUnIDs_", " - } - Set SQLUnIDs = SQLUnIDs _"'"_UnIDIt.Next()_"'" - Set SQLUnIDsReedsToegevoegd = 1 - } - ; [Review WV JBL Kenm-Pref] Aparte oproep ..MaakSqlIN(%ListOfDT) en gebruik ##class(TECH.ListUtils).ListToPieces(UnIDs,"', '") + begin- en eind-quotes (') - + Do UnIDs.Insert(PRNr) + } }Else { Set ErrorMsg = "GeefProductKenmerken() : Het product met PRNr '"_PRNr_"' bestaat niet." Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),ErrorMsg)) } } + + /// UnIDs naar SQLUnIDs + Set SQLUnIDs = ..MaakSQLINParameters(UnIDs) + /// Kenmerkgroepen verzamelen - Set SQLKenmerken = "" - Set KenmerkGroepIterator = ##class(TECH.ListIterator).%New(KenmerkGroepen) - If (KenmerkGroepIterator.HasNext()){ - Set SQLKenmerken = SQLKenmerken_"'"_KenmerkGroepIterator.Next()_"'" - } - While (KenmerkGroepIterator.HasNext()){ - Set SQLKenmerken = SQLKenmerken_", '"_KenmerkGroepIterator.Next()_"'" - } - ; [Review WV JBL Kenm-Pref] idem oproepen via ..MaakSqlIN(%ListOfDT) + Set SQLKenmerken = ..MaakSQLINParameters(KenmerkGroepen) /// voorbereidend werk - Set ProductenKenmerken = ##class(APPS.PM.dto.Kenm.ProductenKenmerken).%New() - Set ProductKenmerken = ##class(APPS.PM.dto.Kenm.ProductKenmerken).%New() ; [Review WV JBL Kenm-Pref] is niet nodig volgens mij? - Set ProductKenmerkenGroep = ##class(APPS.PM.dto.Kenm.ProductKenmerkenGroep).%New() ; [Review WV JBL Kenm-Pref] is niet nodig volgens mij? - Set ProductKenmerkenSets = ##class(APPS.PM.dto.Kenm.ProductKenmerkenSet).%New() ; [Review WV JBL Kenm-Pref] is niet nodig volgens mij? - - Set Kenmerken = ##class(%ListOfObjects).%New() + Set ProductenKenmerken = ##class(APPS.PM.dto.Kenm.ProductenKenmerken).%New() + Set Kenmerken = ##class(%ListOfObjects).%New() /// DataDefinities ophalen Set RS=##class(%ResultSet).%New() Set SQLStatement = "SELECT ID, UnID, KenmerkGroep, KenmerkNaam, Waarden FROM Prod_Kenmerk.DataDefinitie where KenmerkGroep IN ( "_SQLKenmerken_" ) AND UnID In ( "_SQLUnIDs_" ) ORDER BY UnID, KenmerkGroep" + ///D WLIP^vhDBG(127,SQLStatement) Do RS.Prepare(SQLStatement) Set tmpStatus = RS.Execute(SQLKenmerken,SQLUnIDs) @@ -127,8 +106,8 @@ While (RS.Next()) { - ; [Review WV JBL Kenm-Pref] de RS.Data("UnID") wordt 5x opgevraagd. Beter in een variable steken? - Set PRNr = ##class(BL.Kenm.ProdMulti).GetCommonID(RS.Data("UnID")) + Set UnID = RS.Data("UnID") + Set PRNr = ##class(BL.Kenm.ProdMulti).GetCommonID(UnID) /// Als PRNr verandert. If (tmpPRNr '= PRNr){ @@ -147,12 +126,12 @@ /// Nagaan of dit record nog bij vorige hoort. - If (tmpUnID '= RS.Data("UnID")) { + If (tmpUnID '= UnID || (tmpKenmerkGroep '= RS.Data("KenmerkGroep"))) { Set ProductKenmerkenSet = ##class(APPS.PM.dto.Kenm.ProductKenmerkenSet).%New() - Set ProductKenmerkenSet.UnID = RS.Data("UnID") + Set ProductKenmerkenSet.UnID = UnID /// GeneratieType - Set KenmerkenSets = ProductAPI.GeefProductKenmerkenSets(PRNr, tmpKenmerkGroep) ; [Review WV JBL Kenm-Pref] Kunnen we niet beter een oproep maken ProductAPI.GeefProductKenmerkWaarden(...) ? - Set KenmerkenSet = KenmerkenSets.GeefKenmerkenSet(RS.Data("UnID")) + Set KenmerkenSets = ProductAPI.GeefProductKenmerkenSets(PRNr, tmpKenmerkGroep) + Set KenmerkenSet = KenmerkenSets.GeefKenmerkenSet(UnID) If (KenmerkenSet.GeefKenmerkWaarden("GeneratieType").Count() > 0){ Set ProductKenmerkenSet.GeneratieType = KenmerkenSet.GeefKenmerkWaarden("GeneratieType").GetAt(1) }Else{ @@ -168,7 +147,7 @@ Do ProductKenmerkenSet.Kenmerken.Insert(ProductKenmerk) Set tmpPRNr = PRNr - Set tmpUnID = RS.Data("UnID") + Set tmpUnID = UnID Set tmpKenmerkGroep = RS.Data("KenmerkGroep") } } @@ -178,6 +157,18 @@ ]]> + + +Omzetten van een lijst, naar een string die gebruikt kan worden voor een SQL 'IN' statement. +Lijst:%ListOfDataTypes +1 +%String + + + Geeft de ProductenKenmerken voor 1 product voor 1 KenmerkGroep. Index: Prod/Kenmerk/DataDefinitie.cls.xml =================================================================== diff -u -r1580 -r1619 --- Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1580) +++ Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1619) @@ -862,19 +862,6 @@ ORDER BY Waarde - - -JBL + 2011-06-30 -Performanter ophalen kenmerken -%Library.SQLQuery -KenmerkGroepen:%String,UnIDs:%String - - SELECT UnID, KenmerkNaam, Waarden - FROM Prod_Kenmerk.DataDefinitie - where KenmerkGroep IN ( :KenmerkGroepen ) AND UnID In ( :UnIDs ) - ORDER BY ID - - 1 KenmerkUnID Index: zJBLTestZoekKenmerken.mac.rou =================================================================== diff -u -r1579 -r1619 --- zJBLTestZoekKenmerken.mac.rou (.../zJBLTestZoekKenmerken.mac.rou) (revision 1579) +++ zJBLTestZoekKenmerken.mac.rou (.../zJBLTestZoekKenmerken.mac.rou) (revision 1619) @@ -7,6 +7,84 @@ Set PRNrs = ##class(%ListOfDataTypes).%New() Do PRNrs.Insert(315014) Do PRNrs.Insert(557372) + Do PRNrs.Insert(64879) + Do PRNrs.Insert(64879) + Do PRNrs.Insert(64936) + Do PRNrs.Insert(64936) + Do PRNrs.Insert(200030) + Do PRNrs.Insert(200030) + Do PRNrs.Insert(396730) + Do PRNrs.Insert(396730) + Do PRNrs.Insert(396731) + Do PRNrs.Insert(396731) + Do PRNrs.Insert(583763) + Do PRNrs.Insert(583763) + Do PRNrs.Insert(64880) + Do PRNrs.Insert(64880) + Do PRNrs.Insert(64937) + Do PRNrs.Insert(64937) + Do PRNrs.Insert(200031) + Do PRNrs.Insert(200031) + Do PRNrs.Insert(562940) + Do PRNrs.Insert(562940) + Do PRNrs.Insert(562941) + Do PRNrs.Insert(562941) + Do PRNrs.Insert(583764) + Do PRNrs.Insert(583764) + Do PRNrs.Insert(204672) + Do PRNrs.Insert(204672) + Do PRNrs.Insert(204673) + Do PRNrs.Insert(204673) + Do PRNrs.Insert(583765) + Do PRNrs.Insert(583765) + Do PRNrs.Insert(64872) + Do PRNrs.Insert(64872) + Do PRNrs.Insert(64924) + Do PRNrs.Insert(64924) + Do PRNrs.Insert(200020) + Do PRNrs.Insert(200020) + Do PRNrs.Insert(64873) + Do PRNrs.Insert(64873) + Do PRNrs.Insert(64927) + Do PRNrs.Insert(64927) + Do PRNrs.Insert(200021) + Do PRNrs.Insert(200021) + Do PRNrs.Insert(64874) + Do PRNrs.Insert(64874) + Do PRNrs.Insert(64931) + Do PRNrs.Insert(64931) + Do PRNrs.Insert(200022) + Do PRNrs.Insert(200022) + Do PRNrs.Insert(359903) + Do PRNrs.Insert(359903) + Do PRNrs.Insert(521355) + Do PRNrs.Insert(521355) + Do PRNrs.Insert(583766) + Do PRNrs.Insert(583766) + Do PRNrs.Insert(64875) + Do PRNrs.Insert(64875) + Do PRNrs.Insert(64933) + Do PRNrs.Insert(64933) + Do PRNrs.Insert(200023) + Do PRNrs.Insert(200023) + Do PRNrs.Insert(354439) + Do PRNrs.Insert(354439) + Do PRNrs.Insert(396268) + Do PRNrs.Insert(396268) + Do PRNrs.Insert(583767) + Do PRNrs.Insert(583767) + Do PRNrs.Insert(64877) + Do PRNrs.Insert(64877) + Do PRNrs.Insert(64934) + Do PRNrs.Insert(64934) + Do PRNrs.Insert(200024) + Do PRNrs.Insert(200024) + Do PRNrs.Insert(64878) + Do PRNrs.Insert(64878) + Do PRNrs.Insert(64935) + Do PRNrs.Insert(64935) + Do PRNrs.Insert(200029) + Do PRNrs.Insert(200029) Set KenmerkGroepen = ##class(%ListOfDataTypes).%New() Do KenmerkGroepen.Insert("OL") @@ -28,6 +106,84 @@ Set PRNrs = ##class(%ListOfDataTypes).%New() Do PRNrs.Insert(315014) Do PRNrs.Insert(557372) + Do PRNrs.Insert(64879) + Do PRNrs.Insert(64879) + Do PRNrs.Insert(64936) + Do PRNrs.Insert(64936) + Do PRNrs.Insert(200030) + Do PRNrs.Insert(200030) + Do PRNrs.Insert(396730) + Do PRNrs.Insert(396730) + Do PRNrs.Insert(396731) + Do PRNrs.Insert(396731) + Do PRNrs.Insert(583763) + Do PRNrs.Insert(583763) + Do PRNrs.Insert(64880) + Do PRNrs.Insert(64880) + Do PRNrs.Insert(64937) + Do PRNrs.Insert(64937) + Do PRNrs.Insert(200031) + Do PRNrs.Insert(200031) + Do PRNrs.Insert(562940) + Do PRNrs.Insert(562940) + Do PRNrs.Insert(562941) + Do PRNrs.Insert(562941) + Do PRNrs.Insert(583764) + Do PRNrs.Insert(583764) + Do PRNrs.Insert(204672) + Do PRNrs.Insert(204672) + Do PRNrs.Insert(204673) + Do PRNrs.Insert(204673) + Do PRNrs.Insert(583765) + Do PRNrs.Insert(583765) + Do PRNrs.Insert(64872) + Do PRNrs.Insert(64872) + Do PRNrs.Insert(64924) + Do PRNrs.Insert(64924) + Do PRNrs.Insert(200020) + Do PRNrs.Insert(200020) + Do PRNrs.Insert(64873) + Do PRNrs.Insert(64873) + Do PRNrs.Insert(64927) + Do PRNrs.Insert(64927) + Do PRNrs.Insert(200021) + Do PRNrs.Insert(200021) + Do PRNrs.Insert(64874) + Do PRNrs.Insert(64874) + Do PRNrs.Insert(64931) + Do PRNrs.Insert(64931) + Do PRNrs.Insert(200022) + Do PRNrs.Insert(200022) + Do PRNrs.Insert(359903) + Do PRNrs.Insert(359903) + Do PRNrs.Insert(521355) + Do PRNrs.Insert(521355) + Do PRNrs.Insert(583766) + Do PRNrs.Insert(583766) + Do PRNrs.Insert(64875) + Do PRNrs.Insert(64875) + Do PRNrs.Insert(64933) + Do PRNrs.Insert(64933) + Do PRNrs.Insert(200023) + Do PRNrs.Insert(200023) + Do PRNrs.Insert(354439) + Do PRNrs.Insert(354439) + Do PRNrs.Insert(396268) + Do PRNrs.Insert(396268) + Do PRNrs.Insert(583767) + Do PRNrs.Insert(583767) + Do PRNrs.Insert(64877) + Do PRNrs.Insert(64877) + Do PRNrs.Insert(64934) + Do PRNrs.Insert(64934) + Do PRNrs.Insert(200024) + Do PRNrs.Insert(200024) + Do PRNrs.Insert(64878) + Do PRNrs.Insert(64878) + Do PRNrs.Insert(64935) + Do PRNrs.Insert(64935) + Do PRNrs.Insert(200029) + Do PRNrs.Insert(200029) Set KenmerkGroepen = ##class(%ListOfDataTypes).%New() Do StartTimer^vhLib Index: APPS/PM/ProductService.cls.xml =================================================================== diff -u -r1542 -r1619 --- APPS/PM/ProductService.cls.xml (.../ProductService.cls.xml) (revision 1542) +++ APPS/PM/ProductService.cls.xml (.../ProductService.cls.xml) (revision 1619) @@ -75,6 +75,15 @@ While (PRNrIt.HasNext()){ Do PRNrArray.SetAt(1,PRNrIt.Next()) } + + /// Om pure performantie winst, de BL.Kenm.ProdMulti in geheugen houden + Set ProdMultiNr = 0 + Set MultipleGroepenIt = ##class(DOM.PM.impl.DataM.DataMProduct).GeefMultipleGroepen() + While (MultipleGroepenIt.HasNext()){ + Set MultipleGroep = MultipleGroepenIt.Next() + Set ProdMulti(ProdMultiNr) = ##class(BL.Kenm.ProdMulti).Create(MultipleGroep) + Set ProdMultiNr = ProdMultiNr + 1 + } Set AantalToegevoegde = 0 Set rs = rsSearch Index: vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml =================================================================== diff -u -r1602 -r1619 --- vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1602) +++ vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1619) @@ -96,6 +96,37 @@ ]]> + + +Product met kenmerken in meerdere groepen testen. + + +