Package org.lilyproject.repository.api.filter

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


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

        RecordTypeFilter filter = new RecordTypeFilter();

        String recordType = JsonUtil.getString(node, "recordType", null);
        if (recordType != null) {
            filter.setRecordType(QNameConverter.fromJson(recordType, namespaces));
        }

        Long version = JsonUtil.getLong(node, "version", null);
        if (version != null) {
            filter.setVersion(version);
        }

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

        return filter;
    }
View Full Code Here


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

        RecordTypeFilter filter = (RecordTypeFilter)uncastFilter;

        Filter result = null;

        if (filter.getRecordType() == null) {
            throw new IllegalArgumentException("A RecordTypeFilter should at least specify the record type name.");
        }

        RecordType recordType = repository.getTypeManager().getRecordTypeByName(filter.getRecordType(), null);

        RecordTypeFilter.Operator operator =
                filter.getOperator() != null ? filter.getOperator() : RecordTypeFilter.Operator.EQUALS;

        switch (operator) {
            case EQUALS:
                Filter nameFilter = createRecordTypeFilter(recordType.getId());

                Filter versionFilter = null;
                if (filter.getVersion() != null) {
                    versionFilter = new SingleColumnValueFilter(RecordCf.DATA.bytes,
                            RecordColumn.NON_VERSIONED_RT_VERSION.bytes, CompareFilter.CompareOp.EQUAL,
                            Bytes.toBytes(filter.getVersion()));
                }

                if (versionFilter == null) {
                    result = nameFilter;
                } else {
                    FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ALL);
                    list.addFilter(nameFilter);
                    list.addFilter(versionFilter);
                    result = list;
                }

                break;
            case INSTANCE_OF:
                Set<SchemaId> subtypes = repository.getTypeManager().findSubtypes(recordType.getId());
                FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ONE);
                list.addFilter(createRecordTypeFilter(recordType.getId()));
                for (SchemaId subType : subtypes) {
                    list.addFilter(createRecordTypeFilter(subType));
                }
                result = list;
                break;
            default:
                throw new RuntimeException("Unexpected operator: " + filter.getOperator());
        }

        return result;
    }
View Full Code Here

        repository.recordBuilder().recordType(rtB.getName()).field(fieldType1.getName(), "value").create();
        repository.recordBuilder().recordType(rtC.getName()).field(fieldType1.getName(), "value").create();


        RecordScan scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtA.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(2, countResults(repository.getScanner(scan)));

        // Since it is not the latest version of C that extends from D, searching for records that are an
        // instance of D will not return any results, even though C points to the latest version of D (because
        // it is the latest version of C which counts).
        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtD.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(0, countResults(repository.getScanner(scan)));
    }
View Full Code Here

                .create();

        repository.recordBuilder().recordType(rtB.getName()).field(fieldType1.getName(), "value").create();

        RecordScan scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtA.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(1, countResults(repository.getScanner(scan)));

        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtC.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(0, countResults(repository.getScanner(scan)));

        rtB = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfUpdate", "rtB")
                .fieldEntry().use(fieldType1).add()
                .supertype().use(rtC).add()
                .update();

        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtC.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(1, countResults(repository.getScanner(scan)));

        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtA.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(0, countResults(repository.getScanner(scan)));
    }
View Full Code Here

                .create();


        // Test ALL filter
        RecordScan scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rt.getName()));
        scan.setReturnFields(new ReturnFields(ReturnFields.Type.ALL));
        Record record = repository.getScanner(scan).next();
        assertEquals(3, record.getFields().size());

        // Test NONE filter
        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rt.getName()));
        scan.setReturnFields(new ReturnFields(ReturnFields.Type.NONE));
        record = repository.getScanner(scan).next();
        assertEquals(0, record.getFields().size());

        // Test ENUM filter
        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rt.getName()));
        scan.setReturnFields(new ReturnFields(f1.getName(), f2.getName()));
        record = repository.getScanner(scan).next();
        assertEquals(2, record.getFields().size());
        assertTrue(record.hasField(f1.getName()));
        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
View Full Code Here

                .create();


        // Test ALL filter
        RecordScan scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rt.getName()));
        scan.setReturnFields(new ReturnFields(ReturnFields.Type.ALL));
        Record record = repository.getScanner(scan).next();
        assertNotNull(record.getRecordTypeName());
        assertEquals(ns, record.getRecordTypeName().getNamespace());

        // Test NONE filter
        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rt.getName()));
        scan.setReturnFields(new ReturnFields(ReturnFields.Type.NONE));
        record = repository.getScanner(scan).next();
        assertNotNull(record.getRecordTypeName());
        assertEquals(ns, record.getRecordTypeName().getNamespace());

        // Test ENUM filter
        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rt.getName()));
        scan.setReturnFields(new ReturnFields(f1.getName(), f2.getName()));
        record = repository.getScanner(scan).next();
        assertNotNull(record.getRecordTypeName());
        assertEquals(ns, record.getRecordTypeName().getNamespace());
    }
View Full Code Here

        repository.recordBuilder().recordType(rt1.getName()).field(fieldType1.getName(), "value").create();
        repository.recordBuilder().recordType(rt2.getName()).field(fieldType1.getName(), "value").create();
        repository.recordBuilder().recordType(rt2.getName(), 1L).field(fieldType1.getName(), "value").create();

        RecordScan scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rt1.getName()));
        assertEquals(2, countResults(repository.getScanner(scan)));

        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rt2.getName()));
        assertEquals(2, countResults(repository.getScanner(scan)));

        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rt2.getName(), 2L));
        assertEquals(1, countResults(repository.getScanner(scan)));
    }
View Full Code Here

        repository.recordBuilder().recordType(rtD.getName()).field(fieldType1.getName(), "value").create();
        repository.recordBuilder().recordType(rtE.getName()).field(fieldType1.getName(), "value").create();

        // Check that with "instance of" searches we get the expected number of results for each type in the hierarchy
        RecordScan scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtA.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(4, countResults(repository.getScanner(scan)));

        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtB.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(1, countResults(repository.getScanner(scan)));

        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtC.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(2, countResults(repository.getScanner(scan)));

        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtD.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(1, countResults(repository.getScanner(scan)));
    }
View Full Code Here

        repository.recordBuilder().recordType(rtB.getName()).field(fieldType1.getName(), "value").create();
        repository.recordBuilder().recordType(rtC.getName()).field(fieldType1.getName(), "value").create();


        RecordScan scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtA.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(3, countResults(repository.getScanner(scan)));

        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtB.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(3, countResults(repository.getScanner(scan)));

        scan = new RecordScan();
        scan.setRecordFilter(new RecordTypeFilter(rtB.getName(), RecordTypeFilter.Operator.INSTANCE_OF));
        assertEquals(3, countResults(repository.getScanner(scan)));
    }
View Full Code Here

            }
            scan.setRecordFilter(filterList);

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

        return scan;
    }
View Full Code Here

TOP

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

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.