OPUS4 / framework

OPUS 4 Database Implementation
Other
2 stars 7 forks source link

Role-Feld von DnbInsitute-Link-Klasse unabhängig von DB setzen #309

Open j3nsch opened 2 years ago

j3nsch commented 2 years ago

Wenn ein DnbInstitute zu einem Dokument hinzugefügt wird, können die beiden Felder ThesisPublisher und ThesisGrantor verwendet werden. Die Link-Klasse, Opus_Model_Dependent_Link_DocumentDnbInstitute, hat dafür ein Role-Feld in dem entweder "publisher" oder "grantor" steht. Beide Felder werden in der selben Datenbank-Tabelle gespeichert.

Das Role-Feld ist als internal markiert. Das heißt es kann nicht mit den set/get-Funktionen verändert werden. Es taucht aber als Teil des von toArray erzeugten Arrays auf. Bei der Verwendung eines solchen Arrays mit fromArray kommt es dann zu einer Fehlermeldung, weil 'Role' nicht direkt gesetzt werden kann. Das ist leicht zu beheben.

Trotzdem sollte sich das Datenmodell unabhängig von der Datenbank konsistent verhalten. Das heißt wenn ich ein Institute als ThesisPublisher zu einem Document hinzufüge und anschließend mit getThesisPublisher abfrage und in ein Array umwandel, sollte das Feld 'Role' auf 'publisher' gesetzt sein und nicht auf null.

Das Feld Role ist momentan erst gesetzt, wenn das Modell in der Datenbank gespeichert und wieder ausgelesen wurde.

Eine alternative Lösung könnte es sein, das Feld 'Role', weil es internal ist, auch aus dem Array herauszuhalten und daher mehr oder weniger unsichtbar zu machen. Evtl. sollte es gar nicht mehr als "Feld" auftauchen.

Ziel ist ein Datenmodell, dass sich normalen Erwartungen entsprechend verhält, unabhängig von der Datenbank.