Search in sources :

Example 66 with QueryType

use of net.opengis.wfs.v_2_0_0.QueryType in project ddf by codice.

the class ValidatorTest method testValidateElementNames.

@Test
public void testValidateElementNames() throws Exception {
    QueryType query = new QueryType();
    List<QName> elementNameList = Arrays.asList(new QName("brief"), new QName("summary"), new QName("full"));
    query.setElementName(elementNameList);
    validator.validateElementNames(query);
}
Also used : QName(javax.xml.namespace.QName) QueryType(net.opengis.cat.csw.v_2_0_2.QueryType) Test(org.junit.Test)

Example 67 with QueryType

use of net.opengis.wfs.v_2_0_0.QueryType in project tomee by apache.

the class OpenEjb2Conversion method mergeEntityMappings.

public final void mergeEntityMappings(final String moduleId, final EntityMappings entityMappings, final OpenejbJar openejbJar, final OpenejbJarType openejbJarType) {
    final Map<String, EntityData> entities = new TreeMap<String, EntityData>();
    if (entityMappings != null) {
        for (final Entity entity : entityMappings.getEntity()) {
            try {
                entities.put(entity.getDescription(), new EntityData(entity));
            } catch (final IllegalArgumentException e) {
                LoggerFactory.getLogger(this.getClass()).error(e.getMessage(), e);
            }
        }
    }
    for (final org.apache.openejb.jee.oejb2.EnterpriseBean enterpriseBean : openejbJarType.getEnterpriseBeans()) {
        if (!(enterpriseBean instanceof EntityBeanType)) {
            continue;
        }
        final EntityBeanType bean = (EntityBeanType) enterpriseBean;
        final EntityData entityData = entities.get(moduleId + "#" + bean.getEjbName());
        if (entityData == null) {
            // todo warn no such ejb in the ejb-jar.xml
            continue;
        }
        final Table table = new Table();
        table.setName(bean.getTableName());
        entityData.entity.setTable(table);
        for (final EntityBeanType.CmpFieldMapping cmpFieldMapping : bean.getCmpFieldMapping()) {
            final String cmpFieldName = cmpFieldMapping.getCmpFieldName();
            final Field field = entityData.fields.get(cmpFieldName);
            if (field == null) {
                // todo warn no such cmp-field in the ejb-jar.xml
                continue;
            }
            final Column column = new Column();
            column.setName(cmpFieldMapping.getTableColumn());
            field.setColumn(column);
        }
        if (bean.getKeyGenerator() != null) {
            // todo support complex primary keys
            final Attributes attributes = entityData.entity.getAttributes();
            if (attributes != null && attributes.getId().size() == 1) {
                final Id id = attributes.getId().get(0);
                // todo detect specific generation strategy
                id.setGeneratedValue(new GeneratedValue(GenerationType.IDENTITY));
            }
        }
        for (final QueryType query : bean.getQuery()) {
            final NamedQuery namedQuery = new NamedQuery();
            final QueryType.QueryMethod queryMethod = query.getQueryMethod();
            // todo deployment id could change in one of the later conversions... use entity name instead, but we need to save it off
            final StringBuilder name = new StringBuilder();
            name.append(entityData.entity.getName()).append(".").append(queryMethod.getMethodName());
            if (queryMethod.getMethodParams() != null && !queryMethod.getMethodParams().getMethodParam().isEmpty()) {
                name.append('(');
                boolean first = true;
                for (final String methodParam : queryMethod.getMethodParams().getMethodParam()) {
                    if (!first) {
                        name.append(",");
                    }
                    name.append(methodParam);
                    first = false;
                }
                name.append(')');
            }
            namedQuery.setName(name.toString());
            namedQuery.setQuery(query.getEjbQl());
            entityData.entity.getNamedQuery().add(namedQuery);
        }
    }
    for (final EjbRelationType relation : openejbJarType.getEjbRelation()) {
        final List<EjbRelationshipRoleType> roles = relation.getEjbRelationshipRole();
        if (roles.isEmpty()) {
            continue;
        }
        if (relation.getManyToManyTableName() == null) {
            final EjbRelationshipRoleType leftRole = roles.get(0);
            final EjbRelationshipRoleType.RelationshipRoleSource leftRoleSource = leftRole.getRelationshipRoleSource();
            final String leftEjbName = leftRoleSource == null ? null : leftRoleSource.getEjbName();
            final EntityData leftEntityData = entities.get(moduleId + "#" + leftEjbName);
            final EjbRelationshipRoleType.CmrField cmrField = leftRole.getCmrField();
            final String leftFieldName = null != cmrField ? cmrField.getCmrFieldName() : null;
            RelationField field;
            if (leftRole.isForeignKeyColumnOnSource()) {
                field = null != leftFieldName && null != leftEntityData ? leftEntityData.relations.get(leftFieldName) : null;
                // todo warn field not found
                if (field == null) {
                    continue;
                }
            } else {
                final RelationField other = null != leftFieldName && null != leftEntityData ? leftEntityData.relations.get(leftFieldName) : null;
                // todo warn field not found
                if (other == null) {
                    continue;
                }
                field = other.getRelatedField();
                // todo warn field not found
                if (field == null) {
                    if (other instanceof OneToMany) {
                        // for a unidirectional oneToMany, the join column declaration
                        // is placed on the oneToMany element instead of manyToOne
                        field = other;
                    } else {
                        continue;
                    }
                }
            }
            // is marked as the owning field
            if (field instanceof OneToOne) {
                final OneToOne left = (OneToOne) field;
                final OneToOne right = (OneToOne) left.getRelatedField();
                if (right != null) {
                    left.setMappedBy(null);
                    right.setMappedBy(left.getName());
                }
            }
            final EjbRelationshipRoleType.RoleMapping roleMapping = leftRole.getRoleMapping();
            for (final EjbRelationshipRoleType.RoleMapping.CmrFieldMapping cmrFieldMapping : roleMapping.getCmrFieldMapping()) {
                final JoinColumn joinColumn = new JoinColumn();
                joinColumn.setName(cmrFieldMapping.getForeignKeyColumn());
                joinColumn.setReferencedColumnName(cmrFieldMapping.getKeyColumn());
                field.getJoinColumn().add(joinColumn);
            }
        } else {
            final JoinTable joinTable = new JoinTable();
            joinTable.setName(relation.getManyToManyTableName());
            // 
            // left
            final EjbRelationshipRoleType leftRole = roles.get(0);
            RelationField left = null;
            if (leftRole.getRelationshipRoleSource() != null) {
                final String leftEjbName = leftRole.getRelationshipRoleSource().getEjbName();
                final EntityData leftEntityData = entities.get(moduleId + "#" + leftEjbName);
                if (leftEntityData == null) {
                    // todo warn no such entity in ejb-jar.xml
                    continue;
                }
                final EjbRelationshipRoleType.CmrField lcf = leftRole.getCmrField();
                left = (null != lcf ? leftEntityData.relations.get(lcf.getCmrFieldName()) : null);
            }
            if (left != null) {
                left.setJoinTable(joinTable);
                final EjbRelationshipRoleType.RoleMapping roleMapping = leftRole.getRoleMapping();
                for (final EjbRelationshipRoleType.RoleMapping.CmrFieldMapping cmrFieldMapping : roleMapping.getCmrFieldMapping()) {
                    final JoinColumn joinColumn = new JoinColumn();
                    joinColumn.setName(cmrFieldMapping.getForeignKeyColumn());
                    joinColumn.setReferencedColumnName(cmrFieldMapping.getKeyColumn());
                    joinTable.getJoinColumn().add(joinColumn);
                }
            }
            // right
            if (roles.size() > 1) {
                final EjbRelationshipRoleType rightRole = roles.get(1);
                // if there wasn't a left cmr field, find the field for the right, so we can add the join table to it
                if (left == null) {
                    final EjbRelationshipRoleType.CmrField rcf = rightRole.getCmrField();
                    if (rcf == null) {
                        // todo warn no cmr field declared for either role
                        continue;
                    } else if (rightRole.getRelationshipRoleSource() != null) {
                        final String rightEjbName = rightRole.getRelationshipRoleSource().getEjbName();
                        final EntityData rightEntityData = entities.get(moduleId + "#" + rightEjbName);
                        if (rightEntityData == null) {
                            // todo warn no such entity in ejb-jar.xml
                            continue;
                        }
                        final RelationField right = rightEntityData.relations.get(rcf.getCmrFieldName());
                        right.setJoinTable(joinTable);
                    }
                }
                final EjbRelationshipRoleType.RoleMapping roleMapping = rightRole.getRoleMapping();
                for (final EjbRelationshipRoleType.RoleMapping.CmrFieldMapping cmrFieldMapping : roleMapping.getCmrFieldMapping()) {
                    final JoinColumn joinColumn = new JoinColumn();
                    joinColumn.setName(cmrFieldMapping.getForeignKeyColumn());
                    joinColumn.setReferencedColumnName(cmrFieldMapping.getKeyColumn());
                    joinTable.getInverseJoinColumn().add(joinColumn);
                }
            }
        }
    }
}
Also used : Entity(org.apache.openejb.jee.jpa.Entity) Attributes(org.apache.openejb.jee.jpa.Attributes) EjbRelationshipRoleType(org.apache.openejb.jee.oejb2.EjbRelationshipRoleType) GeneratedValue(org.apache.openejb.jee.jpa.GeneratedValue) RelationField(org.apache.openejb.jee.jpa.RelationField) Field(org.apache.openejb.jee.jpa.Field) OneToOne(org.apache.openejb.jee.jpa.OneToOne) JoinColumn(org.apache.openejb.jee.jpa.JoinColumn) Column(org.apache.openejb.jee.jpa.Column) JoinColumn(org.apache.openejb.jee.jpa.JoinColumn) Table(org.apache.openejb.jee.jpa.Table) JoinTable(org.apache.openejb.jee.jpa.JoinTable) TreeMap(java.util.TreeMap) OneToMany(org.apache.openejb.jee.jpa.OneToMany) EjbRelationType(org.apache.openejb.jee.oejb2.EjbRelationType) RelationField(org.apache.openejb.jee.jpa.RelationField) EntityBeanType(org.apache.openejb.jee.oejb2.EntityBeanType) Id(org.apache.openejb.jee.jpa.Id) NamedQuery(org.apache.openejb.jee.jpa.NamedQuery) QueryType(org.apache.openejb.jee.oejb2.QueryType) JoinTable(org.apache.openejb.jee.jpa.JoinTable)

