// --------------------------------------------------------------------------
  public DataPoint setMetricRef(Metric table) {
    // We add the record to the transaction if one of the key values change
    if (m_metricId.setValue(table.getId())) {
      if ((m_dirtyFlags.isEmpty()) && (GenOrmDataSource.getGenOrmConnection() != null))
        GenOrmDataSource.getGenOrmConnection().addToTransaction(this);

      m_dirtyFlags.set(METRIC_ID_FIELD_META.getDirtyFlag());
    }

    return ((DataPoint) this);
  }
    /**
     * Find the record with the specified primary keys
     *
     * @return DataPoint or null if no record is found
     */
    public DataPoint find(int id) {
      DataPoint rec = new DataPoint();

      // Create temp object and look in cache for it
      ((DataPoint_base) rec).initialize(id);
      rec = (DataPoint) GenOrmDataSource.getGenOrmConnection().getCachedRecord(rec.getRecordKey());

      java.sql.PreparedStatement genorm_statement = null;
      java.sql.ResultSet genorm_rs = null;

      if (rec == null) {
        try {
          // No cached object so look in db
          genorm_statement = GenOrmDataSource.prepareStatement(SELECT + FROM + KEY_WHERE);
          genorm_statement.setInt(1, id);

          s_logger.debug(genorm_statement.toString());

          genorm_rs = genorm_statement.executeQuery();
          if (genorm_rs.next()) rec = newDataPoint(genorm_rs);
        } catch (java.sql.SQLException sqle) {
          throw new GenOrmException(sqle);
        } finally {
          try {
            if (genorm_rs != null) genorm_rs.close();

            if (genorm_statement != null) genorm_statement.close();
          } catch (java.sql.SQLException sqle2) {
            throw new GenOrmException(sqle2);
          }
        }
      }

      return (rec);
    }
    /** Creates a new entry with the specified primary keys. */
    public DataPoint create(int id) {
      DataPoint rec = new DataPoint();
      rec.m_isNewRecord = true;

      ((DataPoint_base) rec).setId(id);

      return ((DataPoint) GenOrmDataSource.getGenOrmConnection().getUniqueRecord(rec));
    }
  public DataPoint setDoubleValueNull() {
    boolean changed = m_doubleValue.setNull();

    if (changed) {
      if (m_dirtyFlags.isEmpty()) GenOrmDataSource.getGenOrmConnection().addToTransaction(this);

      m_dirtyFlags.set(DOUBLE_VALUE_FIELD_META.getDirtyFlag());
    }

    return ((DataPoint) this);
  }
  public DataPoint setTimestampNull() {
    boolean changed = m_timestamp.setNull();

    if (changed) {
      if (m_dirtyFlags.isEmpty()) GenOrmDataSource.getGenOrmConnection().addToTransaction(this);

      m_dirtyFlags.set(TIMESTAMP_FIELD_META.getDirtyFlag());
    }

    return ((DataPoint) this);
  }
  public DataPoint setMetricIdNull() {
    boolean changed = m_metricId.setNull();

    if (changed) {
      if (m_dirtyFlags.isEmpty()) GenOrmDataSource.getGenOrmConnection().addToTransaction(this);

      m_dirtyFlags.set(METRIC_ID_FIELD_META.getDirtyFlag());
    }

    return ((DataPoint) this);
  }
    /**
     * If the table has a primary key that has a key generator this method will return a new table
     * entry with a generated primary key.
     *
     * @return DataPoint with generated primary key
     */
    public DataPoint createWithGeneratedKey() {
      DataPoint rec = new DataPoint();

      rec.m_isNewRecord = true;

      GenOrmKeyGenerator keyGen = GenOrmDataSource.getKeyGenerator("data_point");
      if (keyGen != null) {
        rec.setId((Integer) keyGen.generateKey());
      }

      return ((DataPoint) GenOrmDataSource.getGenOrmConnection().getUniqueRecord(rec));
    }
  public DataPoint setDoubleValue(double data) {
    boolean changed = m_doubleValue.setValue(data);

    // Add the now dirty record to the transaction only if it is not previously dirty
    if (changed) {
      if (m_dirtyFlags.isEmpty()) GenOrmDataSource.getGenOrmConnection().addToTransaction(this);

      m_dirtyFlags.set(DOUBLE_VALUE_FIELD_META.getDirtyFlag());

      if (m_isNewRecord) // Force set the prev value
      m_doubleValue.setPrevValue(data);
    }

    return ((DataPoint) this);
  }
  public DataPoint setTimestamp(java.sql.Timestamp data) {
    boolean changed = m_timestamp.setValue(data);

    // Add the now dirty record to the transaction only if it is not previously dirty
    if (changed) {
      if (m_dirtyFlags.isEmpty()) GenOrmDataSource.getGenOrmConnection().addToTransaction(this);

      m_dirtyFlags.set(TIMESTAMP_FIELD_META.getDirtyFlag());

      if (m_isNewRecord) // Force set the prev value
      m_timestamp.setPrevValue(data);
    }

    return ((DataPoint) this);
  }
    /**
     * Deletes the record with the specified primary keys. The point of this api is to prevent a hit
     * on the db to see if the record is there. This call will add a record to the next transaction
     * that is marked for delete.
     *
     * @return Returns true if the record was previous created and existed either in the transaction
     *     cache or the db.
     */
    public boolean delete(int id) {
      boolean ret = false;
      DataPoint rec = new DataPoint();

      ((DataPoint_base) rec).initialize(id);
      GenOrmConnection con = GenOrmDataSource.getGenOrmConnection();
      DataPoint cachedRec = (DataPoint) con.getCachedRecord(rec.getRecordKey());

      if (cachedRec != null) {
        ret = true;
        cachedRec.delete();
      } else {
        rec = (DataPoint) con.getUniqueRecord(rec); // This adds the record to the cache
        rec.delete();
        ret = rec.flush();
        rec.setIgnored(true); // So the system does not try to delete it again at commmit
      }

      return (ret);
    }
 // ---------------------------------------------------------------------------
 @Override
 public GenOrmConnection getGenOrmConnection() {
   return (GenOrmDataSource.getGenOrmConnection());
 }
    /** Creates a new entry that is empty */
    public DataPoint createRecord() {
      DataPoint rec = new DataPoint();
      rec.m_isNewRecord = true;

      return ((DataPoint) GenOrmDataSource.getGenOrmConnection().getUniqueRecord(rec));
    }
 protected DataPoint newDataPoint(java.sql.ResultSet rs) {
   DataPoint rec = new DataPoint();
   ((DataPoint_base) rec).initialize(rs);
   return ((DataPoint) GenOrmDataSource.getGenOrmConnection().getUniqueRecord(rec));
 }