String writeCommonTableExpression()

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();
    }