package org.activityinfo.legacy.shared.impl; import com.bedatadriven.rebar.sql.client.SqlResultCallback; import com.bedatadriven.rebar.sql.client.SqlResultSet; import com.bedatadriven.rebar.sql.client.SqlResultSetRow; import com.bedatadriven.rebar.sql.client.SqlTransaction; import com.bedatadriven.rebar.sql.client.query.SqlQuery; import com.bedatadriven.rebar.sql.client.util.RowHandler; import com.google.common.collect.Lists; import com.google.gwt.user.client.rpc.AsyncCallback; import org.activityinfo.legacy.shared.command.GetIndicators; import org.activityinfo.legacy.shared.command.result.IndicatorResult; import org.activityinfo.legacy.shared.model.IndicatorDTO; import java.util.List; public class GetIndicatorsHandler implements CommandHandlerAsync<GetIndicators, IndicatorResult> { @Override public void execute(GetIndicators command, ExecutionContext context, final AsyncCallback<IndicatorResult> callback) { SqlQuery.select( "i.indicatorId", "i.activityId", "i.name", "i.type", "i.expression", "i.skipExpression", "i.nameInExpression", "i.calculatedAutomatically", "i.category", "i.listHeader", "i.description", "i.aggregation", "i.units", "i.activityId", "i.sortOrder", "i.mandatory", "a.databaseId") .appendColumn("db.name", "databaseName") .from(Tables.INDICATOR) .leftJoin(Tables.ACTIVITY, "a").on("a.activityId=i.activityId") .leftJoin(Tables.USER_DATABASE, "db").on("a.databaseId=db.databaseId") .where("indicatorId").in(command.getIndicatorIds()) .whereTrue("dateDeleted is null") .orderBy("SortOrder") .execute(context.getTransaction(), new SqlResultCallback() { @Override public void onSuccess(SqlTransaction tx, SqlResultSet results) { List<IndicatorDTO> indicators = Lists.newArrayList(); for(SqlResultSetRow row : results.getRows()) { indicators.add(createDto(row)); } callback.onSuccess(new IndicatorResult(indicators)); } }); } private IndicatorDTO createDto(SqlResultSetRow rs) { IndicatorDTO indicator = new IndicatorDTO(); indicator.setId(rs.getInt("indicatorId")); indicator.setActivityId(rs.getInt("activityId")); indicator.setDatabaseId(rs.getInt("databaseId")); indicator.setDatabaseName(rs.getString("databaseName")); indicator.setName(rs.getString("name")); indicator.setTypeId(rs.getString("type")); indicator.setExpression(rs.getString("expression")); indicator.setSkipExpression(rs.getString("skipExpression")); indicator.setNameInExpression(rs.getString("nameInExpression")); indicator.setCalculatedAutomatically(rs.getBoolean("calculatedAutomatically")); indicator.setCategory(rs.getString("category")); indicator.setListHeader(rs.getString("listHeader")); indicator.setDescription(rs.getString("description")); indicator.setAggregation(rs.getInt("aggregation")); indicator.setUnits(rs.getString("units")); indicator.setMandatory(rs.getBoolean("mandatory")); indicator.setSortOrder(rs.getInt("sortOrder")); return indicator; } }