Program: 35503
Project: 35503
Buggy source:
/** 
 * Returns a sorted list of IndicatorDTOs for the given database, as well as their current aggregate value.
 * @param connection
 * @param databaseId
 */
@Override public void queryIndicatorsByDatabaseWithCurrentValues(Connection connection,final int databaseId){
  SqlQueryBuilder.select("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").from("String_Node_Str").leftJoin("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str").on("String_Node_Str").whereTrue("String_Node_Str" + databaseId).whereTrue("String_Node_Str").groupBy("String_Node_Str" + "String_Node_Str").orderBy("String_Node_Str").forEachResult(connection,new ResultHandler(){
    @Override public void handle(    ResultSet rs) throws SQLException {
      IndicatorDTO dto=new IndicatorDTO();
      dto.setId(rs.getInt(1));
      dto.setName(rs.getString(2));
      dto.setAggregation(rs.getInt(3));
      dto.setUnits(rs.getString(4));
      dto.setCategory(rs.getString(5));
      dto.setDescription(rs.getString(6));
      dto.setCode(rs.getString(7));
      dto.setDatabaseId(databaseId);
      dto.setSourceOfVerification(rs.getString(11));
      double objective=rs.getDouble(8);
      if (!rs.wasNull()) {
        dto.setObjective(objective);
      }
      Double currentValue=null;
      if (dto.getAggregation() == IndicatorDTO.AGGREGATE_SUM) {
        currentValue=rs.getDouble(9);
        if (!rs.wasNull()) {
          dto.setCurrentValue(currentValue);
        }
      }
 else       if (dto.getAggregation() == IndicatorDTO.AGGREGATE_AVG) {
        currentValue=rs.getDouble(10);
        if (!rs.wasNull()) {
          dto.setCurrentValue(currentValue);
        }
      }
      int groupId=rs.getInt(12);
      if (rs.wasNull()) {
        ungroupedIndicators.add(dto);
      }
 else {
        IndicatorGroup group=groupMap.get(groupId);
        group.addIndicator(dto);
        dto.setGroupId(group.getId());
      }
      dto.setDirectDataEntryEnabled(rs.getBoolean(13));
      allIndicators.add(dto);
      indicatorMap.put(dto.getId(),dto);
    }
  }
);
  SqlQueryBuilder.select("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").from("String_Node_Str").leftJoin("String_Node_Str").on("String_Node_Str").leftJoin("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str").on("String_Node_Str").whereTrue("String_Node_Str" + databaseId).where("String_Node_Str").equalTo(IndicatorDTO.AGGREGATE_MULTINOMIAL).groupBy("String_Node_Str").orderBy("String_Node_Str").forEachResult(connection,new ResultHandler(){
    @Override public void handle(    ResultSet rs) throws SQLException {
      int id=rs.getInt(1);
      String label=rs.getString(3);
      int count=rs.getInt(4);
      IndicatorDTO dto=indicatorMap.get(id);
      if (dto.getLabels() == null) {
        dto.setLabels(new ArrayList<String>());
      }
      dto.getLabels().add(label);
      if (dto.getLabelCounts() == null) {
        dto.setLabelCounts(new ArrayList<Integer>());
      }
      dto.getLabelCounts().add(count);
    }
  }
);
}

Fixed version (ground truth):
/** 
 * Returns a sorted list of IndicatorDTOs for the given database, as well as their current aggregate value.
 * @param connection
 * @param databaseId
 */
@Override public void queryIndicatorsByDatabaseWithCurrentValues(Connection connection,final int databaseId){
  SqlQueryBuilder.select("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").from("String_Node_Str").leftJoin("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str").on("String_Node_Str").whereTrue("String_Node_Str" + databaseId).whereTrue("String_Node_Str").groupBy("String_Node_Str" + "String_Node_Str").orderBy("String_Node_Str").forEachResult(connection,new ResultHandler(){
    @Override public void handle(    ResultSet rs) throws SQLException {
      IndicatorDTO dto=new IndicatorDTO();
      dto.setId(rs.getInt(1));
      dto.setName(rs.getString(2));
      dto.setAggregation(rs.getInt(3));
      dto.setUnits(rs.getString(4));
      dto.setCategory(rs.getString(5));
      dto.setDescription(rs.getString(6));
      dto.setCode(rs.getString(7));
      dto.setDatabaseId(databaseId);
      dto.setSourceOfVerification(rs.getString(11));
      double objective=rs.getDouble(8);
      if (!rs.wasNull()) {
        dto.setObjective(objective);
      }
      Double currentValue=null;
      if (dto.getAggregation() == IndicatorDTO.AGGREGATE_SUM) {
        currentValue=rs.getDouble(9);
        if (!rs.wasNull()) {
          dto.setCurrentValue(currentValue);
        }
      }
 else       if (dto.getAggregation() == IndicatorDTO.AGGREGATE_AVG) {
        currentValue=rs.getDouble(9) / rs.getDouble(10);
        if (!rs.wasNull()) {
          dto.setCurrentValue(currentValue);
        }
      }
      int groupId=rs.getInt(12);
      if (rs.wasNull()) {
        ungroupedIndicators.add(dto);
      }
 else {
        IndicatorGroup group=groupMap.get(groupId);
        group.addIndicator(dto);
        dto.setGroupId(group.getId());
      }
      dto.setDirectDataEntryEnabled(rs.getBoolean(13));
      allIndicators.add(dto);
      indicatorMap.put(dto.getId(),dto);
    }
  }
);
  SqlQueryBuilder.select("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").appendField("String_Node_Str").from("String_Node_Str").leftJoin("String_Node_Str").on("String_Node_Str").leftJoin("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str").on("String_Node_Str").whereTrue("String_Node_Str" + databaseId).where("String_Node_Str").equalTo(IndicatorDTO.AGGREGATE_MULTINOMIAL).groupBy("String_Node_Str").orderBy("String_Node_Str").forEachResult(connection,new ResultHandler(){
    @Override public void handle(    ResultSet rs) throws SQLException {
      int id=rs.getInt(1);
      String label=rs.getString(3);
      int count=rs.getInt(4);
      IndicatorDTO dto=indicatorMap.get(id);
      if (dto.getLabels() == null) {
        dto.setLabels(new ArrayList<String>());
      }
      dto.getLabels().add(label);
      if (dto.getLabelCounts() == null) {
        dto.setLabelCounts(new ArrayList<Integer>());
      }
      dto.getLabelCounts().add(count);
    }
  }
);
}