Example 68 with QueryType

use of net.opengis.wfs.v_2_0_0.QueryType in project midpoint by Evolveum.

the class TestOpenDj method test230SearchObjectsPagedNoOffset.

@Test
public void test230SearchObjectsPagedNoOffset() throws Exception {
    final String TEST_NAME = "test230SearchObjectsPagedNoOffset";
    TestUtil.displayTestTile(TEST_NAME);
    Task task = createTask(TEST_NAME);
    OperationResult result = task.getResult();
    QueryType queryType = PrismTestUtil.parseAtomicValue(QUERY_ALL_ACCOUNTS_FILE, QueryType.COMPLEX_TYPE);
    ObjectQuery query = QueryJaxbConvertor.createObjectQuery(ShadowType.class, queryType, prismContext);
    ObjectPaging paging = ObjectPaging.createPaging(null, 3);
    query.setPaging(paging);
    rememberConnectorOperationCount();
    rememberConnectorSimulatedPagingSearchCount();
    // WHEN
    TestUtil.displayWhen(TEST_NAME);
    List<PrismObject<ShadowType>> searchResults = provisioningService.searchObjects(ShadowType.class, query, null, task, result);
    // THEN
    TestUtil.displayThen(TEST_NAME);
    result.computeStatus();
    assertSuccess(result);
    display("Search resutls", searchResults);
    assertSearchResults(searchResults, "cook", "drake", "hbarbossa");
    assertConnectorOperationIncrement(1, 7);
    assertConnectorSimulatedPagingSearchIncrement(0);
}
Also used : PrismObject(com.evolveum.midpoint.prism.PrismObject) Task(com.evolveum.midpoint.task.api.Task) ObjectPaging(com.evolveum.midpoint.prism.query.ObjectPaging) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) QueryType(com.evolveum.prism.xml.ns._public.query_3.QueryType) ObjectQuery(com.evolveum.midpoint.prism.query.ObjectQuery) Test(org.testng.annotations.Test)

