Package org.lilyproject.repository.api

Examples of org.lilyproject.repository.api.RecordType


        final IdRecord casted = (IdRecord) next;
    }

    @Test
    public void testRecordTypeFilter() throws Exception {
        RecordType rt1 = typeManager.recordTypeBuilder()
                .name("RecordTypeFilter", "rt1")
                .fieldEntry().use(fieldType1).add()
                .create();

        RecordType rt2 = typeManager.recordTypeBuilder()
                .name("RecordTypeFilter", "rt2")
                .fieldEntry().use(fieldType1).add()
                .create();

        // create second version of the record type
        rt2 = typeManager.recordTypeBuilder()
                .name("RecordTypeFilter", "rt2")
                .update();

        assertEquals(new Long(2), rt2.getVersion());

        repository.recordBuilder().recordType(rt1.getName()).field(fieldType1.getName(), "value").create();
        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


        //      rtB     rtC    rtE
        //               |
        //              rtD
        //

        RecordType rtA = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOf", "rtA")
                .fieldEntry().use(fieldType1).add()
                .create();

        RecordType rtB = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOf", "rtB")
                .fieldEntry().use(fieldType1).add()
                .supertype().use(rtA).add()
                .create();

        RecordType rtC = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOf", "rtC")
                .fieldEntry().use(fieldType1).add()
                .supertype().use(rtA).add()
                .create();

        RecordType rtD = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOf", "rtD")
                .fieldEntry().use(fieldType1).add()
                .supertype().use(rtC).add()
                .create();

        RecordType rtE = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOf", "rtE")
                .fieldEntry().use(fieldType1).add()
                .create();

        // Create a record of each type
        repository.recordBuilder().recordType(rtA.getName()).field(fieldType1.getName(), "value").create();
        repository.recordBuilder().recordType(rtB.getName()).field(fieldType1.getName(), "value").create();
        repository.recordBuilder().recordType(rtC.getName()).field(fieldType1.getName(), "value").create();
        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)));
View Full Code Here

        //

        // The expected behavior is that it does not go in an endless loop but instead just stops when
        // encountering a loop (i.e. it doesn't throw an exception either)

        RecordType rtA = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfRecursionLoop", "rtA")
                .fieldEntry().use(fieldType1).add()
                .create();

        RecordType rtB = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfRecursionLoop", "rtB")
                .fieldEntry().use(fieldType1).add()
                .create();

        RecordType rtC = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfRecursionLoop", "rtC")
                .fieldEntry().use(fieldType1).add()
                .create();


        rtA = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfRecursionLoop", "rtA")
                .fieldEntry().use(fieldType1).add()
                .supertype().id(rtA.getId()).version(2L).add()
                .supertype().id(rtC.getId()).version(2L).add()
                .update();

        rtB = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfRecursionLoop", "rtB")
                .fieldEntry().use(fieldType1).add()
                .supertype().id(rtA.getId()).version(2L).add()
                .supertype().id(rtC.getId()).version(2L).add()
                .update();

        rtC = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfRecursionLoop", "rtC")
                .fieldEntry().use(fieldType1).add()
                .supertype().id(rtB.getId()).version(2L).add()
                .update();


        // Create a record of each type
        repository.recordBuilder().recordType(rtA.getName()).field(fieldType1.getName(), "value").create();
        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)));
View Full Code Here

        //        rtA-version1       rtA-version2     rtD-version1
        //          |                 |                |
        //        rtB-version1       rtC-version2     rtC-version1
        //

        RecordType rtA = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfVersionSpecifics", "rtA")
                .fieldEntry().use(fieldType1).add()
                .create();

        rtA = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfVersionSpecifics", "rtA")
                .fieldEntry().use(fieldType1).add()
                .fieldEntry().use(fieldType2).add()
                .update();

        RecordType rtB = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfVersionSpecifics", "rtB")
                .fieldEntry().use(fieldType1).add()
                .supertype().id(rtA.getId()).version(1L).add()
                .create();

        RecordType rtD = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfVersionSpecifics", "rtD")
                .fieldEntry().use(fieldType1).add()
                .create();

        RecordType rtC = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfVersionSpecifics", "rtC")
                .fieldEntry().use(fieldType1).add()
                .supertype().id(rtD.getId()).version(1L).add()
                .create();

        rtC = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfVersionSpecifics", "rtC")
                .fieldEntry().use(fieldType1).add()
                .supertype().id(rtA.getId()).version(2L).add()
                .update();

        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)));
