package br.com.six2six.fixturefactory.function.impl;
import br.com.six2six.bfgex.Gender;
import br.com.six2six.bfgex.RandomGen;
import br.com.six2six.fixturefactory.function.AtomicFunction;
public class NameFunction implements AtomicFunction {
private Gender gender;
private NameType type;
public NameFunction() { }
public NameFunction(Gender gender) {
this.gender = gender;
}
public NameFunction(NameType type) {
this.type = type;
}
public NameFunction(NameType type, Gender gender) {
this(type);
this.gender = gender;
}
@Override
@SuppressWarnings("unchecked")
public <T> T generateValue() {
Object value = null;
if (this.type != null && type == NameType.FIRST) {
value = this.gender != null ? RandomGen.firstName(this.gender) : RandomGen.firstName();
} else if (this.type != null && type == NameType.LAST) {
value = RandomGen.lastName();
} else if (this.gender != null) {
value = RandomGen.name(this.gender);
} else {
value = RandomGen.name();
}
return (T) value;
}
public enum NameType {
FIRST, LAST
}
}