Example 69 with QueryType

use of net.opengis.wfs.v_2_0_0.QueryType in project midpoint by Evolveum.

the class TestOpenDj method test232SearchObjectsPagedOffset.

@Test
public void test232SearchObjectsPagedOffset() throws Exception {
    final String TEST_NAME = "test232SearchObjectsPagedOffset";
    TestUtil.displayTestTile(TEST_NAME);
    Task task = createTask(TEST_NAME);
    OperationResult result = task.getResult();
    QueryType queryType = PrismTestUtil.parseAtomicValue(QUERY_ALL_ACCOUNTS_FILE, QueryType.COMPLEX_TYPE);
    ObjectQuery query = QueryJaxbConvertor.createObjectQuery(ShadowType.class, queryType, prismContext);
    ObjectPaging paging = ObjectPaging.createPaging(2, 5);
    query.setPaging(paging);
    rememberConnectorOperationCount();
    rememberConnectorSimulatedPagingSearchCount();
    // WHEN
    TestUtil.displayWhen(TEST_NAME);
    SearchResultList<PrismObject<ShadowType>> searchResults = provisioningService.searchObjects(ShadowType.class, query, null, task, result);
    // THEN
    TestUtil.displayThen(TEST_NAME);
    result.computeStatus();
    assertSuccess(result);
    display("Search resutls", searchResults);
    // The results should be this:
    assertSearchResults(searchResults, "hbarbossa", "idm", "jbeckett", "jbond", "jgibbs");
    assertConnectorOperationIncrement(1, 11);
    assertConnectorSimulatedPagingSearchIncrement(0);
}
Also used : PrismObject(com.evolveum.midpoint.prism.PrismObject) Task(com.evolveum.midpoint.task.api.Task) ObjectPaging(com.evolveum.midpoint.prism.query.ObjectPaging) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) QueryType(com.evolveum.prism.xml.ns._public.query_3.QueryType) ObjectQuery(com.evolveum.midpoint.prism.query.ObjectQuery) Test(org.testng.annotations.Test)

