private void buildWhereClause(KunderaQuery kunderaQuery, EntityMetadata metadata, MetamodelImpl metaModel,
CQLTranslator translator, StringBuilder builder)
{
for (Object clause : kunderaQuery.getFilterClauseQueue())
{
FilterClause filterClause = (FilterClause) clause;
Field f = (Field) metaModel.entity(metadata.getEntityClazz())
.getAttribute(metadata.getFieldName(filterClause.getProperty())).getJavaMember();
String jpaColumnName = getColumnName(metadata, filterClause.getProperty());
if (metaModel.isEmbeddable(metadata.getIdAttribute().getBindableJavaType()))
{
Field[] fields = metadata.getIdAttribute().getBindableJavaType().getDeclaredFields();
EmbeddableType compoundKey = metaModel.embeddable(metadata.getIdAttribute().getBindableJavaType());
for (Field field : fields)
{
if (field != null && !Modifier.isStatic(field.getModifiers())
&& !Modifier.isTransient(field.getModifiers())
&& !field.isAnnotationPresent(Transient.class))
{
Attribute attribute = compoundKey.getAttribute(field.getName());
String columnName = ((AbstractAttribute) attribute).getJPAColumnName();
Object value = PropertyAccessorHelper.getObject(filterClause.getValue().get(0), field);
// TODO
translator.buildWhereClause(builder, field.getType(), columnName, value,
filterClause.getCondition(), false);
}
}
}
else
{
translator.buildWhereClause(builder, f.getType(), jpaColumnName, filterClause.getValue().get(0),
filterClause.getCondition(), false);
}
}
builder.delete(builder.lastIndexOf(CQLTranslator.AND_CLAUSE), builder.length());
}