Program: 73594
Project: 73594
Buggy source:
/** 
 * Create the attribute sub-query for the given attribute.
 * @param attribute PTDBGenericAttribute for which the sub-query needs to be created.
 * @return Sub-query for the given attribute.
 */
private String _createAttributeClause(PTDBGenericAttribute attribute){
  StringBuffer attributesQuery=new StringBuffer();
  boolean isPreviousClauseSet=false;
  if (attribute.getAttributeName() != null && !"String_Node_Str".equals(attribute.getAttributeName().trim())) {
    attributesQuery.append("String_Node_Str").append(attribute.getAttributeName()).append("String_Node_Str");
    isPreviousClauseSet=true;
  }
  ArrayList<String> attributeValues=attribute.getValues();
  if (attributeValues != null && attributeValues.size() > 0) {
    if (isPreviousClauseSet) {
      attributesQuery.append("String_Node_Str");
    }
    String valuesClause="String_Node_Str";
    for (    String value : attributeValues) {
      if (value != null && value.length() > 0) {
        valuesClause=valuesClause + "String_Node_Str" + value+ "String_Node_Str"+ "String_Node_Str";
      }
 else {
        valuesClause="String_Node_Str";
        break;
      }
      isPreviousClauseSet=true;
    }
    if (valuesClause != null && valuesClause.length() > 0) {
      valuesClause=valuesClause.substring(0,valuesClause.lastIndexOf("String_Node_Str"));
      valuesClause=valuesClause.trim();
      if (attributeValues.size() > 1) {
        valuesClause="String_Node_Str" + valuesClause + "String_Node_Str";
      }
    }
    attributesQuery.append(valuesClause);
  }
  String attributeClass=attribute.getClassName();
  if (attributeClass != null && attributeClass.length() > 0) {
    if (isPreviousClauseSet) {
      attributesQuery.append("String_Node_Str");
    }
    attributesQuery.append("String_Node_Str").append(attributeClass).append("String_Node_Str");
  }
  return attributesQuery.toString();
}

Fixed version (ground truth):
/** 
 * Create the attribute sub-query for the given attribute.
 * @param attribute PTDBGenericAttribute for which the sub-query needs to be created.
 * @return Sub-query for the given attribute.
 */
private String _createAttributeClause(PTDBGenericAttribute attribute){
  StringBuffer attributesQuery=new StringBuffer();
  boolean isPreviousClauseSet=false;
  if (attribute.getAttributeName() != null && !"String_Node_Str".equals(attribute.getAttributeName().trim())) {
    attributesQuery.append("String_Node_Str").append(attribute.getAttributeName()).append("String_Node_Str");
    isPreviousClauseSet=true;
  }
  ArrayList<String> attributeValues=attribute.getValues();
  if (attributeValues != null && attributeValues.size() > 0) {
    String valuesClause="String_Node_Str";
    for (    String value : attributeValues) {
      if (value != null && value.length() > 0) {
        valuesClause=valuesClause + "String_Node_Str" + value+ "String_Node_Str"+ "String_Node_Str";
      }
 else {
        valuesClause="String_Node_Str";
        break;
      }
    }
    if (valuesClause != null && valuesClause.length() > 0) {
      valuesClause=valuesClause.substring(0,valuesClause.lastIndexOf("String_Node_Str"));
      valuesClause=valuesClause.trim();
      if (attributeValues.size() > 1) {
        valuesClause="String_Node_Str" + valuesClause + "String_Node_Str";
      }
      if (isPreviousClauseSet) {
        attributesQuery.append("String_Node_Str");
      }
      attributesQuery.append(valuesClause);
      isPreviousClauseSet=true;
    }
  }
  String attributeClass=attribute.getClassName();
  if (attributeClass != null && attributeClass.length() > 0) {
    if (isPreviousClauseSet) {
      attributesQuery.append("String_Node_Str");
    }
    attributesQuery.append("String_Node_Str").append(attributeClass).append("String_Node_Str");
  }
  return attributesQuery.toString();
}