Example 70 with QueryType

use of net.opengis.wfs.v_2_0_0.QueryType in project midpoint by Evolveum.

the class TestOpenDj method test233SearchObjectsPagedNoOffsetSortSn.

@Test
public void test233SearchObjectsPagedNoOffsetSortSn() throws Exception {
    final String TEST_NAME = "test233SearchObjectsPagedNoOffsetSortSn";
    TestUtil.displayTestTile(TEST_NAME);
    Task task = createTask(TEST_NAME);
    OperationResult result = task.getResult();
    QueryType queryType = PrismTestUtil.parseAtomicValue(QUERY_ALL_ACCOUNTS_FILE, QueryType.COMPLEX_TYPE);
    ObjectQuery query = QueryJaxbConvertor.createObjectQuery(ShadowType.class, queryType, prismContext);
    ObjectPaging paging = ObjectPaging.createPaging(null, 4);
    paging.setOrdering(ObjectOrdering.createOrdering(new ItemPath(ShadowType.F_ATTRIBUTES, new QName(RESOURCE_NS, "sn")), OrderDirection.ASCENDING));
    query.setPaging(paging);
    rememberConnectorOperationCount();
    rememberConnectorSimulatedPagingSearchCount();
    // WHEN
    TestUtil.displayWhen(TEST_NAME);
    List<PrismObject<ShadowType>> searchResults = provisioningService.searchObjects(ShadowType.class, query, null, task, result);
    // THEN
    TestUtil.displayThen(TEST_NAME);
    result.computeStatus();
    assertSuccess(result);
    display("Search resutls", searchResults);
    assertSearchResults(searchResults, "monk", "hbarbossa", "jbeckett", "jbond");
    assertConnectorOperationIncrement(1, 9);
    assertConnectorSimulatedPagingSearchIncrement(0);
}
Also used : PrismObject(com.evolveum.midpoint.prism.PrismObject) Task(com.evolveum.midpoint.task.api.Task) ObjectPaging(com.evolveum.midpoint.prism.query.ObjectPaging) QName(javax.xml.namespace.QName) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) QueryType(com.evolveum.prism.xml.ns._public.query_3.QueryType) ObjectQuery(com.evolveum.midpoint.prism.query.ObjectQuery) ItemPath(com.evolveum.midpoint.prism.path.ItemPath) Test(org.testng.annotations.Test)

Aggregations

QueryType (com.evolveum.prism.xml.ns._public.query_3.QueryType)57 QueryType (net.opengis.cat.csw.v_2_0_2.QueryType)41 Test (org.junit.Test)40 QueryImpl (ddf.catalog.operation.impl.QueryImpl)37 GetRecordsType (net.opengis.cat.csw.v_2_0_2.GetRecordsType)36 QName (javax.xml.namespace.QName)34 Test (org.testng.annotations.Test)32 JAXBElement (javax.xml.bind.JAXBElement)27 SearchFilterType (com.evolveum.prism.xml.ns._public.query_3.SearchFilterType)24 ArrayList (java.util.ArrayList)24 QueryRequestImpl (ddf.catalog.operation.impl.QueryRequestImpl)20 ObjectQuery (com.evolveum.midpoint.prism.query.ObjectQuery)17 Matchers.anyString (org.mockito.Matchers.anyString)14 ObjectListType (com.evolveum.midpoint.xml.ns._public.common.api_types_3.ObjectListType)13 OperationResultType (com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultType)13 ItemPath (com.evolveum.midpoint.prism.path.ItemPath)12 Task (com.evolveum.midpoint.task.api.Task)12 Holder (javax.xml.ws.Holder)12 GetFeatureType (ogc.schema.opengis.wfs.v_1_0_0.GetFeatureType)12 QueryType (ogc.schema.opengis.wfs.v_1_0_0.QueryType)12