Example usage for org.apache.commons.collections4 CollectionUtils isNotEmpty

List of usage examples for org.apache.commons.collections4 CollectionUtils isNotEmpty

Introduction

In this page you can find the example usage for org.apache.commons.collections4 CollectionUtils isNotEmpty.

Prototype

public static boolean isNotEmpty(final Collection<?> coll) 

Source Link

Document

Null-safe check if the specified collection is not empty.

Usage

From source file:org.efaps.ui.wicket.components.form.FormPanel.java

/**
 * @param _wicketId wicket id of this component
 * @param _page page this component is in
 * @param _model model of this component
 * @param _formelementmodel model of the form element
 * @param _form fom container/*from  w w  w.j  a va 2  s . co  m*/
 * @throws EFapsException on error
 */
public FormPanel(final String _wicketId, final Page _page, final IModel<UIForm> _model,
        final FormElement _formelementmodel, final FormContainer _form) throws EFapsException {
    super(_wicketId, _model);
    final UIForm uiForm = _model.getObject();
    if (!uiForm.isInitialized()) {
        uiForm.execute();
    }

    final RepeatingView rowRepeater = new RepeatingView("rowRepeater");
    this.add(rowRepeater);

    for (final Iterator<FormRow> uiRowIter = _formelementmodel.getRowModels(); uiRowIter.hasNext();) {
        final FormRow formRow = uiRowIter.next();
        if (CollectionUtils.isNotEmpty(formRow.getValues())) {
            final RowPanel row = new RowPanel(rowRepeater.newChildId(), Model.of(formRow), uiForm, _form);
            rowRepeater.add(row);
        }
    }

    final RepeatingView hiddenRepeater = new RepeatingView("hiddenRepeater");
    this.add(hiddenRepeater);
    for (final IHidden cell : uiForm.getHidden()) {
        if (!cell.isAdded()) {
            hiddenRepeater.add(cell.getComponent(hiddenRepeater.newChildId()));
            cell.setAdded(true);
        }
    }
    boolean menuUpdate = true;
    final List<EmbeddedLink> links = EFapsSession.get().getEmbededLinks();
    if (!links.isEmpty()) {
        if (((AbstractContentPage) _page).getCalledByPageReference() != null) {
            final Page callPage = ((AbstractContentPage) _page).getCalledByPageReference().getPage();
            if (callPage instanceof MainPage) {
                menuUpdate = false;
            }
        } else {
            menuUpdate = !(_page instanceof FormPage);
        }
    }
    for (final EmbeddedLink link : links) {
        if (menuUpdate) {
            hiddenRepeater.add(new LinkElementComponent(hiddenRepeater.newChildId(), link));
        } else {
            hiddenRepeater.add(new LinkElementLink(hiddenRepeater.newChildId(), link));
        }
    }
    EFapsSession.get().getEmbededLinks().clear();
}

From source file:org.efaps.ui.wicket.components.FormContainer.java

@Override
public void process(final IFormSubmitter _submittingComponent) {
    // if their is a GridXComponent convert the ids to oids
    visitChildren(GridXComponent.class, new IVisitor<GridXComponent, Void>() {

        @Override//  www  .j  a v  a 2 s  . c  om
        public void component(final GridXComponent _gridX, final IVisit<Void> _visit) {
            try {
                final EFapsRequestParametersAdapter parameters = (EFapsRequestParametersAdapter) getRequest()
                        .getRequestParameters();
                final List<StringValue> selectedRows = parameters.getParameterValues("selectedRow");
                if (CollectionUtils.isNotEmpty(selectedRows)) {
                    final List<StringValue> newValues = new ArrayList<>();
                    for (final StringValue value : selectedRows) {
                        final UIGrid uiGrid = (UIGrid) _gridX.getDefaultModelObject();
                        final Row row = uiGrid.getValues().get(value.toInt());
                        newValues.add(StringValue.valueOf(row.getInstance().getOid()));
                    }
                    parameters.setParameterValues("selectedRow", newValues);
                }
            } catch (StringValueConversionException | EFapsException e) {
                FormContainer.LOG.error("Catched exeption", e);
            }
        }
    });

    // for a dropdown add the previous value as a parameter
    if (_submittingComponent instanceof AjaxFormSubmitter
            && ((AjaxFormSubmitter) _submittingComponent).getFormSubmittingComponent() != null
            && ((AjaxFormSubmitter) _submittingComponent)
                    .getFormSubmittingComponent() instanceof DropDownField) {
        final Object object = ((DropDownField) ((AjaxFormSubmitter) _submittingComponent)
                .getFormSubmittingComponent()).getDefaultModelObject();
        if (object instanceof DropDownOption) {
            final String key = ((DropDownField) ((AjaxFormSubmitter) _submittingComponent)
                    .getFormSubmittingComponent()).getInputName();
            ((EFapsRequestParametersAdapter) ((EFapsRequest) RequestCycle.get().getRequest())
                    .getRequestParameters()).addParameterValue(key + "_eFapsPrevious",
                            ((DropDownOption) object).getValue());
        }
    }
    super.process(_submittingComponent);
    // it must be ensured that the counter for sets is rested or we have big problems
    resetSetCounter();
}

