protected ClassDescriptor selectClassDescriptor(Map row) throws PersistenceBrokerException {
    String[] key = new String[column.length];

    for (int i = 0; i < column.length; i++) {
      key[i] = (String) row.get(column[i]);
    }

    Class clazz = null;

    if (key != null) {
      clazz = chooseClass(key);
    }
    if (clazz == null) {
      return getClassDescriptor();
    }

    PersistenceBroker broker = null;
    try {
      broker = PersistenceBrokerFactory.defaultPersistenceBroker();
      ClassDescriptor result = broker.getClassDescriptor(clazz);
      broker.close();
      if (result == null) {
        return getClassDescriptor();
      } else {
        return result;
      }
    } catch (PersistenceBrokerException e) {
      broker.close();
      throw e;
    }
  }