protected void initializeTimeStamps() {
   Field timeStampField = fieldMap.get(TIMESTAMP);
   startTimestamp = Long.valueOf(timeStampField.getMinValue());
   endTimestamp = Long.valueOf(timeStampField.getMaxValue());
   stepValue = Long.valueOf(timeStampField.getStepValue());
   populateTimestampsForSplits();
 }
  @Override
  public TYPE randomValue(Field<TYPE> field) {
    TYPE value = null;
    if (field.getConstantValue() != null) {
      value = valueFromString(field.getConstantValue());
      return value;
    }

    if (field.getRange() != null) {
      List<TYPE> values = (List<TYPE>) Arrays.asList(field.getRange().split(","));
      value = randomValueFromRange(values);
      return value;
    }

    // If min max values are specified they take precedence over length
    if (field.getMinValue() != null && field.getMaxValue() != null) {
      TYPE minValue = valueFromString(field.getMinValue());
      TYPE maxValue = valueFromString(field.getMaxValue());
      value = randomValueFromRange(minValue, maxValue);
      return value;
    }

    long minLength = field.getMinLength() != 0 ? field.getMinLength() : field.getFixedLength();
    long maxLength = field.getMaxLength() != 0 ? field.getMaxLength() : field.getFixedLength();

    if (field.getPrefix() != null) {
      value = randomValueWithPrefix(minLength, maxLength, field.getPrefix());
      return value;
    }

    if (field.getSuffix() != null) {
      value = randomValueWithSuffix(minLength, maxLength, field.getSuffix());
      return value;
    }

    value = randomValue(minLength, maxLength);
    return value;
  }