Class PlatformArgService
- All Implemented Interfaces:
EntityArgService<ArrayDesign, ArrayDesignService>
-
Field Summary
Fields inherited from class AbstractEntityArgService
service -
Constructor Summary
ConstructorsConstructorDescriptionPlatformArgService(ArrayDesignService service, ExpressionExperimentService eeService, CompositeSequenceService csService, CompositeSequenceArgService csArgService) -
Method Summary
Modifier and TypeMethodDescriptiongetBlacklistedPlatformsByCursor(Filters filters, Cursor cursor, int limit) Cursor-mode counterpart toArrayDesignService.loadBlacklistedValueObjects(Filters, Sort, int, int).getElementFilters(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg) Filters for the/{platform}/elements/{probes}endpoints: the platform scope AND the{probes}id/name set restriction.getElements(PlatformArg<?> arg, int limit, int offset) Retrieves the design elements of the platform that this argument represents.getElements(PlatformArg<?> arg, int limit, int offset, boolean withSequence) Variant that opt-in hydrates the probe-sequence projection (sequence + length) via a single batch HQL after the main page is fetched.getElements(PlatformArg<?> arg, int limit, int offset, boolean withSequence, boolean withGenes, Collection<Long> geneIds) Full-projection variant: adds the opt-in gene column (withGenes) and the opt-in gene restriction (geneIds).getElements(PlatformArg<?> arg, Filters userFilters, Collection<Long> geneIds, int limit, int offset, boolean withSequence, boolean withGenes) Widest offset-mode variant: user-suppliedfilter=conjunct on top of everything else.getElements(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg, int limit, int offset, boolean withSequence) Offset-mode variant ofgetElementsByCursor(PlatformArg, CompositeSequenceArrayArg, Cursor, int, boolean).getElements(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg, int limit, int offset, boolean withSequence, boolean withGenes) Probe-set variant with the opt-in gene column.getElementsByCursor(PlatformArg<?> arg, Cursor cursor, int limit) Cursor-mode counterpart togetElements(PlatformArg, int, int): keyset pagination over thedesign elementsof a single platform, always sorted by ascendingid(the primary key, indexed and unique) — seeCURSOR_PAGINATION_STEP1_PLAN.mdstep 1e.getElementsByCursor(PlatformArg<?> arg, Cursor cursor, int limit, boolean withSequence) Cursor-mode variant ofgetElements(PlatformArg, int, int, boolean).getElementsByCursor(PlatformArg<?> arg, Cursor cursor, int limit, boolean withSequence, boolean withGenes, Collection<Long> geneIds) Cursor-mode variant ofgetElements(PlatformArg, int, int, boolean, boolean, Collection).getElementsByCursor(PlatformArg<?> arg, Filters userFilters, Collection<Long> geneIds, Cursor cursor, int limit, boolean withSequence, boolean withGenes) Widest cursor-mode variant; seegetElements(PlatformArg, Filters, Collection, int, int, boolean, boolean).getElementsByCursor(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg, Cursor cursor, int limit) Cursor-mode counterpart toFilteringVoEnabledService.loadValueObjects(Filters, Sort, int, int)scoped to a single platform AND a fixed set of probe identifiers (the/{platform}/elements/{probes}endpoint) — seeCURSOR_PAGINATION_STEP1_PLAN.mdstep 1j.getElementsByCursor(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg, Cursor cursor, int limit, boolean withSequence) Cursor-mode + probe-set variant ofgetElements(PlatformArg, int, int, boolean).getElementsByCursor(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg, Cursor cursor, int limit, boolean withSequence, boolean withGenes) Cursor-mode + probe-set variant with the opt-in gene column.getExperiments(PlatformArg<?> arg, int limit, int offset) Retrieves the Datasets of the Platform that this argument represents.getExperimentsByCursor(PlatformArg<?> arg, Cursor cursor, int limit) Cursor-mode counterpart togetExperiments(PlatformArg, int, int): keyset pagination over thedatasetsthat use a single platform, always sorted by ascendingid(the primary key, indexed and unique) — seeCURSOR_PAGINATION_STEP1_PLAN.mdstep 1f.getPlatformsByCursor(Filters filters, Cursor cursor, int limit) Cursor-mode counterpart toSecurableFilteringVoEnabledService.loadValueObjects(Filters, Sort, int, int).Methods inherited from class AbstractEntityArgService
checkEntity, entityArgValueOf, getArgsByPropertyName, getElementClass, getEntities, getEntities, getEntity, getFilterableProperties, getFilterablePropertyAllowedValues, getFilterablePropertyConfigAttributes, getFilterablePropertyDescription, getFilterablePropertyResolvableAllowedValuesLabels, getFilterablePropertyType, getFilters, getFilters, getFilters, getSort, isFilterablePropertyDeprecated, isFilterablePropertyUsingSubquery
-
Constructor Details
-
PlatformArgService
@Autowired public PlatformArgService(ArrayDesignService service, ExpressionExperimentService eeService, CompositeSequenceService csService, CompositeSequenceArgService csArgService)
-
-
Method Details
-
getPlatformsByCursor
public CursorPage<ArrayDesignValueObject> getPlatformsByCursor(@Nullable Filters filters, @Nullable Cursor cursor, int limit) Cursor-mode counterpart toSecurableFilteringVoEnabledService.loadValueObjects(Filters, Sort, int, int). Always sorts by ascendingid(the primary key, indexed and unique) — seeCURSOR_PAGINATION_STEP1_PLAN.mdstep 1c. The user's?filter=arg still applies; the user's?sort=arg is intentionally not honoured in cursor mode because the DAO currently restricts cursors to single-component id sorts (recce sec. 3.4 — to be lifted in phase B once the index audit is complete). -
getExperiments
public Slice<ExpressionExperimentValueObject> getExperiments(PlatformArg<?> arg, int limit, int offset) Retrieves the Datasets of the Platform that this argument represents.- Returns:
- a collection of Datasets that the platform represented by this argument contains.
-
getElements
Retrieves the design elements of the platform that this argument represents.- Returns:
- a collection of design element VOs that the platform represented by this argument contains.
-
getElements
public Slice<CompositeSequenceValueObject> getElements(PlatformArg<?> arg, int limit, int offset, boolean withSequence) Variant that opt-in hydrates the probe-sequence projection (sequence + length) via a single batch HQL after the main page is fetched. Defaultfalsepreserves the legacy default response size — sequences are 25-300bp per probe and would inflate a 22k-element listing by ~1 MB. -
getElements
public Slice<CompositeSequenceValueObject> getElements(PlatformArg<?> arg, int limit, int offset, boolean withSequence, boolean withGenes, @Nullable Collection<Long> geneIds) Full-projection variant: adds the opt-in gene column (withGenes) and the opt-in gene restriction (geneIds).When
geneIdsis non-null the page is restricted to the elements on this platform that map to one of those genes, resolved throughGENE2CSand composed as an extracs.id in (...)conjunct on top of the platform-scope filter. Composing rather than replacing means the existing offset pagination, sorting and count queries all apply unchanged. A non-nullgeneIdsthat matches no element on this platform short-circuits to an empty page — never to an unrestricted one. -
getElements
public Slice<CompositeSequenceValueObject> getElements(PlatformArg<?> arg, @Nullable Filters userFilters, @Nullable Collection<Long> geneIds, int limit, int offset, boolean withSequence, boolean withGenes) Widest offset-mode variant: user-suppliedfilter=conjunct on top of everything else.The platform scope is composed FIRST and the user filter ANDed onto it, so a user filter can narrow the listing but never widen it past the platform in the path.
-
getElementFilters
Filters for the/{platform}/elements/{probes}endpoints: the platform scope AND the{probes}id/name set restriction.Both conjuncts matter.
CompositeSequenceArrayArg.getPlatformFilter()encodes ONLY the platform scope, so composing it alone — which is what this endpoint did until 2026-08-22 — silently answered/platforms/GPL96/elements/1007_s_atwith the first page of GPL96 rather than with the one probe asked for. The id/name clause comes fromAbstractEntityArgService.getFilters(AbstractEntityArrayArg), the same builder every other array-arg endpoint uses. -
getElementsByCursor
public CursorPage<CompositeSequenceValueObject> getElementsByCursor(PlatformArg<?> arg, @Nullable Cursor cursor, int limit) Cursor-mode counterpart togetElements(PlatformArg, int, int): keyset pagination over thedesign elementsof a single platform, always sorted by ascendingid(the primary key, indexed and unique) — seeCURSOR_PAGINATION_STEP1_PLAN.mdstep 1e. The path-derivedarrayDesign.id = ?constraint is preserved (composed into theFiltersbefore the DAO call) so the cursor-mode result is restricted to the same platform that the offset-mode result would be. The legacy offset-modeSortwasnull(DAO default); cursor mode tightens this to an explicit id-asc sort because the cursor DAO currently restricts cursors to single-component id sorts (recce sec. 3.4 — to be lifted in phase B once the index audit is complete). -
getElementsByCursor
public CursorPage<CompositeSequenceValueObject> getElementsByCursor(PlatformArg<?> arg, @Nullable Cursor cursor, int limit, boolean withSequence) Cursor-mode variant ofgetElements(PlatformArg, int, int, boolean). -
getElementsByCursor
public CursorPage<CompositeSequenceValueObject> getElementsByCursor(PlatformArg<?> arg, @Nullable Cursor cursor, int limit, boolean withSequence, boolean withGenes, @Nullable Collection<Long> geneIds) Cursor-mode variant ofgetElements(PlatformArg, int, int, boolean, boolean, Collection). The gene restriction is composed as an extra conjunct exactly as in offset mode, so the keyset walk stays on the sameid-asc ordering and the cursor tokens remain interchangeable across pages of the same query. -
getElementsByCursor
public CursorPage<CompositeSequenceValueObject> getElementsByCursor(PlatformArg<?> arg, @Nullable Filters userFilters, @Nullable Collection<Long> geneIds, @Nullable Cursor cursor, int limit, boolean withSequence, boolean withGenes) Widest cursor-mode variant; seegetElements(PlatformArg, Filters, Collection, int, int, boolean, boolean). -
getElementsByCursor
public CursorPage<CompositeSequenceValueObject> getElementsByCursor(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg, @Nullable Cursor cursor, int limit) Cursor-mode counterpart toFilteringVoEnabledService.loadValueObjects(Filters, Sort, int, int)scoped to a single platform AND a fixed set of probe identifiers (the/{platform}/elements/{probes}endpoint) — seeCURSOR_PAGINATION_STEP1_PLAN.mdstep 1j. Always sorted by ascendingid(the primary key, indexed and unique) because the cursor DAO currently restricts cursors to single-component id sorts (recce sec. 3.4 — to be lifted in phase B once the index audit is complete).Filter composition matches the offset variant exactly:
Filters.by(probesArg.getPlatformFilter()).CompositeSequenceArrayArg.getPlatformFilter()already encodes both thearrayDesign.id = ?platform-scope and theid IN (...)/name IN (...)probe-set restriction, so we don't need to compose them separately here. -
getElements
public Slice<CompositeSequenceValueObject> getElements(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg, int limit, int offset, boolean withSequence) Offset-mode variant ofgetElementsByCursor(PlatformArg, CompositeSequenceArrayArg, Cursor, int, boolean). Mirrors the inline call at the legacy/{platform}/elements/{probes}offset path sowithSequenceworks there too, not just in cursor mode. -
getElements
public Slice<CompositeSequenceValueObject> getElements(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg, int limit, int offset, boolean withSequence, boolean withGenes) Probe-set variant with the opt-in gene column. -
getElementsByCursor
public CursorPage<CompositeSequenceValueObject> getElementsByCursor(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg, @Nullable Cursor cursor, int limit, boolean withSequence) Cursor-mode + probe-set variant ofgetElements(PlatformArg, int, int, boolean). -
getElementsByCursor
public CursorPage<CompositeSequenceValueObject> getElementsByCursor(PlatformArg<?> arg, CompositeSequenceArrayArg probesArg, @Nullable Cursor cursor, int limit, boolean withSequence, boolean withGenes) Cursor-mode + probe-set variant with the opt-in gene column. -
getExperimentsByCursor
public CursorPage<ExpressionExperimentValueObject> getExperimentsByCursor(PlatformArg<?> arg, @Nullable Cursor cursor, int limit) Cursor-mode counterpart togetExperiments(PlatformArg, int, int): keyset pagination over thedatasetsthat use a single platform, always sorted by ascendingid(the primary key, indexed and unique) — seeCURSOR_PAGINATION_STEP1_PLAN.mdstep 1f. The path-derivedbioAssays.arrayDesignUsed.id = ?constraint is preserved (composed into theFiltersbefore the DAO call) so the cursor-mode result is restricted to the same platform that the offset-mode result would be. The legacy offset-modeSortkeyed offbioAssays.arrayDesignUsed.id(not stable for keyset pagination); cursor mode tightens this to an explicit id-asc sort because the cursor DAO currently restricts cursors to single-component id sorts (recce sec. 3.4 — to be lifted in phase B once the index audit is complete). -
getBlacklistedPlatformsByCursor
public CursorPage<ArrayDesignValueObject> getBlacklistedPlatformsByCursor(@Nullable Filters filters, @Nullable Cursor cursor, int limit) Cursor-mode counterpart toArrayDesignService.loadBlacklistedValueObjects(Filters, Sort, int, int). Always sorts by ascendingid(the primary key, indexed and unique) — seeCURSOR_PAGINATION_STEP1_PLAN.mdstep 1h. The user's?filter=arg still applies; the user's?sort=arg is intentionally not honoured in cursor mode because the DAO currently restricts cursors to single-component id sorts (recce sec. 3.4 — to be lifted in phase B once the index audit is complete). The blacklist short-name/accession predicate is composed inside the DAO (ArrayDesignDaoImpl#composeBlacklistFilters) so the same blacklist scope is enforced identically in both modes.
-