From source file:org.efaps.ui.wicket.components.gridx.GridXComponent.java

@Override
public void onComponentTagBody(final MarkupStream _markupStream, final ComponentTag _openTag) {
    try {//from   ww  w  .  java 2 s.c om
        final UIGrid uiGrid = (UIGrid) getDefaultModelObject();

        final Set<DojoClass> dojoClasses = new HashSet<>();

        Collections.addAll(dojoClasses, DojoClasses.array, DojoClasses.lang, DojoClasses.json,
                DojoClasses.aspect, DojoClasses.query, DojoClasses.domConstruct, DojoClasses.win,
                DojoClasses.domStyle, DojoClasses.ready, DojoClasses.on, DojoClasses.registry,
                DojoClasses.Memory, DojoClasses.Grid, DojoClasses.VirtualVScroller, DojoClasses.ColumnResizer,
                DojoClasses.HScroller, DojoClasses.SingleSort, DojoClasses.SyncCache, DojoClasses.HeaderDialog,
                DojoClasses.MoveColumn, DojoClasses.SelectColumn, DojoClasses.SelectCell, DojoClasses.DnDColumn,
                DojoClasses.HiddenColumns, DojoClasses.GridConfig, DojoClasses.GridSort, DojoClasses.Summary,
                DojoClasses.QuickFilter, DojoClasses.Bar, DojoClasses.Persist, DojoClasses.Filter,
                DojoClasses.FilterBar, DojoClasses.DropDownButton, DojoClasses.TextBox,
                DojoClasses.TooltipDialog, DojoClasses.ready, DojoClasses.domGeom);

        final StringBuilder js = new StringBuilder().append("var cp = function(_attr, _itemA, _itemB) {\n")
                .append("var strA = _itemA.hasOwnProperty(_attr + '_sort')")
                .append(" ? _itemA[_attr + '_sort'] : _itemA[_attr];\n")
                .append("var strB = _itemB.hasOwnProperty(_attr + '_sort') ")
                .append("? _itemB[_attr + '_sort'] : _itemB[_attr];\n")
                .append("return strA < strB ? -1 : (strA > strB ? 1 : 0);\n").append("}\n")

                .append("var store = new Memory({\n").append("data: ").append(GridXComponent.getDataJS(uiGrid))
                .append("});\n").append("var structure = [\n");

        boolean first = true;
        int j = 0;
        for (final Column header : uiGrid.getColumns()) {
            if (first) {
                first = false;
            } else {
                js.append(",");
            }
            js.append("{ id:'").append(header.getField().getId()).append("',").append(" field:'")
                    .append(header.getFieldName()).append("',").append(" name:'").append(header.getLabel())
                    .append("'\n");

            if (!"left".equals(header.getField().getAlign())) {
                js.append(", style:'text-align:right'");
            }
            js.append(", comparator: cp\n");
            if (header.getFieldConfig().getField().getReference() != null) {
                js.append(", decorator: function(data, rowId, visualIndex, cell){\n")
                        .append("return '<a href=\"")
                        .append(urlFor(ILinkListener.INTERFACE, new PageParameters())).append("&rowId=")
                        .append("' + rowId + '").append("&colId=").append(j).append("\">' + data + '</a>';\n")
                        .append("}\n");
            }
            if (FilterBase.DATABASE.equals(header.getFilter().getBase())) {
                js.append(", dialog: 'fttd_").append(header.getField().getId())
                        .append("', headerClass:'eFapsFiltered'\n");
            } else if (FilterType.PICKLIST.equals(header.getFilter().getType())) {
                js.append(", dataType: 'enum'\n");
                final List<String> picklist = uiGrid.getFilterPickList(header);
                if (CollectionUtils.isNotEmpty(picklist)) {
                    js.append(", enumOptions: ['").append(StringUtils.join(picklist, "','")).append("']");
                }
            } else {
                // js.append(", filterable: false\n");
            }
            js.append("}");
            j++;
        }

        js.append("];\n").append("").append(getMenu(dojoClasses)).append("var grid = Grid({")
                .append("id: 'grid',").append("cacheClass: Cache,").append("store: store,")
                .append("structure: structure,\n").append("barTop: [\n");

        if (dojoClasses.contains(DojoClasses.MenuBar)) {
            js.append("{plugin: pMenuBar, style: 'text-align: left;'}, \n");
        }

        js.append("{pluginClass: QuickFilter, style: 'text-align: center;'}, \n")
                .append("{pluginClass: GridConfig, style: 'text-align: right;'} \n").append("],\n")
                .append("barBottom: [\n").append("Summary\n").append("],\n").append("modules: [\n")
                .append("VirtualVScroller,\n").append("ColumnResizer,\n").append("SingleSort,\n")
                .append("MoveColumn,\n").append("SelectColumn,\n").append("SelectCell,\n")
                .append("DnDColumn,\n").append("HeaderDialog,\n").append("Bar,\n").append("Filter,\n")
                .append("FilterBar,\n").append("HScroller,\n").append("HiddenColumns,\n").append("Persist\n");

        if (uiGrid.isShowCheckBoxes()) {

            Collections.addAll(dojoClasses, DojoClasses.IndirectSelect, DojoClasses.RowHeader,
                    DojoClasses.SelectRow);

            js.append(", IndirectSelect,\n").append("SelectRow,\n").append("RowHeader,\n");
        }

        js.append("],\n").append("persistGet: function(_key) {");

        if (Context.getThreadContext().containsUserAttribute(uiGrid.getCacheKey(UIGrid.CacheKey.GRIDX))) {
            js.append("return ").append(
                    Context.getThreadContext().getUserAttribute(uiGrid.getCacheKey(UIGrid.CacheKey.GRIDX)));
        }

        js.append("},\n").append("persistPut: function(_key, _value, _options) {\n").append("var value;")
                .append("if(_value && lang.isObject(_value)){\n").append("value = json.toJson(_value);\n")
                .append("}else{\n").append("value = {expires: -1};\n").append("}\n")

                .append(getBehaviors(PersistAjaxBehavior.class).get(0)
                        .getCallbackFunctionBody(CallbackParameter.explicit("value")))
                .append("},\n").append("modelExtensions: [\n").append("GridSort\n").append("]\n").append("});")
                .append("grid.placeAt('").append(getMarkupId(true)).append("');\n").append("grid.startup();\n")
                .append("ready(function(){").append("var bar = query('.eFapsFrameTitle') [0];\n")
                .append("var pos = domGeom.position(bar);\n").append("var vs = win.getBox();\n")
                .append("var hh = vs.h - pos.h -pos.y;\n").append("registry.byId('grid').resize({h:hh});")
                .append("});").append("on(window, 'resize', function() {\n")
                .append("var bar = query('.eFapsFrameTitle') [0];\n")
                .append("var pos = domGeom.position(bar);\n").append("var vs = win.getBox();\n")
                .append("var hh = vs.h - pos.h -pos.y;\n").append("registry.byId('grid').resize({h:hh});")
                .append("});\n");
        if (uiGrid.isShowCheckBoxes()) {
            js.append("aspect.after(grid.select.row, 'onSelectionChange', function (_defferd) {\n")
                    .append("query(\"input[name='selectedRow']\").forEach(domConstruct.destroy);\n")
                    .append("array.forEach(registry.byId('grid').select.row.getSelected(), function (_item) {\n")
                    .append("domConstruct.create('input', {\n").append("type: 'hidden',\n")
                    .append("name:'selectedRow',\n").append("value: _item\n").append("},\n").append("'")
                    .append(findParent(Form.class).getMarkupId(true)).append("');\n").append("});\n")
                    .append("});\n").append("grid.prevSelected = [];\n").append("var ftb = function () {\n")
                    .append("registry.byId('grid').prevSelected = registry.byId('grid').select.row.getSelected();\n")
                    .append("};\n").append("var fta = function () {\n")
                    .append("array.forEach(registry.byId('grid').prevSelected, function (_item) {\n")
                    .append("registry.byId('grid').select.row.selectById(_item);\n").append("});\n")
                    .append("};\n").append("aspect.before(grid.filter, 'setFilter', ftb);\n")
                    .append("aspect.before(grid.filter, 'clearFilter', ftb);\n")
                    .append("aspect.after(grid.filter, 'setFilter', fta);\n")
                    .append("aspect.after(grid.filter, 'clearFilter', fta);\n");
        }

        final StringBuilder html = new StringBuilder().append("<script type=\"text/javascript\">")
                .append(DojoWrapper.require(js, dojoClasses.toArray(new DojoClass[dojoClasses.size()])))
                .append("\n</script>");

        replaceComponentTagBody(_markupStream, _openTag, html);
    } catch (final EFapsException e) {
        GridXComponent.LOG.error("Catched error", e);
    }
}

