Questions & Answers

matthias_beck
I'm new here

DataStream aus dataaccess

Hi,

ich habe ein Plugin erstellt, welches aus einer Datenquelle Objekte liefert. Dabei implementiere ich das DataStream Interface in meinem Plugin, welches dem ContentCreator die Liste an Ergebnissen liefert.

Meine eigentliche Query liefert mehr als 30 Ergebnisse. รœber den DataStream wird die "List<D> getNext(int count)" Methode gecallt, allerdings werden hier nicht alle Ergebnisse abgefragt. Nach 25 Eintrรคgen scheint der ContentCreator an dieser Stelle bereits zufrieden zu sein (mรถglicherweise ist 25 ein default Wert).

Das zusรคtzliche Problem ist, dass der ContentCreator auch keine weiteren Eintrรคge nachladen tut, sofern ich ans untere Ende der Liste Scrolle.

Daher die Frage: Habe ich die Mรถglichkeit den "count" in irgend einer Art zu konfigurieren?

Setzte ich folgenden Hack in die Implementierung meiner getNext Methode:

count = count * 2

oder auch

count = count + 1

bekomme ich im ersten Fall alle Treffer direkt. Im zweiten Fall werden auf einmal sogar Eintrรคge nachgeladen sofern ich ans Ende der Liste scrolle.

Mir wรคre es lieber ich habe die Mรถglichkeit den Count zu konfigurieren. Kann mir hier jemand weiterhelfen?

0 Kudos
2 Replies
mbergmann
Crownpeak employee

Hallo Matthias,

die Anzahl der angefragten Ergebnisse ist nicht konfigurierbar und ich meine sogar vom Client (SA/CC) abhรคngig.

Bist Du sicher, dass Du auch die weitere Methode hasNext() richtig implementiert hast? Die sollte true liefern, solange die jeweiligen Aufrufe von getNext() noch nicht alles "bekommen" haben was Du liefern "kรถnntest", insbesondere soll sie nicht schon false liefern wenn Du "intern" (also im DataStream) zwar schon alle Elemente hast, sie aber noch nicht durch die getNext()-Aufrufe "ausgeliefert" wurden.

Hintergrund ist letztlich, dass dadurch ein LazyLoading ermรถglicht wird. Der Client fragt das Plugin nach den ersten X Elementen und schickt dann erst beim Scrollen (also wenn es "nรถtig" ist) eine Anfrage nach den nรคchsten Y (es kรถnnte sein, dass X und Y nicht gleich sind).

Allgemeiner Tipp: Darum ist es รผbrigens auch wichtig, in der DataStream-Implementierung - soweit mรถglich - nicht alle Objekte schon initial zu holen und bei den einzelnen getNext()-Aufrufen nur "scheibchenweise auszuliefern". Vielmehr sollten die Objekte nur "on demand" (d.h. beim jeweiligen getNext()) geholt werden - ggf. mit ein bisschen Lookahead.

รœbrigens: Soweit ich es im Kopf habe, darf ein getNext() sogar weniger Elemente liefern als "angefragt" wurden, auch wenn es weitere gibt.

Viele GrรผรŸe

Michael

0 Kudos

Hallo Michael,

das Problem war, dass die getTotal() Berechnung nicht das korrekte Ergebnis geliefert hat. Problem hat sich somit erledigt. Danke ๐Ÿ™‚

VG Matthias

0 Kudos

Type a product name