/** * Retrieves the query component out of the context. * * @param context * the action context. * @return the query component. */ @Override protected IQueryComponent getQueryComponent(Map<String, Object> context) { FilterableBeanCollectionModule module = (FilterableBeanCollectionModule) getModule(context); return module.getFilter(); }
/** * {@inheritDoc} */ @Override public boolean execute(IActionHandler actionHandler, Map<String, Object> context) { if (queryAction != null) { FilterableBeanCollectionModule module = (FilterableBeanCollectionModule) getModuleConnector( context).getConnectorValue(); IValueConnector filterConnector = getModuleConnector(context) .getChildConnector("filter"); context .put(ActionContextConstants.QUERY_MODEL_CONNECTOR, filterConnector); IQueryComponent filter = (IQueryComponent) module.getFilter(); if (actionHandler.execute(queryAction, context)) { module.setModuleObjects(filter.getQueriedComponents()); filter.setQueriedComponents(null); } } return super.execute(actionHandler, context); }
/** * Extracts the result list out of the module. * <p> * {@inheritDoc} */ @SuppressWarnings("unchecked") @Override protected List<? extends IComponent> getExistingResultList( IQueryComponent queryComponent, Map<String, Object> context) { FilterableBeanCollectionModule module = (FilterableBeanCollectionModule) getModule(context); return (List<? extends IComponent>) module.getModuleObjects(); }
/** * Assigns the result list to the module. * <p> * {@inheritDoc} */ @Override protected void queryPerformed(IQueryComponent queryComponent, Map<String, Object> context) { FilterableBeanCollectionModule module = (FilterableBeanCollectionModule) getModule(context); List<?> currentModuleObjects = module.getModuleObjects(); List<Object> targetModuleObjects = new ArrayList<>( queryComponent.getQueriedComponents()); // We need to preserve transient entities from being lost. if (currentModuleObjects != null) { for (Object comp : currentModuleObjects) { if (comp instanceof IEntity && !((IEntity) comp).isPersistent() && !targetModuleObjects.contains(comp)) { targetModuleObjects.add(comp); } } } module.setModuleObjects(targetModuleObjects); //queryComponent.setQueriedComponents(null); } }