From source file:org.efaps.ui.wicket.models.field.validators.FormNumberValidator.java

/**
 * Instantiates a new number validator./*w w  w .ja  v a2  s.c  o m*/
 *
 * @param _uiField the ui field
 */
public FormNumberValidator(final AbstractUIField _uiField) {
    super(new IFormValidator() {

        /** The Constant serialVersionUID. */
        private static final long serialVersionUID = 1L;

        @Override
        public FormComponent<?>[] getDependentFormComponents() {
            return null;
        }

        @Override
        public void validate(final Form<?> _form) {
            final List<StringValue> list = RequestCycle.get().getRequest().getRequestParameters()
                    .getParameterValues(_uiField.getFieldConfiguration().getName());
            boolean hasValue = false;
            if (CollectionUtils.isNotEmpty(list)) {
                for (final StringValue value : list) {
                    if (!value.isEmpty()) {
                        final String message = new NumberUI()
                                .validateValue(UIValue.get(null, null, value.toString()));
                        if (message != null) {
                            _form.error(_uiField.getFieldConfiguration().getLabel() + ": " + message);
                        }
                        hasValue = true;
                    }
                }
            }
            if (!hasValue && _uiField.getFieldConfiguration().getField().isRequired()) {
                _form.error(DBProperties.getFormatedDBProperty(
                        FormNumberValidator.class.getName() + ".FieldRequired",
                        (Object) _uiField.getFieldConfiguration().getLabel()));
            }
        }
    });
}