View Full Code Here

        //       rtA     rtC
        //              /
        //           rtB
        //

        RecordType rtA = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfUpdate", "rtA")
                .fieldEntry().use(fieldType1).add()
                .create();

        RecordType rtB = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfUpdate", "rtB")
                .fieldEntry().use(fieldType1).add()
                .supertype().use(rtA).add()
                .create();

        RecordType rtC = typeManager.recordTypeBuilder()
                .name("RecordTypeFilterInstanceOfUpdate", "rtC")
                .fieldEntry().use(fieldType1).add()
                .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

    @Test
    public void testFieldValueFilter() throws Exception {
        FieldType fieldType =
                typeManager.createFieldType("STRING", new QName("FieldValueFilter", "field"), Scope.NON_VERSIONED);
        RecordType rt = typeManager.recordTypeBuilder()
                .defaultNamespace("FieldValueFilter")
                .name("rt1")
                .fieldEntry()
                .use(fieldType)
                .add()
                .create();

        Record record =
                repository.recordBuilder().recordType(rt.getName()).field(fieldType.getName(), "value1").create();
        repository.recordBuilder().recordType(rt.getName()).field(fieldType.getName(), "value1").create();
        repository.recordBuilder().recordType(rt.getName()).field(fieldType.getName(), "value2").create();
        repository.recordBuilder().recordType(rt.getName()).field(fieldType.getName(), "value2").create();
        repository.recordBuilder().recordType(rt.getName()).field(fieldType.getName(), "value2").create();

        RecordScan scan = new RecordScan();
        scan.setRecordFilter(new FieldValueFilter(fieldType.getName(), "value1"));
        assertEquals(2, countResults(repository.getScanner(scan)));
View Full Code Here

    @Test
    public void testFilterList() throws Exception {
        FieldType f1 = typeManager.createFieldType("STRING", new QName("FilterList", "field1"), Scope.NON_VERSIONED);
        FieldType f2 = typeManager.createFieldType("STRING", new QName("FilterList", "field2"), Scope.NON_VERSIONED);

        RecordType rt = typeManager.recordTypeBuilder().defaultNamespace("FilterList").name("rt")
                .fieldEntry().use(f1).add().fieldEntry().use(f2).add().create();

        repository.recordBuilder()
                .recordType(rt.getName())
                .field(f1.getName(), "A")
                .field(f2.getName(), "B")
                .create();

        repository.recordBuilder()
                .recordType(rt.getName())
                .field(f1.getName(), "A")
                .field(f2.getName(), "C")
                .create();

        repository.recordBuilder()
                .recordType(rt.getName())
                .field(f1.getName(), "D")
                .field(f2.getName(), "B")
                .create();

        repository.recordBuilder()
                .recordType(rt.getName())
                .field(f1.getName(), "F")
                .create();

        // Test f1=A and f2=B
        RecordScan scan = new RecordScan();
View Full Code Here

        QName field2 = new QName("ns", "f2");
        FieldType fieldType2 = typeMgr.newFieldType(typeMgr.getValueType("STRING"), field2, Scope.NON_VERSIONED);
        fieldType2 = typeMgr.createFieldType(fieldType2);

        QName typeName = new QName("ns", "rt1");
        RecordType recordType = typeMgr.newRecordType(typeName);
        recordType.addFieldTypeEntry(fieldType1.getId(), false);
        recordType.addFieldTypeEntry(fieldType2.getId(), false);
        recordType = typeMgr.createRecordType(recordType);

        DecoratingRepositoryManager repositoryMgr = (DecoratingRepositoryManager)lilyProxy.getLilyServerProxy()
                .getLilyServerTestingUtility().getRuntime().getModuleById("repository")
                .getApplicationContext().getBean("repositoryManager");
View Full Code Here

        FieldType f1 = typeManager.createFieldType("STRING", new QName("ReturnFieldsScan", "f1"), Scope.NON_VERSIONED);
        FieldType f2 = typeManager.createFieldType("STRING", new QName("ReturnFieldsScan", "f2"), Scope.NON_VERSIONED);
        FieldType f3 = typeManager.createFieldType("STRING", new QName("ReturnFieldsScan", "f3"), Scope.NON_VERSIONED);
        FieldType f4 = typeManager.createFieldType("STRING", new QName("ReturnFieldsScan", "f4"), Scope.NON_VERSIONED);

        RecordType rt = typeManager.recordTypeBuilder().defaultNamespace("ReturnFieldsScan").name("rt")
                .fieldEntry().use(f1).add()
                .fieldEntry().use(f2).add()
                .fieldEntry().use(f3).add()
                .fieldEntry().use(f4).add()
                .create();

        repository.recordBuilder()
                .recordType(rt.getName())
                .field(f1.getName(), "A")
                .field(f2.getName(), "B")
                .field(f3.getName(), "C")
                .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

        FieldType f1 = typeManager.createFieldType("STRING", new QName(ns, "f1"), Scope.NON_VERSIONED);
        FieldType f2 = typeManager.createFieldType("STRING", new QName(ns, "f2"), Scope.NON_VERSIONED);
        FieldType f3 = typeManager.createFieldType("STRING", new QName(ns, "f3"), Scope.NON_VERSIONED);
        FieldType f4 = typeManager.createFieldType("STRING", new QName(ns, "f4"), Scope.NON_VERSIONED);

        RecordType rt = typeManager.recordTypeBuilder().defaultNamespace(ns).name("rt")
                .fieldEntry().use(f1).add()
                .fieldEntry().use(f2).add()
                .fieldEntry().use(f3).add()
                .fieldEntry().use(f4).add()
                .create();

        repository.recordBuilder()
                .recordType(rt.getName())
                .field(f1.getName(), "A")
                .field(f2.getName(), "B")
                .field(f3.getName(), "C")
                .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

TOP

Related Classes of org.lilyproject.repository.api.RecordType

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.