in data-catalog-api/server/service/src/main/java/org/apache/airavata/datacatalog/api/query/impl/PostgresqlMetadataSchemaQueryWriterImpl.java [208:236]
String writeCommonTableExpression(UserEntity userEntity, MetadataSchemaEntity metadataSchemaEntity) {
StringBuilder sb = new StringBuilder();
sb.append(metadataSchemaEntity.getSchemaName());
sb.append(" AS (");
sb.append(
"select dp_.data_product_id, dp_.parent_data_product_id, dp_.external_id, dp_.name, dp_.metadata, dp_.owner_id ");
// for (MetadataSchemaFieldEntity field :
// metadataSchemaEntity.getMetadataSchemaFields()) {
// TODO: include each field as well?
// }
sb.append("from data_product dp_ ");
sb.append("inner join data_product_metadata_schema dpms_ on dpms_.data_product_id = dp_.data_product_id ");
sb.append("inner join metadata_schema ms_ on ms_.metadata_schema_id = dpms_.metadata_schema_id ");
sb.append("inner join ");
sb.append(sharingManager.getDataProductSharingView());
sb.append(" dpsv_ on dpsv_.data_product_id = dp_.data_product_id ");
sb.append("and dpsv_.user_id = ");
// TODO: change these to be bound parameters
sb.append(userEntity.getUserId());
sb.append(" and dpsv_.permission_id in (");
sb.append(Permission.OWNER.getNumber());
sb.append(",");
sb.append(Permission.READ_METADATA.getNumber());
sb.append(") ");
sb.append("where ms_.metadata_schema_id = " + metadataSchemaEntity.getMetadataSchemaId());
sb.append(")");
return sb.toString();
}