From source file:org.ethereum.config.DefaultConfig.java

@Bean
public PeerExplorer peerExplorer() {
    RskSystemProperties rskConfig = RskSystemProperties.RSKCONFIG;
    ECKey key = rskConfig.getMyKey();
    Node localNode = new Node(key.getNodeId(), rskConfig.bindIp(), rskConfig.listenPort());
    NodeDistanceTable distanceTable = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE,
            localNode);/* www.ja v  a 2  s .  c  om*/
    long msgTimeOut = rskConfig.peerDiscoveryMessageTimeOut();
    long refreshPeriod = rskConfig.peerDiscoveryRefreshPeriod();
    List<String> initialBootNodes = rskConfig.peerDiscoveryIPList();
    List<Node> activePeers = rskConfig.peerActive();
    if (CollectionUtils.isNotEmpty(activePeers)) {
        for (Node n : activePeers) {
            InetSocketAddress address = n.getAddress();
            initialBootNodes.add(address.getHostName() + ":" + address.getPort());
        }
    }
    return new PeerExplorer(initialBootNodes, localNode, distanceTable, key, msgTimeOut, refreshPeriod);
}

From source file:org.ethereum.net.NodeManager.java

public synchronized List<NodeHandler> getNodes(Set<String> nodesInUse) {
    List<NodeHandler> handlers = new ArrayList<>();
    handlers.addAll(initialNodes);//  ww w.ja  v a  2s .c o m

    List<Node> foundNodes = this.peerExplorer.getNodes();
    if (this.discoveryEnabled && CollectionUtils.isNotEmpty(foundNodes)) {
        logger.debug("{} Nodes retrieved from the PE.", CollectionUtils.size(foundNodes));
        foundNodes.stream().filter(n -> !nodeHandlerMap.containsKey(n.getHexId()))
                .forEach(this::createNodeHandler);
    }

    for (NodeHandler handler : this.nodeHandlerMap.values()) {
        if (!nodesInUse.contains(handler.getNode().getHexId())) {
            handlers.add(handler);
        }
    }
    return handlers;
}

