/*******************************************************************************
* Copyright 2017 Capital One Services, LLC and Bitwise, Inc.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License
*******************************************************************************/
package hydrograph.engine.cascading.tuplegenerator;
import java.math.BigDecimal;
@SuppressWarnings("rawtypes")
public enum FieldTypeEnum implements FieldType {
STRING(new FieldType() {
@SuppressWarnings("deprecation")
@Override
public Object getFieldValue(FieldEntity fieldEntity) {
String value;
if (fieldEntity.getDefaultValue() != null) {
value = DataGenerator.getDefaultString(fieldEntity
.getDefaultValue());
} else if (fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getRandomString(fieldEntity
.getFieldLength());
} else {
value = DataGenerator.getRandomString();
}
return value;
}
}),
INTEGER(new FieldType() {
@SuppressWarnings("deprecation")
@Override
public Object getFieldValue(FieldEntity fieldEntity) {
int value;
if (fieldEntity.getDefaultValue() != null) {
value = DataGenerator.getDefaultInteger(Integer
.parseInt(fieldEntity.getDefaultValue()));
} else if (fieldEntity.getRangeFromValue() != null
&& fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getIntegerBetween(
Integer.parseInt(fieldEntity.getRangeFromValue()),
Integer.parseInt(fieldEntity.getRangeToValue()));
} else if (fieldEntity.getRangeFromValue() != null && fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getIntegerBetween(
Integer.parseInt(fieldEntity.getRangeFromValue()),
(int) (Math.pow(10, fieldEntity.getFieldLength()) - 1));
} else if (fieldEntity.getRangeFromValue() != null) {
value = DataGenerator.getFromInteger(Integer.parseInt(fieldEntity
.getRangeFromValue()));
} else if (fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getToInteger(Integer
.parseInt(fieldEntity.getRangeToValue()));
} else if (fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getRandomInteger(fieldEntity
.getFieldLength());
} else {
value = DataGenerator.getRandomInteger();
}
return value;
}
}),
BIGDECIMAL(new FieldType() {
@Override
public Object getFieldValue(FieldEntity fieldEntity) {
BigDecimal value;
if (fieldEntity.getDefaultValue() != null) {
value = DataGenerator.getDefaultBigDecimal(new BigDecimal(
fieldEntity.getDefaultValue()), fieldEntity
.getFieldScale());
} else if (fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getRandomBigDecimal(
fieldEntity.getFieldScale(),
fieldEntity.getFieldLength());
} else if (fieldEntity.getRangeFromValue() != null
&& fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getBigDecimalBetween(new BigDecimal(
fieldEntity.getRangeFromValue()), new BigDecimal(
fieldEntity.getRangeToValue()), fieldEntity
.getFieldScale());
} else if (fieldEntity.getRangeFromValue() != null) {
value = DataGenerator.getFromBigDecimal(new BigDecimal(
fieldEntity.getRangeFromValue()), fieldEntity
.getFieldScale());
} else if (fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getToBigDecimal(new BigDecimal(
fieldEntity.getRangeToValue()), fieldEntity
.getFieldScale());
} else {
value = DataGenerator.getRandomBigDecimal(fieldEntity
.getFieldScale());
}
return value;
}
}),
DATE(new FieldType() {
@Override
public Object getFieldValue(FieldEntity fieldEntity) {
long value;
if (fieldEntity.getDefaultValue() != null) {
value = DataGenerator.getDefaultLongDate(
fieldEntity.getFieldFormat(),
fieldEntity.getDefaultValue());
} else if (fieldEntity.getRangeFromValue() != null
&& fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getLongDateBetween(
fieldEntity.getFieldFormat(),
fieldEntity.getRangeFromValue(),
fieldEntity.getRangeToValue());
} else if (fieldEntity.getRangeFromValue() != null) {
value = DataGenerator.getFromLongDate(
fieldEntity.getFieldFormat(),
fieldEntity.getRangeFromValue());
} else if (fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getToLongDate(
fieldEntity.getFieldFormat(),
fieldEntity.getRangeToValue());
} else {
value = DataGenerator.getRandomLongDate(fieldEntity
.getFieldFormat());
}
return value;
}
}),
//TODO: UPDATE THE FOLLOWING FIELD TYPES
FLOAT(new FieldType() {
@SuppressWarnings("deprecation")
@Override
public Object getFieldValue(FieldEntity fieldEntity) {
float value;
if (fieldEntity.getDefaultValue() != null) {
value = DataGenerator.getDefaultFloat(Float
.parseFloat(fieldEntity.getDefaultValue()));
} else if (fieldEntity.getRangeFromValue() != null
&& fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getFloatBetween(
Float.parseFloat(fieldEntity.getRangeFromValue()),
Float.parseFloat(fieldEntity.getRangeToValue()));
} else if (fieldEntity.getRangeFromValue() != null && fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getFloatBetween(
Float.parseFloat(fieldEntity.getRangeFromValue()),
(float) (Math.pow(10, fieldEntity.getFieldLength()) - 1));
} else if (fieldEntity.getRangeFromValue() != null) {
value = DataGenerator.getFromFloat(Float.parseFloat(fieldEntity
.getRangeFromValue()));
} else if (fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getToFloat(Float
.parseFloat(fieldEntity.getRangeToValue()));
} else if (fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getRandomFloat(fieldEntity
.getFieldLength());
} else {
value = DataGenerator.getRandomFloat();
}
return value;
}
}),
SHORT(new FieldType() {
@SuppressWarnings("deprecation")
@Override
public Object getFieldValue(FieldEntity fieldEntity) {
short value;
if (fieldEntity.getDefaultValue() != null) {
value = DataGenerator.getDefaultShort(Short
.parseShort(fieldEntity.getDefaultValue()));
} else if (fieldEntity.getRangeFromValue() != null
&& fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getShortBetween(
Short.parseShort(fieldEntity.getRangeFromValue()),
Short.parseShort(fieldEntity.getRangeToValue()));
} else if (fieldEntity.getRangeFromValue() != null && fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getShortBetween(
Short.parseShort(fieldEntity.getRangeFromValue()),
(short) (Math.pow(10, fieldEntity.getFieldLength()) - 1));
} else if (fieldEntity.getRangeFromValue() != null) {
value = DataGenerator.getFromShort(Short.parseShort(fieldEntity
.getRangeFromValue()));
} else if (fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getToShort(Short
.parseShort(fieldEntity.getRangeToValue()));
} else if (fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getRandomShort(fieldEntity
.getFieldLength());
} else {
value = DataGenerator.getRandomShort();
}
return value;
}
}),
LONG(new FieldType() {
@SuppressWarnings("deprecation")
@Override
public Object getFieldValue(FieldEntity fieldEntity) {
long value;
if (fieldEntity.getDefaultValue() != null) {
value = DataGenerator.getDefaultLong(Long
.parseLong(fieldEntity.getDefaultValue()));
} else if (fieldEntity.getRangeFromValue() != null
&& fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getLongBetween(
Long.parseLong(fieldEntity.getRangeFromValue()),
Long.parseLong(fieldEntity.getRangeToValue()));
} else if (fieldEntity.getRangeFromValue() != null && fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getLongBetween(
Long.parseLong(fieldEntity.getRangeFromValue()),
(long) (Math.pow(10, fieldEntity.getFieldLength()) - 1));
} else if (fieldEntity.getRangeFromValue() != null) {
value = DataGenerator.getFromLong(Long.parseLong(fieldEntity
.getRangeFromValue()));
} else if (fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getToLong(Long
.parseLong(fieldEntity.getRangeToValue()));
} else if (fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getRandomLong(fieldEntity
.getFieldLength());
} else {
value = DataGenerator.getRandomLong();
}
return value;
}
}),
DOUBLE(new FieldType() {
@SuppressWarnings("deprecation")
@Override
public Object getFieldValue(FieldEntity fieldEntity) {
double value;
if (fieldEntity.getDefaultValue() != null) {
value = DataGenerator.getDefaultDouble(Double
.parseDouble(fieldEntity.getDefaultValue()));
} else if (fieldEntity.getRangeFromValue() != null
&& fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getDoubleBetween(
Double.parseDouble(fieldEntity.getRangeFromValue()),
Double.parseDouble(fieldEntity.getRangeToValue()));
} else if (fieldEntity.getRangeFromValue() != null && fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getDoubleBetween(
Double.parseDouble(fieldEntity.getRangeFromValue()),
(double) (Math.pow(10, fieldEntity.getFieldLength()) - 1));
} else if (fieldEntity.getRangeFromValue() != null) {
value = DataGenerator.getFromDouble(Double.parseDouble(fieldEntity
.getRangeFromValue()));
} else if (fieldEntity.getRangeToValue() != null) {
value = DataGenerator.getToDouble(Double
.parseDouble(fieldEntity.getRangeToValue()));
} else if (fieldEntity.getFieldLength() != 0) {
value = DataGenerator.getRandomDouble(fieldEntity
.getFieldLength());
} else {
value = DataGenerator.getRandomDouble();
}
return value;
}
}),
BOOLEAN(new FieldType() {
@SuppressWarnings("deprecation")
@Override
public Object getFieldValue(FieldEntity fieldEntity) {
boolean value;
if (fieldEntity.getDefaultValue() != null) {
value = DataGenerator.getDefaultBoolean(Boolean
.parseBoolean(fieldEntity.getDefaultValue()));
} else {
value = DataGenerator.getRandomBoolean();
}
return value;
}
});
private FieldType fieldType;
private FieldTypeEnum(FieldType ft) {
fieldType = ft;
}
@Override
public Object getFieldValue(FieldEntity fieldEntity) {
return fieldType.getFieldValue(fieldEntity);
}
}