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 finden Sie 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 erstes zu übersetzendes String-Feld |
VALUE_1 |
|
Wert für zweites zu übersetzendes 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üssels 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: Schlüssel zum Objekt der übersetzt werden soll Fields: Geben Sie an, aus welchem Feld die Übersetzung sein soll |
string |
Mit dieser Funktion erhalten Sie die Bezeichnung bzw. den Langtext aus der passenden User-Sprache |
Delete |
Obj: 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: 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 Methode können Übersetzungen in der Tabelle "Uebersetzungen" gespeichert werden. Als Sprache wird immer die aktuelle User-Sprache verwendet. Da die Funktion überladen ist, kann entweder nur der Wert, der in "Value_0" gespeichert werden soll angegeben werden 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 über eine IsRowId und zusätzliche Parameter für die deutschsprachigen Übersetzungen verfügt. Bei den Speichermethoden muss drauf geachtet werden, ob die User-Sprache Deutsch oder eine andere Sprache ist, da die deutsche Übersetzung in der eigentlichen Tabelle gespeichert wird und die anderen in Tabelle "Uebersetzung".
Client
Entitätmodel
Das Entiätmodel braucht Variablen für die deutschen Bezeichnungen und Langtexte und eine Variable 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 einen 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" in welcher die nicht deutschen Übersetzungen gespeichert werden sollen |
germanvalue |
string |
Der deutsche Wert, dieser wird nicht in der Tabelle "Uebersetzung" gespeichert sondern in der Ursprungstabelle |