From source file:org.finra.herd.dao.helper.ElasticsearchHelper.java

/**
 * Adds facet field aggregations//from  w  w  w  .j a  v a2 s  . co  m
 *
 * @param facetFieldsList facet field list
 * @param searchRequestBuilder search request builder
 *
 * @return the specified search request builder with the aggregations applied to it
 */
public SearchRequestBuilder addFacetFieldAggregations(Set<String> facetFieldsList,
        SearchRequestBuilder searchRequestBuilder) {
    if (CollectionUtils.isNotEmpty(facetFieldsList)) {
        if (facetFieldsList.contains(TAG_FACET)) {
            searchRequestBuilder.addAggregation(AggregationBuilders.nested(TAG_FACET_AGGS, NESTED_BDEFTAGS_PATH)
                    .subAggregation(AggregationBuilders.terms(TAGTYPE_CODE_AGGREGATION)
                            .field(BDEF_TAGTYPE_CODE_FIELD)
                            .subAggregation(AggregationBuilders.terms(TAGTYPE_NAME_AGGREGATION)
                                    .field(BDEF_TAGTYPE_NAME_FIELD)
                                    .subAggregation(AggregationBuilders.terms(TAG_CODE_AGGREGATION)
                                            .field(BDEF_TAG_CODE_FIELD)
                                            .subAggregation(AggregationBuilders.terms(TAG_NAME_AGGREGATION)
                                                    .field(BDEF_TAG_NAME_FIELD))))));

            searchRequestBuilder.addAggregation(AggregationBuilders.terms(TAG_TYPE_FACET_AGGS)
                    .field(TAGTYPE_CODE_FIELD_TAG_INDEX)
                    .subAggregation(AggregationBuilders.terms(TAGTYPE_NAME_AGGREGATION)
                            .field(TAGTYPE_NAME_FIELD_TAG_INDEX)
                            .subAggregation(AggregationBuilders.terms(TAG_CODE_AGGREGATION)
                                    .field(TAG_CODE_FIELD_TAG_INDEX).subAggregation(AggregationBuilders
                                            .terms(TAG_NAME_AGGREGATION).field(TAG_NAME_FIELD_TAG_INDEX)))));

        }
        if (facetFieldsList.contains(RESULT_TYPE_FACET)) {
            searchRequestBuilder
                    .addAggregation(AggregationBuilders.terms(RESULT_TYPE_AGGS).field(RESULT_TYPE_FIELD));
        }
    }

    return searchRequestBuilder;
}

From source file:org.finra.herd.dao.impl.AttributeValueListDaoImpl.java

