IsRowId
Generelles
Eine Reihe von DB-Tabellen wird mithilfe der ISROWID, der Tabelle UEBERSETZUNG und den sprachabhängigen Views übersetzt. Der Aufbau der Viewnamen sieht aus wie folgt: Tabellenname + "_" + Id der Sprache.
Die eigentliche Übersetzung findet man in der Tabelle "Uebersetzung".
Die Struktur der Tabelle "Uebersetzung" sieht wie folgt aus:
Spalte |
Primärschlüssel |
Beschreibung |
TABELLENID |
|
Id der Tabelle (aus IS_TABELLENNAME.TABELLENID ) |
ISROWID |
|
Fremdschlüssel auf den zu übersetzenden Eintrag für die Tabelle |
LANGUAGE |
|
|
VALUE_0 |
|
Wert für ersten zu übersetzenden String-Feld |
VALUE_1 |
|
Wert für den zweiten zu übersetzenden String-Feld |
VALUE_TEXT_0 |
|
Wert für den zu übersetzenden Langtext |
Es wird keine Übersetzungsview für die deutsche Sprache erstellt
Ein "Insert-Statement" und eine Änderung eines Primärschlüssel durch die "save" -Methode eines Repositories führen dazu, dass ein Trigger ausgelöst wird, der die IsRowId setzt. Deshalb müssen Änderungen, die einen Primärschlüssel betreffen händisch mit einem "Update-Statement" ausgeführt werden . Das heißt auch, dass der Entwickler die IsRowId nicht selbst setzen kann.
Server
Repositories
Implementierung
Die Repositories der Domänenobjekte, die auf Tabellen basieren, die mit der IsRowId arbeiten, werden nicht von der Standard-Repository-Klasse abgeleitet sondern von der MultiLangRepository-Klasse. Bei der Implementierung eines neuen Repositories, der von MultiLangRepository ableitet, muss darauf geachtet werden, dass das Domänobjekt das Interface "IMultiLangObject" implementiert hat und das die abstrakten Feldvariablen "TableId", "Value0" und "ValueText0" gesetzt werden. "TableId" wird die TabellenId aus IS_TABELLENNAME zugewiesen und "Value0" und "ValueText0" werden die Namen der Variablen zugewiesen, die in "Value_0" und in "Value_Text_0" geschrieben werden sollen.
Die Namen die den Werten zugewiesen werden, sind case sensitive.
Funktionen
Name |
Eingabeparameter |
Ausgabe |
Beschreibung |
GetTranslated |
Id: Den Schlüssel zum Objekt den man übersetzt haben möchte Fields: Hier gibt man an aus welchen Feld man eine Übersetzung haben möchte |
string |
Mit dieser Funktion erhält man die Bezeichnung bzw. den Langtext aus der passenden Usersprache |
Delete |
Obj: Die Entität die gelöscht werden soll |
/ |
Die Funktion "Delete" aus der Basisklasse wird überschrieben. Zusätzlich zur Entiät werden auch alle dazu gehörenden Übersetzungen gelöscht |
SaveTranslation |
Id: Den Schlüssel zum Objekt , dessen Übersetzungen gespeichert werden sollen Value0: Der Wert, der in Value_0 in der Tabelle "Uebersetzung" gespeichert werden soll" ValueText0: Der Wert, der in Value_Text_0 in der Tabelle "Uebersetzung" gespeichert werden soll" |
/ |
Mit dieser Methoden können Übersetzungen in der Tabelle "Uebersetzungen" gespeichert werden. Als Sprache wird immer die jetzige Usersprache verwendet. Da die Funktion überladen ist kann entweder nur den Wert, der in "Value_0" gespeichert werden soll angegeben werden, angeben oder beide Werte ("Value_0" und "Value_Text_0") |
Controller
Bei den View Models, die zum Client geschickt werden muss darauf geachtet werden dass das View Model eine IsRowId und zusätzliche Parameter für die deutschsprachige Übersetzungen verfügt. Bei den Speichermethoden muss drauf geachtet werden, ob die Usersprache Deutsch oder eine andere Sprache ist, da die deutsche Übersetzung in der eigentlichen Tabelle gespeichert werden und die anderen in Tabelle "Uebersetzung".
Client
Entitätmodel
Das Entiätmodel braucht Variablen für die Deutschen Bezeichnungen und Langtexte und eine Variabel für die IsRowId.
EditTranslations
Implementierung
Bei der Implementierung müssen folgende Props gesetzt sein:
Name |
Beschreibung |
ref |
Ist eine Objektreferenz auf dem Dialog |
label |
Der Text den der Dialog als Überschrift hat |
saveGerman |
Ist eine Funktion, die ein Wert von Typ string übergibt, dabei handelt es sich um die bearbeitete deutsche Übersetzung. Desweiteren gibt die Funktion den Namen des Speicherziels zurück. Hier soll angegeben werden, was mit der bearbeiteten deutschen Bezeichnung bzw Text passieren soll wenn der Dialog geschlossen wird |
Aufruf
Der Dialog wird mit der Funktion "openDialog" der Referenz geöffnet. Diese Funktion erwartet folgende Parameter
Name |
Typ |
Beschreibung |
isRowId |
number(Ganzzahl) |
Die IsRowId der geöffneten Entität |
tabellenId |
number(Ganzzahl) |
Die TabellenId zu der die geöffnete Entität gehört |
target |
"value_0" | "value_1" | "value_text_0" |
Die Spalte in der Tabelle "Uebersetzung" wo, die nicht deutschen Übersetzungen gespeichert werden sollen |
germanvalue |
string |
Der deutsche Wert, dieser wird nicht in der Tabelle "Uebersetzung" gespeichert sondern in der Ursprungstabelle |