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().GetResultSet(##class(TECH.DynamicQuery).%New(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)) OR (('DA' = :Brontaal) AND (Deens.WijzigingsDatumTijd > :LaatstGewijzigdSinds)) OR (('IT' = :Brontaal) AND (Italiaans.WijzigingsDatumTijd > :LaatstGewijzigdSinds)) OR (('ES' = :Brontaal) AND (Spaans.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, Deens.Vertaling As DA, Italiaans.Vertaling As IT, Spaans.Vertaling As ES 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 LEFT JOIN Res.VertalingAbstract As Deens On Deens.Intern = Main.Intern AND Deens.Taal = 'DA' AND Main.Type = Deens.Type AND Main.Groep = Deens.Groep LEFT JOIN Res.VertalingAbstract As Italiaans On Italiaans.Intern = Main.Intern AND Italiaans.Taal = 'IT' AND Main.Type = Italiaans.Type AND Main.Groep = Italiaans.Groep LEFT JOIN Res.VertalingAbstract As Spaans On Spaans.Intern = Main.Intern AND Spaans.Taal = 'ES' AND Main.Type = Spaans.Type AND Main.Groep = Spaans.Groep WHERE Main.Groep = :VertalingsGroep AND (Main.Type='K' OR Main.Type = 'O' OR Main.Type = 'L') GROUP BY Main.Intern, Main.Type