@Override
public List<AttributeValueListKey> getAttributeValueLists(Collection<String> namespaces) {
    // Create the criteria builder and the criteria.
    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<AttributeValueListEntity> criteria = builder.createQuery(AttributeValueListEntity.class);

    // The criteria root is the attribute value list entity.
    Root<AttributeValueListEntity> attributeValueListEntityRoot = criteria.from(AttributeValueListEntity.class);

    // Join to the other tables we can filter on.
    Join<AttributeValueListEntity, NamespaceEntity> namespaceEntityJoin = attributeValueListEntityRoot
            .join(AttributeValueListEntity_.namespace);

    // Create the standard restrictions (i.e. the standard where clauses).
    List<Predicate> predicates = new ArrayList<>();
    if (CollectionUtils.isNotEmpty(namespaces)) {
        predicates.add(namespaceEntityJoin.get(NamespaceEntity_.code).in(namespaces));
    }//  ww  w .  j  a  v  a 2  s.c  o  m

    // Order the results by namespace and job name.
    List<Order> orderBy = new ArrayList<>();
    orderBy.add(builder.asc(namespaceEntityJoin.get(NamespaceEntity_.code)));
    orderBy.add(builder.asc(attributeValueListEntityRoot.get(AttributeValueListEntity_.name)));

    // Add all clauses to the query.
    criteria.select(attributeValueListEntityRoot)
            .where(builder.and(predicates.toArray(new Predicate[predicates.size()]))).orderBy(orderBy);

    // Execute the query and build a list of keys.
    List<AttributeValueListKey> attributeValueListKeys = new ArrayList<>();
    for (AttributeValueListEntity attributeValueListEntity : entityManager.createQuery(criteria)
            .getResultList()) {
        attributeValueListKeys.add(new AttributeValueListKey(attributeValueListEntity.getNamespace().getCode(),
                attributeValueListEntity.getName()));
    }

    return attributeValueListKeys;
}

From source file:org.finra.herd.dao.impl.BusinessObjectDefinitionIndexSearchDaoImpl.java

