Package org.lilyproject.repository.api.filter

Examples of org.lilyproject.repository.api.filter.RecordFilterList


    @Override
    public RecordFilterList fromJson(JsonNode node, Namespaces namespaces, LRepository repository,
            RecordFilterJsonConverter<RecordFilter> converter)
            throws JsonFormatException, RepositoryException, InterruptedException {

        RecordFilterList filter = new RecordFilterList();

        String operator = JsonUtil.getString(node, "operator", null);
        if (operator != null) {
            filter.setOperator(RecordFilterList.Operator.valueOf(operator));
        }

        ArrayNode filters = JsonUtil.getArray(node, "filters", null);
        if (filters != null) {
            for (JsonNode subFilterNode : filters) {
                if (!subFilterNode.isObject()) {
                    throw new JsonFormatException("filters should contain a json object");
                }
                ObjectNode subFilterObjectNode = (ObjectNode)subFilterNode;
                filter.addFilter(converter.fromJson(subFilterObjectNode, namespaces, repository, converter));
            }
        }

        return filter;
    }
View Full Code Here


        if (!(uncastFilter instanceof RecordFilterList)) {
            return null;
        }

        RecordFilterList filter = (RecordFilterList)uncastFilter;

        FilterList.Operator hbaseOp = filter.getOperator() == RecordFilterList.Operator.MUST_PASS_ONE ?
                FilterList.Operator.MUST_PASS_ONE : FilterList.Operator.MUST_PASS_ALL;

        FilterList hbaseFilter = new FilterList(hbaseOp);

        for (RecordFilter subFilter : filter.getFilters()) {
            hbaseFilter.addFilter(factory.createHBaseFilter(subFilter, repository, factory));
        }

        return hbaseFilter;
    }
View Full Code Here

                .field(f1.getName(), "F")
                .create();

        // Test f1=A and f2=B
        RecordScan scan = new RecordScan();
        RecordFilterList filterList = new RecordFilterList();
        filterList.addFilter(new FieldValueFilter(f1.getName(), "A"));
        filterList.addFilter(new FieldValueFilter(f2.getName(), "B"));
        scan.setRecordFilter(filterList);
        assertEquals(1, countResults(repository.getScanner(scan)));

        // Test f1=A or f2=B
        scan = new RecordScan();
        filterList = new RecordFilterList(RecordFilterList.Operator.MUST_PASS_ONE);
        filterList.addFilter(new FieldValueFilter(f1.getName(), "A"));
        filterList.addFilter(new FieldValueFilter(f2.getName(), "B"));
        scan.setRecordFilter(filterList);
        assertEquals(3, countResults(repository.getScanner(scan)));

        // Test f1=A and (f2=B or f2=C)
        scan = new RecordScan();
        RecordFilterList filterList2 = new RecordFilterList(RecordFilterList.Operator.MUST_PASS_ONE);
        filterList2.addFilter(new FieldValueFilter(f2.getName(), "B"));
        filterList2.addFilter(new FieldValueFilter(f2.getName(), "C"));
        filterList = new RecordFilterList();
        filterList.addFilter(new FieldValueFilter(f1.getName(), "A"));
        filterList.addFilter(filterList2);
        scan.setRecordFilter(filterList);
        assertEquals(2, countResults(repository.getScanner(scan)));

        // Test f1=F and f2=Z
        scan = new RecordScan();
        filterList = new RecordFilterList();
        filterList.addFilter(new FieldValueFilter(f1.getName(), "F"));
        filterList.addFilter(new FieldValueFilter(f2.getName(), "Z"));
        scan.setRecordFilter(filterList);
        assertEquals(0, countResults(repository.getScanner(scan)));

        // Test f1=F and (f2=Z with filterIfMissing=false)
        scan = new RecordScan();
        filterList = new RecordFilterList();
        filterList.addFilter(new FieldValueFilter(f1.getName(), "F"));
        FieldValueFilter fvf = new FieldValueFilter(f2.getName(), "Z");
        fvf.setFilterIfMissing(false);
        filterList.addFilter(fvf);
        scan.setRecordFilter(filterList);
View Full Code Here

        assertTrue(record.hasField(f2.getName()));
        assertFalse(record.hasField(f3.getName()));

        // Test scanning on filtered field, should not work
        scan = new RecordScan();
        RecordFilterList filterList = new RecordFilterList();
        filterList.addFilter(new RecordTypeFilter(rt.getName()));
        filterList.addFilter(new FieldValueFilter(f1.getName(), "A"));
        scan.setRecordFilter(filterList);
        // without ReturnFields, we get a result
        assertNotNull(repository.getScanner(scan).next());
        // with ReturnFields that doesn't include f1, we don't get a result
        scan.setReturnFields(new ReturnFields(f2.getName()));
View Full Code Here

        if (stopId != null && stopId.length() > 0) {
            scan.setStopRecordId(repository.getIdGenerator().fromString(stopId));
        }

        if (recordTypeFilter != null && !recordTypeFilter.isEmpty()) {
            RecordFilterList filterList = new RecordFilterList(Operator.MUST_PASS_ONE);
            if (scan.getRecordFilter() != null) {
                filterList.addFilter(scan.getRecordFilter());
            }
            scan.setRecordFilter(filterList);

            String[] recordTypes = recordTypeFilter.split(",");
            for (String recordType : recordTypes) {
                filterList.addFilter(new RecordTypeFilter(QName.fromString(recordType)));
            }
        }

        return scan;
    }
View Full Code Here

        IdGenerator idGenerator = new IdGeneratorImpl();

        RecordId recordId = idGenerator.newRecordId("foo");

        RecordScan scan = new RecordScan();
        RecordFilterList filterList = new RecordFilterList(RecordFilterList.Operator.MUST_PASS_ONE);
        filterList.addFilter(new RecordIdPrefixFilter(recordId));
        filterList.addFilter(new RecordTypeFilter(new QName("ns", "stringField")));
        scan.setRecordFilter(filterList);

        byte[] data = scanToBytes(scan);
        RecordScan parsedScan = scanFromBytes(data);

        assertNotNull(parsedScan.getRecordFilter());
        assertTrue(parsedScan.getRecordFilter() instanceof RecordFilterList);
        assertTrue(filterList.getFilters().get(0) instanceof RecordIdPrefixFilter);
        assertTrue(filterList.getFilters().get(1) instanceof RecordTypeFilter);
        assertEquals(RecordFilterList.Operator.MUST_PASS_ONE, filterList.getOperator());

        // Check json
        JsonNode node = new ObjectMapper().readTree(data);
        assertEquals("org.lilyproject.repository.api.filter.RecordFilterList",
                node.get("recordFilter").get("@class").getTextValue());
View Full Code Here

TOP

Related Classes of org.lilyproject.repository.api.filter.RecordFilterList

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.