@Override
  protected Object getDomainProperty(DRace domain, String name) {
    Object value;
    // simple key?
    if (COLUMN_NAME_ID.equals(name)) {
      value = domain.getId();
    }
    // fields
    else if (COLUMN_NAME_CREATEDBY.equals(name)) {
      value = domain.getCreatedBy();
    } else if (COLUMN_NAME_CREATEDDATE.equals(name)) {
      value = domain.getCreatedDate();
    } else if (COLUMN_NAME_NAME.equals(name)) {
      value = domain.getName();
    } else if (COLUMN_NAME_UPDATEDBY.equals(name)) {
      value = domain.getUpdatedBy();
    } else if (COLUMN_NAME_UPDATEDDATE.equals(name)) {
      value = domain.getUpdatedDate();
    }
    // one-to-ones
    // many-to-ones
    else if (COLUMN_NAME_SERIES.equals(name)) {
      value = domain.getSeries();
    }
    // many-to-manys
    else {
      value = super.getDomainProperty(domain, name);
    }

    return value;
  }
 @Override
 protected void setDomainProperty(final DRace domain, final String name, final Object value) {
   // simple key?
   if (COLUMN_NAME_ID.equals(name)) {
     domain.setId((java.lang.Long) value);
   }
   // fields
   else if (COLUMN_NAME_CREATEDBY.equals(name)) {
     domain.setCreatedBy((java.lang.String) value);
   } else if (COLUMN_NAME_CREATEDDATE.equals(name)) {
     domain.setCreatedDate((java.util.Date) value);
   } else if (COLUMN_NAME_NAME.equals(name)) {
     domain.setName((java.lang.String) value);
   } else if (COLUMN_NAME_UPDATEDBY.equals(name)) {
     domain.setUpdatedBy((java.lang.String) value);
   } else if (COLUMN_NAME_UPDATEDDATE.equals(name)) {
     domain.setUpdatedDate((java.util.Date) value);
   }
   // one-to-ones
   // many-to-ones
   else if (COLUMN_NAME_SERIES.equals(name)) {
     DSeries foreign = null;
     if (null != value) {
       foreign = seriesDao.createDomain(value);
     }
     domain.setSeries(foreign);
   }
   // many-to-manys
   else {
     super.setDomainProperty(domain, name, value);
   }
 }
  /**
   * Returns the class of the domain property for specified column
   *
   * @param name
   * @return the class of the domain property
   */
  public Class getColumnClass(String name) {
    Class clazz;
    // simple key?
    if (COLUMN_NAME_ID.equals(name)) {
      clazz = java.lang.Long.class;
    }
    // fields
    else if (COLUMN_NAME_CREATEDBY.equals(name)) {
      clazz = java.lang.String.class;
    } else if (COLUMN_NAME_CREATEDDATE.equals(name)) {
      clazz = java.util.Date.class;
    } else if (COLUMN_NAME_NAME.equals(name)) {
      clazz = java.lang.String.class;
    } else if (COLUMN_NAME_UPDATEDBY.equals(name)) {
      clazz = java.lang.String.class;
    } else if (COLUMN_NAME_UPDATEDDATE.equals(name)) {
      clazz = java.util.Date.class;
    }
    // one-to-ones
    // many-to-ones
    else if (COLUMN_NAME_SERIES.equals(name)) {
      clazz = se.bassac.roster.domain.DSeries.class;
    }
    // many-to-manys
    else {
      throw new IllegalArgumentException("No such column " + name);
    }

    return clazz;
  }
 @Override
 protected void setDomainStringProperty(
     final DRace domain, final String name, final Map<String, String> properties) {
   final String value = properties.get(name);
   Class clazz = getColumnClass(name);
   // many-to-ones
   if (COLUMN_NAME_SERIES.equals(name)) {
     clazz = java.lang.Long.class;
   }
   setDomainProperty(domain, name, parseProperty(value, clazz));
 }
 /** Overrides to substitute Entity properties with foreign keys */
 @Override
 protected void setCoreProperty(Object core, String name, Object value) {
   if (null == core || null == name) {
     return;
   } else if (null == value) {
     // do nothing in particular, will call super at end
   } else if (COLUMN_NAME_SERIES.equals(name)) {
     // many-to-one: replace foreign entity with its primary key
     DSeries foreign = (DSeries) value;
     value = seriesDao.getPrimaryKey(foreign);
   }
   super.setCoreProperty(core, name, value);
 }