@Override
public ElasticsearchResponseDto searchBusinessObjectDefinitionsByTags(String indexName, String documentType,
        List<Map<SearchFilterType, List<TagEntity>>> nestedTagEntityMaps, Set<String> facetFieldsList) {
    ElasticsearchResponseDto elasticsearchResponseDto = new ElasticsearchResponseDto();

    List<List<TagEntity>> nestedInclusionTagEntityLists = new ArrayList<>();
    List<List<TagEntity>> nestedExclusionTagEntityLists = new ArrayList<>();

    for (Map<SearchFilterType, List<TagEntity>> tagEntityMap : nestedTagEntityMaps) {
        if (tagEntityMap.containsKey(SearchFilterType.INCLUSION_SEARCH_FILTER)) {
            nestedInclusionTagEntityLists.add(tagEntityMap.get(SearchFilterType.INCLUSION_SEARCH_FILTER));
        } else if (tagEntityMap.containsKey(SearchFilterType.EXCLUSION_SEARCH_FILTER)) {
            nestedExclusionTagEntityLists.add(tagEntityMap.get(SearchFilterType.EXCLUSION_SEARCH_FILTER));
        }/*from www.java 2  s  .  c o  m*/
    }

    LOGGER.info(
            "Searching Elasticsearch business object definition documents from index, indexName={} and documentType={}, by tagEntityList={}",
            indexName, documentType,
            tagEntityListToString(flattenTagEntitiesList(nestedInclusionTagEntityLists)));

    LOGGER.info("Excluding the following tagEntityList={}", indexName, documentType,
            tagEntityListToString(flattenTagEntitiesList(nestedExclusionTagEntityLists)));

    BoolQueryBuilder compoundSearchFiltersQueryBuilder = new BoolQueryBuilder();

    // If there are only exclusion tag entities then, get everything else, but the exclusion tags.
    if (CollectionUtils.isEmpty(flattenTagEntitiesList(nestedInclusionTagEntityLists))) {
        WildcardQueryBuilder wildcardQueryBuilder = QueryBuilders.wildcardQuery(NAME_FIELD, "*");
        compoundSearchFiltersQueryBuilder.must(wildcardQueryBuilder);
    }

    // Inclusion
    for (List<TagEntity> tagEntities : nestedInclusionTagEntityLists) {
        BoolQueryBuilder searchFilterQueryBuilder = new BoolQueryBuilder();

        for (TagEntity tagEntity : tagEntities) {
            // Add constant-score term queries for tagType-code and tag-code from the tag-key.
            ConstantScoreQueryBuilder searchKeyQueryBuilder = QueryBuilders
                    .constantScoreQuery(QueryBuilders.boolQuery()
                            .must(QueryBuilders.termQuery(TAGTYPE_CODE_FIELD, tagEntity.getTagType().getCode()))
                            .must(QueryBuilders.termQuery(TAG_CODE_FIELD, tagEntity.getTagCode())));

            // Individual tag-keys are OR-ed
            searchFilterQueryBuilder.should(searchKeyQueryBuilder);
        }

        // Individual search-filters are AND-ed
        compoundSearchFiltersQueryBuilder.must(searchFilterQueryBuilder);
    }

    // Exclusion
    for (List<TagEntity> tagEntities : nestedExclusionTagEntityLists) {
        for (TagEntity tagEntity : tagEntities) {
            // Add constant-score term queries for tagType-code and tag-code from the tag-key.
            QueryBuilder searchKeyQueryBuilder = QueryBuilders.boolQuery()
                    .must(QueryBuilders.termQuery(TAGTYPE_CODE_FIELD, tagEntity.getTagType().getCode()))
                    .must(QueryBuilders.termQuery(TAG_CODE_FIELD, tagEntity.getTagCode()));

            // Exclusion: individual tag-keys are added as a must not query
            compoundSearchFiltersQueryBuilder.mustNot(searchKeyQueryBuilder);
        }
    }

    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

    // Fetch only the required fields
    searchSourceBuilder.fetchSource(new String[] { DATA_PROVIDER_NAME_SOURCE, DESCRIPTION_SOURCE,
            DISPLAY_NAME_SOURCE, NAME_SOURCE, NAMESPACE_CODE_SOURCE }, null);
    searchSourceBuilder.query(compoundSearchFiltersQueryBuilder);

    // Create a search request and set the scroll time and scroll size
    SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(new ElasticsearchClientImpl(),
            SearchAction.INSTANCE);
    searchRequestBuilder.setIndices(indexName);

    // Construct scroll query
    searchRequestBuilder.setTypes(documentType).setScroll(new TimeValue(ELASTIC_SEARCH_SCROLL_KEEP_ALIVE_TIME))
            .setSize(ELASTIC_SEARCH_SCROLL_PAGE_SIZE).setSource(searchSourceBuilder)

            // Add sorting criteria.
            // First, sort in ascending order on business object definition name
            // then sort in ascending order on namespace code
            .addSort(SortBuilders.fieldSort(BUSINESS_OBJECT_DEFINITION_SORT_FIELD).order(SortOrder.ASC))
            .addSort(SortBuilders.fieldSort(NAMESPACE_CODE_SORT_FIELD).order(SortOrder.ASC));

    //Add aggregation builder if facet fields are present
    if (CollectionUtils.isNotEmpty(facetFieldsList)) {
        addFacetFieldAggregations(facetFieldsList, elasticsearchResponseDto, searchRequestBuilder, indexName);
    }

    // Log the actual search query
    LOGGER.info("bdefIndexSearchQuery={}", searchRequestBuilder.toString());

    elasticsearchResponseDto.setBusinessObjectDefinitionIndexSearchResponseDtos(
            scrollSearchResultsIntoBusinessObjectDefinitionDto(searchRequestBuilder, indexName));

    return elasticsearchResponseDto;
}

From source file:org.finra.herd.dao.impl.BusinessObjectFormatDaoImpl.java

