use of org.hisp.dhis.dataitem.query.shared.OptionalFilterBuilder in project dhis2-core by dhis2.
the class DataElementQuery method getStatement.
@Override
public String getStatement(final MapSqlParameterSource paramsMap) {
final StringBuilder sql = new StringBuilder();
sql.append("(");
// Creating a temp translated table to be queried.
sql.append(SPACED_SELECT + "* from (");
if (hasNonBlankStringPresence(paramsMap, LOCALE)) {
// Selecting translated names.
sql.append(selectRowsContainingTranslatedName());
} else {
// Retrieving all rows ignoring translation as no locale is defined.
sql.append(selectAllRowsIgnoringAnyTranslation());
}
sql.append(" group by item_name, item_uid, item_valuetype, item_code, item_domaintype, item_sharing, item_shortname," + " i18n_first_name, i18n_first_shortname, i18n_second_name, i18n_second_shortname");
// Closing the temp table.
sql.append(" ) t");
sql.append(SPACED_WHERE);
// Applying filters, ordering and limits.
// Mandatory filters. They do not respect the root junction filtering.
sql.append(always(sharingConditions("t.item_sharing", READ_ACCESS, paramsMap)));
sql.append(" and ");
// ONLY aggregates
sql.append(always("t.item_domaintype = 'AGGREGATE'"));
// Optional filters, based on the current root junction.
final OptionalFilterBuilder optionalFilters = new OptionalFilterBuilder(paramsMap);
final Set<String> aggregatableTypes = getAggregatables().stream().map(type -> type.name()).collect(toSet());
// consider the domainType = 'AGGREGATE'. Very specific to DataElements.
if (paramsMap != null && paramsMap.hasValue(VALUE_TYPES) && paramsMap.getValue(VALUE_TYPES) != null && !((Set) paramsMap.getValue(VALUE_TYPES)).containsAll(aggregatableTypes)) {
optionalFilters.append(ifSet(valueTypeFiltering("t.item_valuetype", paramsMap)));
}
optionalFilters.append(ifSet(displayNameFiltering("t.i18n_first_name", paramsMap)));
optionalFilters.append(ifSet(displayShortNameFiltering("t.i18n_first_shortname", paramsMap)));
optionalFilters.append(ifSet(nameFiltering("t.item_name", paramsMap)));
optionalFilters.append(ifSet(shortNameFiltering("t.item_shortname", paramsMap)));
optionalFilters.append(ifSet(uidFiltering("t.item_uid", paramsMap)));
sql.append(ifAny(optionalFilters.toString()));
final String identifiableStatement = identifiableTokenFiltering("t.item_uid", "t.item_code", "t.i18n_first_name", null, paramsMap);
if (isNotBlank(identifiableStatement)) {
sql.append(rootJunction(paramsMap));
sql.append(identifiableStatement);
}
sql.append(ifSet(ordering("t.i18n_first_name, t.i18n_second_name, t.item_uid", "t.item_name, t.item_uid", "t.i18n_first_shortname, t.i18n_second_shortname, t.item_uid", "t.item_shortname, t.item_uid", paramsMap)));
sql.append(ifSet(maxLimit(paramsMap)));
sql.append(")");
final String fullStatement = sql.toString();
log.trace("Full SQL: " + fullStatement);
return fullStatement;
}
use of org.hisp.dhis.dataitem.query.shared.OptionalFilterBuilder in project dhis2-core by dhis2.
the class DataSetQuery method getStatement.
@Override
public String getStatement(final MapSqlParameterSource paramsMap) {
final StringBuilder sql = new StringBuilder();
sql.append("(");
// Creating a temp translated table to be queried.
sql.append(SPACED_SELECT + "* from (");
if (hasNonBlankStringPresence(paramsMap, LOCALE)) {
// Selecting translated names.
sql.append(selectRowsContainingTranslatedName());
} else {
// Retrieving all rows ignoring translation as no locale is defined.
sql.append(selectAllRowsIgnoringAnyTranslation());
}
sql.append(" group by item_name, item_uid, item_code, item_sharing, item_shortname, i18n_first_name," + " i18n_first_shortname, i18n_second_name, i18n_second_shortname");
// Closing the temp table.
sql.append(" ) t");
sql.append(SPACED_WHERE);
// Applying filters, ordering and limits.
// Mandatory filters. They do not respect the root junction filtering.
sql.append(always(sharingConditions("t.item_sharing", READ_ACCESS, paramsMap)));
// Optional filters, based on the current root junction.
final OptionalFilterBuilder optionalFilters = new OptionalFilterBuilder(paramsMap);
optionalFilters.append(ifSet(displayNameFiltering("t.i18n_first_name", paramsMap)));
optionalFilters.append(ifSet(displayShortNameFiltering("t.i18n_first_shortname", paramsMap)));
optionalFilters.append(ifSet(nameFiltering("t.item_name", paramsMap)));
optionalFilters.append(ifSet(shortNameFiltering("t.item_shortname", paramsMap)));
optionalFilters.append(ifSet(uidFiltering("t.item_uid", paramsMap)));
sql.append(ifAny(optionalFilters.toString()));
final String identifiableStatement = identifiableTokenFiltering("t.item_uid", "t.item_code", "t.i18n_first_name", null, paramsMap);
if (isNotBlank(identifiableStatement)) {
sql.append(rootJunction(paramsMap));
sql.append(identifiableStatement);
}
sql.append(ifSet(ordering("t.i18n_first_name, t.i18n_second_name, t.item_uid", "t.item_name, t.item_uid", "t.i18n_first_shortname, t.i18n_second_shortname, t.item_uid", "t.item_shortname, t.item_uid", paramsMap)));
sql.append(ifSet(maxLimit(paramsMap)));
sql.append(")");
final String fullStatement = sql.toString();
log.trace("Full SQL: " + fullStatement);
return fullStatement;
}
use of org.hisp.dhis.dataitem.query.shared.OptionalFilterBuilder in project dhis2-core by dhis2.
the class IndicatorQuery method getStatement.
@Override
public String getStatement(final MapSqlParameterSource paramsMap) {
final StringBuilder sql = new StringBuilder();
sql.append("(");
// Creating a temp translated table to be queried.
sql.append(SPACED_SELECT + "* from (");
if (hasNonBlankStringPresence(paramsMap, LOCALE)) {
// Selecting translated names.
sql.append(selectRowsContainingTranslatedName());
} else {
// Retrieving all rows ignoring translation as no locale is defined.
sql.append(selectAllRowsIgnoringAnyTranslation());
}
sql.append(" group by item_name, item_uid, item_code, item_sharing, item_shortname," + " i18n_first_name, i18n_first_shortname, i18n_second_name, i18n_second_shortname");
// Closing the temp table.
sql.append(" ) t");
sql.append(SPACED_WHERE);
// Applying filters, ordering and limits.
// Mandatory filters. They do not respect the root junction filtering.
sql.append(always(sharingConditions("t.item_sharing", READ_ACCESS, paramsMap)));
// Optional filters, based on the current root junction.
final OptionalFilterBuilder optionalFilters = new OptionalFilterBuilder(paramsMap);
optionalFilters.append(ifSet(displayNameFiltering("t.i18n_first_name", paramsMap)));
optionalFilters.append(ifSet(displayShortNameFiltering("t.i18n_first_shortname", paramsMap)));
optionalFilters.append(ifSet(nameFiltering("t.item_name", paramsMap)));
optionalFilters.append(ifSet(shortNameFiltering("t.item_shortname", paramsMap)));
optionalFilters.append(ifSet(uidFiltering("t.item_uid", paramsMap)));
sql.append(ifAny(optionalFilters.toString()));
final String identifiableStatement = identifiableTokenFiltering("t.item_uid", "t.item_code", "t.i18n_first_name", null, paramsMap);
if (isNotBlank(identifiableStatement)) {
sql.append(rootJunction(paramsMap));
sql.append(identifiableStatement);
}
sql.append(ifSet(ordering("t.i18n_first_name, t.i18n_second_name, t.item_uid", "t.item_name, t.item_uid", "t.i18n_first_shortname, t.i18n_second_shortname, t.item_uid", "t.item_shortname, t.item_uid", paramsMap)));
sql.append(ifSet(maxLimit(paramsMap)));
sql.append(")");
final String fullStatement = sql.toString();
log.trace("Full SQL: " + fullStatement);
return fullStatement;
}
use of org.hisp.dhis.dataitem.query.shared.OptionalFilterBuilder in project dhis2-core by dhis2.
the class ProgramIndicatorQuery method getStatement.
@Override
public String getStatement(final MapSqlParameterSource paramsMap) {
final StringBuilder sql = new StringBuilder();
sql.append("(");
// Creating a temp translated table to be queried.
sql.append(SPACED_SELECT + "distinct * from (");
if (hasNonBlankStringPresence(paramsMap, LOCALE)) {
// Selecting translated names.
sql.append(selectRowsContainingTranslatedName());
} else {
// Retrieving all rows ignoring translation as no locale is defined.
sql.append(selectAllRowsIgnoringAnyTranslation());
}
sql.append(" group by item_name, " + COMMON_UIDS + ", item_code, item_sharing, item_shortname," + " i18n_first_name, i18n_first_shortname, i18n_second_name, i18n_second_shortname");
// Closing the temp table.
sql.append(" ) t");
sql.append(SPACED_WHERE);
// Applying filters, ordering and limits.
// Mandatory filters. They do not respect the root junction filtering.
sql.append(always(sharingConditions("t.item_sharing", READ_ACCESS, paramsMap)));
// Optional filters, based on the current root junction.
final OptionalFilterBuilder optionalFilters = new OptionalFilterBuilder(paramsMap);
optionalFilters.append(ifSet(displayNameFiltering("t.i18n_first_name", paramsMap)));
optionalFilters.append(ifSet(displayShortNameFiltering("t.i18n_first_shortname", paramsMap)));
optionalFilters.append(ifSet(nameFiltering("t.item_name", paramsMap)));
optionalFilters.append(ifSet(shortNameFiltering("t.item_shortname", paramsMap)));
optionalFilters.append(ifSet(programIdFiltering("t.program_uid", paramsMap)));
optionalFilters.append(ifSet(uidFiltering("t.item_uid", paramsMap)));
sql.append(ifAny(optionalFilters.toString()));
final String identifiableStatement = identifiableTokenFiltering("t.item_uid", "t.item_code", "t.i18n_first_name", null, paramsMap);
if (isNotBlank(identifiableStatement)) {
sql.append(rootJunction(paramsMap));
sql.append(identifiableStatement);
}
sql.append(ifSet(ordering("t.i18n_first_name, t.item_uid", "t.item_name, t.item_uid", "t.i18n_first_shortname, t.item_uid", " t.item_shortname, t.item_uid", paramsMap)));
sql.append(ifSet(maxLimit(paramsMap)));
sql.append(")");
final String fullStatement = sql.toString();
log.trace("Full SQL: " + fullStatement);
return fullStatement;
}
use of org.hisp.dhis.dataitem.query.shared.OptionalFilterBuilder in project dhis2-core by dhis2.
the class ProgramAttributeQuery method getStatement.
@Override
public String getStatement(final MapSqlParameterSource paramsMap) {
final StringBuilder sql = new StringBuilder();
sql.append("(");
// Creating a temp translated table to be queried.
sql.append(SPACED_SELECT + "* from (");
if (hasNonBlankStringPresence(paramsMap, LOCALE)) {
// Selecting translated names.
sql.append(selectRowsContainingTranslatedName());
} else {
// Retrieving all rows ignoring translation as no locale is defined.
sql.append(selectAllRowsIgnoringAnyTranslation());
}
sql.append(" group by program.name, program.shortname, item_name, " + COMMON_UIDS + ", item_valuetype, item_code, item_sharing, item_shortname," + " i18n_first_name, i18n_first_shortname, i18n_second_name, i18n_second_shortname");
// Closing the temp table.
sql.append(" ) t");
sql.append(SPACED_WHERE);
// Applying filters, ordering and limits.
// Mandatory filters. They do not respect the root junction filtering.
sql.append(always(sharingConditions("t.item_sharing", READ_ACCESS, paramsMap)));
sql.append(" and");
sql.append(ifSet(valueTypeFiltering("t.item_valuetype", paramsMap)));
// Optional filters, based on the current root junction.
final OptionalFilterBuilder optionalFilters = new OptionalFilterBuilder(paramsMap);
optionalFilters.append(ifSet(displayNameFiltering("t.i18n_first_name", "t.i18n_second_name", paramsMap)));
optionalFilters.append(ifSet(displayShortNameFiltering("t.i18n_first_shortname", "t.i18n_second_shortname", paramsMap)));
optionalFilters.append(ifSet(nameFiltering("t.program_name", "t.item_name", paramsMap)));
optionalFilters.append(ifSet(shortNameFiltering("t.program_shortname", "t.item_shortname", paramsMap)));
optionalFilters.append(ifSet(programIdFiltering("t.program_uid", paramsMap)));
optionalFilters.append(ifSet(uidFiltering("t.item_uid", paramsMap)));
sql.append(ifAny(optionalFilters.toString()));
final String identifiableStatement = identifiableTokenFiltering("t.item_uid", "t.item_code", "t.i18n_second_name", "t.i18n_first_name", paramsMap);
if (isNotBlank(identifiableStatement)) {
sql.append(rootJunction(paramsMap));
sql.append(identifiableStatement);
}
sql.append(ifSet(ordering("t.i18n_first_name, t.i18n_second_name, t.item_uid", "t.program_name, t.item_name, t.item_uid", "t.i18n_first_shortname," + " t.i18n_second_shortname, t.item_uid", "t.program_shortname, t.item_shortname, t.item_uid", paramsMap)));
sql.append(ifSet(maxLimit(paramsMap)));
sql.append(")");
final String fullStatement = sql.toString();
log.trace("Full SQL: " + fullStatement);
return fullStatement;
}
Aggregations