private void populateCollectionFromTableRow(Collection c, TableRow row) {
    Bitstream logo = null;
    Item templateItem = null;

    // Get the logo bitstream
    if (!row.isColumnNull("logo_bitstream_id")) {
      int id = row.getIntColumn("logo_bitstream_id");
      logo = bitstreamDAO.retrieve(id);
    }

    // Get the template item
    if (!row.isColumnNull("template_item_id")) {
      templateItem = itemDAO.retrieve(row.getIntColumn("template_item_id"));
    }

    UUID uuid = UUID.fromString(row.getStringColumn("uuid"));
    c.setIdentifier(new ObjectIdentifier(uuid));

    c.setLogoBitstream(logo);
    c.setTemplateItem(templateItem);

    c.setWorkflowGroup(1, groupFromColumn(row, "workflow_step_1"));
    c.setWorkflowGroup(2, groupFromColumn(row, "workflow_step_2"));
    c.setWorkflowGroup(3, groupFromColumn(row, "workflow_step_3"));

    c.setSubmitters(groupFromColumn(row, "submitter"));
    c.setAdministrators(groupFromColumn(row, "admin"));

    for (CollectionMetadataField field : CollectionMetadataField.values()) {
      String value = row.getStringColumn(field.toString());
      if (value == null) {
        c.setMetadata(field.toString(), "");
      } else {
        c.setMetadata(field.toString(), value);
      }
    }
  }