/**
   * The returned List will contain objects of the default type or objects that inherit from the
   * default.
   *
   * @throws TorqueException Any exceptions caught during processing will be rethrown wrapped into a
   *     TorqueException.
   */
  public static List populateObjects(List records) throws TorqueException {
    List results = new ArrayList(records.size());

    // populate the object(s)
    for (int i = 0; i < records.size(); i++) {
      Record row = (Record) records.get(i);
      results.add(ExamPeer.row2Object(row, 1, ExamPeer.getOMClass()));
    }
    return results;
  }
  /**
   * Create a new object of type cls from a resultset row starting from a specified offset. This is
   * done so that you can select other rows than just those needed for this object. You may for
   * example want to create two objects from the same row.
   *
   * @throws TorqueException Any exceptions caught during processing will be rethrown wrapped into a
   *     TorqueException.
   */
  public static Exam row2Object(Record row, int offset, Class cls) throws TorqueException {
    try {
      Exam obj = (Exam) cls.newInstance();
      ExamPeer.populateObject(row, offset, obj);
      obj.setModified(false);
      obj.setNew(false);

      return obj;
    } catch (InstantiationException e) {
      throw new TorqueException(e);
    } catch (IllegalAccessException e) {
      throw new TorqueException(e);
    }
  }