hashcode MemDataBook/RemoteDataBook

Allgemeine Fragen zur Entwicklung von und mit JVx.

hashcode MemDataBook/RemoteDataBook

Postby manfrede » Wed Jan 22, 2014 4:37 pm

Alle im JVx Standard definierten Implementierungen des IDataBook Interfaces bauen auf die Klasse DataRow auf. Diese Klasse hat die Methode hashCode() überladen. Bei einem Wechsel der aktuell selektierten Row ändert sich der hashcode.

Damit ist es fast ein Ding der Unmöglichkeit RemoteDataBooks in hashed Collections unterzubringen.

Für die Rows mag das ja noch praktisch sein (selbe Rowdefinition + selbe Daten = selber hashcode), aber für DataBooks? Ist das gewollt?

Da ich mir sicher bin, dass die Frage aufaucht. Also, warum fällt das auf bzw. was ist der Use-Case?
Unsere Applikation verwaltet pro Workscreen die im Lebenszyklus eines IDataBooks neu angelegten sowie geänderten Datensätze, damit man sich auf Knopfdruck ansehen kann, welche Datensätze berieits editiert wurden.
Dazu müssen irgendwo natürlich die zuvor eingestellten Filter bzw. Sortierkriterien zwischengespeichert werden -> Collection.
manfrede
 
Posts: 21
Joined: Tue Oct 22, 2013 11:45 am

Re: hashcode MemDataBook/RemoteDataBook

Postby mhandsteiner » Wed Jan 22, 2014 5:18 pm

Die Implementierung von hashCode und equals ist notwendig, damit sich laut API kein Unterschied für Editoren ergibt.
Ein DataBook soll sich gleich wie die aktuell selektierte Zeile verhalten.

DataBooks können trotzdem leicht in List und Map verwendet werden:

Um DataBooks einfach in Listen verwalten zu können bieten wir die Klasse ArrayUtil.
In ArrayUtil kann mit indexOfReference oder containsReference gesucht werden.
Diese Funktionen verwenden == Operator und vergleichen somit auf dieselbe Objekt Referenz.

Um DataBooks einfach in Maps verwalten zu können bietet Java die Klasse IdentityHashMap.
Auch hier wird der Key mit der Objekt Referenz gespeichert und gesucht.
mhandsteiner
 
Posts: 14
Joined: Mon Sep 28, 2009 2:17 pm

Re: hashcode MemDataBook/RemoteDataBook

Postby manfrede » Thu Jan 23, 2014 11:29 am

Ich hab mir so was ähnliches bereits gedacht.

Aber der Tipp mit der IdentityHashMap ist interessant. Kannte ich nicht. Man lernt jedenfalls nicht aus.
manfrede
 
Posts: 21
Joined: Tue Oct 22, 2013 11:45 am


Return to Entwicklung