N.B. Mogelijke verbeteringen: - Data-ophaal-methodes verhuizen naar een VertalingService, die dan Mockable is. - Inheritance (template-method principe) omzetten naar composition (introduceren van een "TabelWriter"-interface). 1 1 TECH.RegisteredObject 1 BronTaal:%String="N",DoelTaal:%String,VertalingsGroep:%String,Datum:%String="",Tijd:%String="" %String BronTaal:%String="N",DoelTaal:%String,VertalingsGroep:%String,Datum:%String="",Tijd:%String="" 1 VertalingsGroep:%String 1 1 %String 1 BronTaal:%String,DoelTaal:%String,ExtraTalen:TECH.Iterator 1 CelTekst:%String 1 1 1 ErrorTekst:%String 1 %ListOfDataTypes VolgNr" #dim Params As %List = $ListBuild() #dim ResultSet As TECH.ResultSet = ##class(TECH.Context).Instance().GeefQueryAPI().GetDynamicResultSet(Query,Params) While (ResultSet.Next(.sc)){ If ($SYSTEM.Status.IsOK(sc)) { Do List.Insert(ResultSet.Data("Taal")) } Else { Quit } } If $SYSTEM.Status.IsError(sc) // if there was an error, process that { Write !, "/!\ Error bij het ophalen van de talen /!\" Write !, $$ParseStatus^vhLib(sc) } Quit List ]]> 1 Tekst:%String %String ") ]]> %SQLQuery VertalingsGroep:%String,LaatstGewijzigdSinds:%Integer,Brontaal:%String :LaatstGewijzigdSinds)) OR (('F' = :Brontaal) AND (Frans.WijzigingsDatumTijd > :LaatstGewijzigdSinds)) OR (('E' = :Brontaal) AND (Engels.WijzigingsDatumTijd > :LaatstGewijzigdSinds)) OR (('D' = :Brontaal) AND (Duits.WijzigingsDatumTijd > :LaatstGewijzigdSinds)) ) GROUP BY Main.Intern, Main.Type]]> %SQLQuery VertalingsGroep:%String,Brontaal:%String Select Main.Intern, Main.Type, Nederlands.Vertaling As N, Frans.Vertaling As F, Engels.Vertaling As E, Duits.Vertaling As D from Res.VertalingAbstract As Main LEFT JOIN Res.VertalingAbstract As Nederlands On Nederlands.Intern = Main.Intern AND Nederlands.Taal = 'N' AND Main.Type = Nederlands.Type AND Main.Groep = Nederlands.Groep LEFT JOIN Res.VertalingAbstract As Frans On Frans.Intern = Main.Intern AND Frans.Taal = 'F' AND Main.Type = Frans.Type AND Main.Groep = Frans.Groep LEFT JOIN Res.VertalingAbstract As Engels On Engels.Intern = Main.Intern AND Engels.Taal = 'E' AND Main.Type = Engels.Type AND Main.Groep = Engels.Groep LEFT JOIN Res.VertalingAbstract As Duits On Duits.Intern = Main.Intern AND Duits.Taal = 'D' AND Main.Type = Duits.Type AND Main.Groep = Duits.Groep WHERE Main.Groep = :VertalingsGroep AND (Main.Type='K' OR Main.Type = 'O' OR Main.Type = 'L') GROUP BY Main.Intern, Main.Type