@Override
public Long getBusinessObjectFormatCountByPartitionKeys(String namespace, String businessObjectDefinitionName,
        String businessObjectFormatUsage, String businessObjectFormatFileType,
        Integer businessObjectFormatVersion, List<String> partitionKeys) {
    // Create the criteria builder and the criteria.
    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Long> criteria = builder.createQuery(Long.class);

    // The criteria root is the business object format.
    Root<BusinessObjectFormatEntity> businessObjectFormatEntityRoot = criteria
            .from(BusinessObjectFormatEntity.class);

    // Create path.
    Expression<Long> businessObjectFormatRecordCount = builder.count(businessObjectFormatEntityRoot);

    // Namespace is a required parameter, so fetch the relative entity to optimize the main query.
    NamespaceEntity namespaceEntity = namespaceDao.getNamespaceByCd(namespace);

    // If specified namespace does not exist, then return a zero record count.
    if (namespaceEntity == null) {
        return 0L;
    }/*from   w  ww  . j  a v  a2 s  .co  m*/

    // If file type is specified, fetch the relative entity to optimize the main query.
    FileTypeEntity fileTypeEntity = null;
    if (StringUtils.isNotBlank(businessObjectFormatFileType)) {
        fileTypeEntity = fileTypeDao.getFileTypeByCode(businessObjectFormatFileType);

        // If specified file type does not exist, then return a zero record count.
        if (fileTypeEntity == null) {
            return 0L;
        }
    }

    // Join to the other tables we can filter on.
    Join<BusinessObjectFormatEntity, BusinessObjectDefinitionEntity> businessObjectDefinitionEntity = businessObjectFormatEntityRoot
            .join(BusinessObjectFormatEntity_.businessObjectDefinition);

    // Create main query restrictions based on the specified parameters.
    List<Predicate> predicates = new ArrayList<>();

    // Create restriction on namespace code and business object definition name.
    predicates.add(builder.equal(businessObjectDefinitionEntity.get(BusinessObjectDefinitionEntity_.namespace),
            namespaceEntity));
    predicates.add(builder.equal(
            builder.upper(businessObjectDefinitionEntity.get(BusinessObjectDefinitionEntity_.name)),
            businessObjectDefinitionName.toUpperCase()));

    // If specified, create restriction on business object format usage.
    if (!StringUtils.isEmpty(businessObjectFormatUsage)) {
        predicates.add(builder.equal(
                builder.upper(businessObjectFormatEntityRoot.get(BusinessObjectFormatEntity_.usage)),
                businessObjectFormatUsage.toUpperCase()));
    }

    // If specified, create restriction on business object format file type.
    if (fileTypeEntity != null) {
        predicates
                .add(builder.equal(businessObjectFormatEntityRoot.get(BusinessObjectFormatEntity_.fileTypeCode),
                        fileTypeEntity.getCode()));
    }

    // If specified, create restriction on business object format version.
    if (businessObjectFormatVersion != null) {
        predicates.add(builder.equal(
                businessObjectFormatEntityRoot.get(BusinessObjectFormatEntity_.businessObjectFormatVersion),
                businessObjectFormatVersion));
    }

    // If specified, create restriction on partition keys.
    if (CollectionUtils.isNotEmpty(partitionKeys)) {
        for (String partitionKey : partitionKeys) {
            // Add restriction on partition key (partition column).
            // Partition key must identify a partition column that is at partition level that could be explicitly registered.
            // Partition level uses one-based numbering.
            Join<BusinessObjectFormatEntity, SchemaColumnEntity> schemaColumnEntityJoin = businessObjectFormatEntityRoot
                    .join(BusinessObjectFormatEntity_.schemaColumns);
            predicates.add(builder.equal(builder.upper(schemaColumnEntityJoin.get(SchemaColumnEntity_.name)),
                    partitionKey.toUpperCase()));
            predicates.add(builder.isNotNull(schemaColumnEntityJoin.get(SchemaColumnEntity_.partitionLevel)));
            predicates.add(builder.lessThan(schemaColumnEntityJoin.get(SchemaColumnEntity_.partitionLevel),
                    BusinessObjectDataEntity.MAX_SUBPARTITIONS + 2));
        }
    }

    // Add all clauses for the query.
    criteria.select(businessObjectFormatRecordCount)
            .where(builder.and(predicates.toArray(new Predicate[predicates.size()]))).distinct(true);

    // Execute the query and return the result.
    return entityManager.createQuery(criteria).getSingleResult();
}