use of net.opengis.cat.csw.v_2_0_2.QueryType in project midpoint by Evolveum.
the class TestQueryConvertors method testFilterUserNameJaxb.
@Test
public void testFilterUserNameJaxb() throws Exception {
displayTestTitle("testFilterUserNameJaxb");
SearchFilterType filterType = PrismTestUtil.parseAnyValue(FILTER_USER_NAME_FILE);
ObjectQuery query = toObjectQuery(UserType.class, filterType);
displayQuery(query);
assertNotNull(query);
ObjectFilter filter = query.getFilter();
PrismAsserts.assertEqualsFilter(filter, UserType.F_NAME, PolyStringType.COMPLEX_TYPE, new ItemPath(new QName(null, UserType.F_NAME.getLocalPart())));
PrismAsserts.assertEqualsFilterValue((EqualFilter) filter, createPolyString("jack"));
QueryType convertedQueryType = toQueryType(query);
System.out.println("Re-converted query type");
System.out.println(convertedQueryType.debugDump());
Element filterClauseElement = convertedQueryType.getFilter().getFilterClauseAsElement(getPrismContext());
System.out.println("Serialized filter (JAXB->DOM)");
System.out.println(DOMUtil.serializeDOMToString(filterClauseElement));
DomAsserts.assertElementQName(filterClauseElement, EqualFilter.ELEMENT_NAME);
DomAsserts.assertSubElements(filterClauseElement, 2);
DomAsserts.assertSubElement(filterClauseElement, PrismConstants.Q_VALUE);
Element valueElement = DOMUtil.getChildElement(filterClauseElement, PrismConstants.Q_VALUE);
DomAsserts.assertTextContent(valueElement, "jack");
}
use of net.opengis.cat.csw.v_2_0_2.QueryType in project midpoint by Evolveum.
the class TestQueryConvertors method testFilterNotInOid.
@Test
public void testFilterNotInOid() throws Exception {
displayTestTitle("testFilterNotInOid");
SearchFilterType filterType = PrismTestUtil.parseAnyValue(FILTER_NOT_IN_OID);
ObjectQuery query = toObjectQuery(UserType.class, filterType);
displayQuery(query);
assertNotNull(query);
ObjectFilter filter = query.getFilter();
assertTrue("Filter is not of NOT type", filter instanceof NotFilter);
ObjectFilter subFilter = ((NotFilter) filter).getFilter();
assertTrue("Subfilter is not of IN_OID type", subFilter instanceof InOidFilter);
QueryType convertedQueryType = toQueryType(query);
System.out.println("Re-converted query type");
System.out.println(convertedQueryType.debugDump());
Element filterClauseElement = convertedQueryType.getFilter().getFilterClauseAsElement(getPrismContext());
LOGGER.info(convertedQueryType.getFilter().getFilterClauseXNode().debugDump());
System.out.println("Serialized filter (JAXB->DOM)");
String filterAsString = DOMUtil.serializeDOMToString(filterClauseElement);
System.out.println(filterAsString);
LOGGER.info(filterAsString);
DomAsserts.assertElementQName(filterClauseElement, new QName(PrismConstants.NS_QUERY, "not"));
assertEquals("wrong # of inOid subfilters", 1, filterClauseElement.getElementsByTagNameNS(PrismConstants.NS_QUERY, "inOid").getLength());
assertEquals("wrong # of value subfilters", 4, filterClauseElement.getElementsByTagNameNS(PrismConstants.NS_QUERY, "value").getLength());
}
use of net.opengis.cat.csw.v_2_0_2.QueryType in project midpoint by Evolveum.
the class TestQueryConvertors method testFilterUserAndJaxb.
@Test
public void testFilterUserAndJaxb() throws Exception {
displayTestTitle("testFilterUserAndJaxb");
SearchFilterType filterType = PrismTestUtil.parseAnyValue(FILTER_USER_AND_FILE);
ObjectQuery query = toObjectQuery(UserType.class, filterType);
displayQuery(query);
assertNotNull(query);
ObjectFilter filter = query.getFilter();
PrismAsserts.assertAndFilter(filter, 2);
ObjectFilter first = getFilterCondition(filter, 0);
PrismAsserts.assertEqualsFilter(first, UserType.F_GIVEN_NAME, DOMUtil.XSD_STRING, new ItemPath(new QName(null, UserType.F_GIVEN_NAME.getLocalPart())));
PrismAsserts.assertEqualsFilterValue((EqualFilter) first, "Jack");
ObjectFilter second = getFilterCondition(filter, 1);
PrismAsserts.assertEqualsFilter(second, UserType.F_LOCALITY, DOMUtil.XSD_STRING, new ItemPath(new QName(null, UserType.F_LOCALITY.getLocalPart())));
PrismAsserts.assertEqualsFilterValue((EqualFilter) second, "Caribbean");
QueryType convertedQueryType = toQueryType(query);
System.out.println("Re-converted query type");
System.out.println(convertedQueryType.debugDump());
SearchFilterType convertedFilterType = convertedQueryType.getFilter();
MapXNode xFilter = convertedFilterType.serializeToXNode();
PrismAsserts.assertSize(xFilter, 1);
PrismAsserts.assertSubnode(xFilter, AndFilter.ELEMENT_NAME, MapXNode.class);
MapXNode xandmap = (MapXNode) xFilter.get(AndFilter.ELEMENT_NAME);
PrismAsserts.assertSize(xandmap, 1);
PrismAsserts.assertSubnode(xandmap, EqualFilter.ELEMENT_NAME, ListXNode.class);
ListXNode xequalsList = (ListXNode) xandmap.get(EqualFilter.ELEMENT_NAME);
PrismAsserts.assertSize(xequalsList, 2);
Element filterClauseElement = convertedFilterType.getFilterClauseAsElement(getPrismContext());
System.out.println("Serialized filter (JAXB->DOM)");
System.out.println(DOMUtil.serializeDOMToString(filterClauseElement));
DomAsserts.assertElementQName(filterClauseElement, AndFilter.ELEMENT_NAME);
DomAsserts.assertSubElements(filterClauseElement, 2);
Element firstSubelement = DOMUtil.getChildElement(filterClauseElement, 0);
DomAsserts.assertElementQName(firstSubelement, EqualFilter.ELEMENT_NAME);
Element firstValueElement = DOMUtil.getChildElement(firstSubelement, PrismConstants.Q_VALUE);
DomAsserts.assertTextContent(firstValueElement, "Jack");
Element secondSubelement = DOMUtil.getChildElement(filterClauseElement, 1);
DomAsserts.assertElementQName(secondSubelement, EqualFilter.ELEMENT_NAME);
Element secondValueElement = DOMUtil.getChildElement(secondSubelement, PrismConstants.Q_VALUE);
DomAsserts.assertTextContent(secondValueElement, "Caribbean");
}
use of net.opengis.cat.csw.v_2_0_2.QueryType in project midpoint by Evolveum.
the class TestQueryConvertors method testFilterNotFullText.
@Test
public void testFilterNotFullText() throws Exception {
displayTestTitle("testFilterNotFullText");
SearchFilterType filterType = PrismTestUtil.parseAnyValue(FILTER_NOT_FULL_TEXT);
ObjectQuery query = toObjectQuery(UserType.class, filterType);
displayQuery(query);
assertNotNull(query);
ObjectFilter filter = query.getFilter();
assertTrue("Filter is not of NOT type", filter instanceof NotFilter);
ObjectFilter subFilter = ((NotFilter) filter).getFilter();
assertTrue("Subfilter is not of FULL_TEXT type", subFilter instanceof FullTextFilter);
QueryType convertedQueryType = toQueryType(query);
System.out.println("Re-converted query type");
System.out.println(convertedQueryType.debugDump());
Element filterClauseElement = convertedQueryType.getFilter().getFilterClauseAsElement(getPrismContext());
LOGGER.info(convertedQueryType.getFilter().getFilterClauseXNode().debugDump());
System.out.println("Serialized filter (JAXB->DOM)");
String filterAsString = DOMUtil.serializeDOMToString(filterClauseElement);
System.out.println(filterAsString);
LOGGER.info(filterAsString);
DomAsserts.assertElementQName(filterClauseElement, new QName(PrismConstants.NS_QUERY, "not"));
assertEquals("wrong # of fullText subfilters", 1, filterClauseElement.getElementsByTagNameNS(PrismConstants.NS_QUERY, "fullText").getLength());
assertEquals("wrong # of value subfilters", 2, filterClauseElement.getElementsByTagNameNS(PrismConstants.NS_QUERY, "value").getLength());
}
use of net.opengis.cat.csw.v_2_0_2.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);
}
}
}
}
}
Aggregations