Program: 52104
Project: 52104
Buggy source:
public void updateMetadataOnline(Context context,DSpaceObject dso,String identifier) throws IdentifierException, SQLException {
  String doi=DOI.formatIdentifier(identifier);
  TableRow doiRow=null;
  try {
    doiRow=DatabaseManager.findByUnique(context,"String_Node_Str","String_Node_Str",doi.substring(DOI.SCHEME.length()));
  }
 catch (  SQLException sqle) {
    log.warn("String_Node_Str",sqle);
    throw new RuntimeException("String_Node_Str" + "String_Node_Str",sqle);
  }
  if (null == doiRow) {
    log.error("String_Node_Str" + "String_Node_Str",doi);
    throw new DOIIdentifierException("String_Node_Str",DOIIdentifierException.DOI_DOES_NOT_EXIST);
  }
  if (doiRow.getIntColumn("String_Node_Str") != dso.getID() || doiRow.getIntColumn("String_Node_Str") != dso.getType()) {
    log.error("String_Node_Str" + "String_Node_Str",new String[]{doi,dso.getTypeText(),Integer.toString(dso.getID())});
    throw new DOIIdentifierException("String_Node_Str" + "String_Node_Str",DOIIdentifierException.MISMATCH);
  }
  if (DELETED == doiRow.getIntColumn("String_Node_Str") || TO_BE_DELETED == doiRow.getIntColumn("String_Node_Str")) {
    throw new DOIIdentifierException("String_Node_Str" + "String_Node_Str",DOIIdentifierException.DOI_IS_DELETED);
  }
  if (connector.isDOIReserved(context,identifier)) {
    if (!connector.isDOIReserved(context,dso,doi)) {
      log.warn("String_Node_Str" + "String_Node_Str",doi);
      throw new DOIIdentifierException("String_Node_Str" + "String_Node_Str",DOIIdentifierException.DOI_ALREADY_EXISTS);
    }
  }
  connector.updateMetadata(context,dso,doi);
  if (UPDATE_REGISTERED == doiRow.getIntColumn("String_Node_Str")) {
    doiRow.setColumn("String_Node_Str",IS_REGISTERED);
  }
 else   if (UPDATE_BEFORE_REGISTERATION == doiRow.getIntColumn("String_Node_Str")) {
    doiRow.setColumn("String_Node_Str",TO_BE_REGISTERED);
  }
 else   if (UPDATE_RESERVERED == doiRow.getIntColumn("String_Node_Str")) {
    doiRow.setColumn("String_Node_Str",IS_RESERVED);
  }
  DatabaseManager.update(context,doiRow);
}

Fixed version (ground truth):
public void updateMetadataOnline(Context context,DSpaceObject dso,String identifier) throws IdentifierException, SQLException {
  String doi=DOI.formatIdentifier(identifier);
  TableRow doiRow=null;
  try {
    doiRow=DatabaseManager.findByUnique(context,"String_Node_Str","String_Node_Str",doi.substring(DOI.SCHEME.length()));
  }
 catch (  SQLException sqle) {
    log.warn("String_Node_Str",sqle);
    throw new RuntimeException("String_Node_Str" + "String_Node_Str",sqle);
  }
  if (null == doiRow) {
    log.error("String_Node_Str" + "String_Node_Str",doi);
    throw new DOIIdentifierException("String_Node_Str",DOIIdentifierException.DOI_DOES_NOT_EXIST);
  }
  if (doiRow.getIntColumn("String_Node_Str") != dso.getID() || doiRow.getIntColumn("String_Node_Str") != dso.getType()) {
    log.error("String_Node_Str" + "String_Node_Str",new String[]{doi,dso.getTypeText(),Integer.toString(dso.getID())});
    throw new DOIIdentifierException("String_Node_Str" + "String_Node_Str",DOIIdentifierException.MISMATCH);
  }
  if (DELETED == doiRow.getIntColumn("String_Node_Str") || TO_BE_DELETED == doiRow.getIntColumn("String_Node_Str")) {
    throw new DOIIdentifierException("String_Node_Str" + "String_Node_Str",DOIIdentifierException.DOI_IS_DELETED);
  }
  connector.updateMetadata(context,dso,doi);
  if (UPDATE_REGISTERED == doiRow.getIntColumn("String_Node_Str")) {
    doiRow.setColumn("String_Node_Str",IS_REGISTERED);
  }
 else   if (UPDATE_BEFORE_REGISTERATION == doiRow.getIntColumn("String_Node_Str")) {
    doiRow.setColumn("String_Node_Str",TO_BE_REGISTERED);
  }
 else   if (UPDATE_RESERVERED == doiRow.getIntColumn("String_Node_Str")) {
    doiRow.setColumn("String_Node_Str",IS_RESERVED);
  }
  DatabaseManager.update(context,doiRow);
}