
net.sf.xmlform.impl.DefaultMockerProvider Maven / Gradle / Ivy
package net.sf.xmlform.impl;
import java.util.Map;
import java.util.Random;
import java.util.function.Supplier;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import net.sf.xmlform.data.FieldValueMockContext;
import net.sf.xmlform.data.FieldValueMocker;
import net.sf.xmlform.data.MockerProvider;
import net.sf.xmlform.form.Field;
import net.sf.xmlform.type.BinaryType;
import net.sf.xmlform.type.BooleanType;
import net.sf.xmlform.type.ByteType;
import net.sf.xmlform.type.DateTimeType;
import net.sf.xmlform.type.DateType;
import net.sf.xmlform.type.DecimalType;
import net.sf.xmlform.type.DoubleType;
import net.sf.xmlform.type.FloatType;
import net.sf.xmlform.type.IntType;
import net.sf.xmlform.type.IntegerType;
import net.sf.xmlform.type.LongType;
import net.sf.xmlform.type.ShortType;
import net.sf.xmlform.type.StringType;
import net.sf.xmlform.type.TimeType;
import net.sf.xmlform.type.YearMonthType;
public class DefaultMockerProvider implements MockerProvider {
private Map fieldValueMockers=new HashMap();
public DefaultMockerProvider() {
addTypeProvider(BooleanType.NAME,()->true);
addTypeProvider(BinaryType.NAME,()->null);
addTypeProvider(ByteType.NAME,()->Integer.valueOf(new Random().nextInt(127)).byteValue());
addTypeProvider(DateTimeType.NAME,()->LocalDateTime.now());
addTypeProvider(DateType.NAME,()->LocalDate.now());
addTypeProvider(DecimalType.NAME,()->new BigDecimal(new Random().nextInt(1000)));
addTypeProvider(DoubleType.NAME,()->new Random().nextDouble()*1000);
addTypeProvider(FloatType.NAME,()->new Random().nextFloat()*100);
addTypeProvider(IntegerType.NAME,()->new Random().nextInt(1000));
addTypeProvider(IntType.NAME,()->new Random().nextInt(1000));
addTypeProvider(LongType.NAME,()->new Random().nextLong());
addTypeProvider(ShortType.NAME,()->Integer.valueOf(new Random().nextInt(127)).shortValue());
addTypeProvider(TimeType.NAME,()->LocalTime.now());
DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyy-MM");
addTypeProvider(YearMonthType.NAME,()->LocalDate.now().format(formatter));
FieldValueMocker stringMocker=new FieldValueMocker() {
@Override
public String getName() {
return StringType.NAME;
}
@Override
public Object mockValue(FieldValueMockContext context) {
Field field=context.getField();
return field.getLabel()!=null?field.getLabel():field.getName();
}
};
fieldValueMockers.put(StringType.NAME,stringMocker);
}
public void addFieldValueMockers(Map mockers) {
synchronized(fieldValueMockers) {
fieldValueMockers.putAll(mockers);
}
}
public void addFieldValueMockers(List mockers) {
synchronized(fieldValueMockers) {
mockers.forEach(mocker->{
fieldValueMockers.put(mocker.getName(), mocker);
});
}
}
@Override
public FieldValueMocker getFieldValueMocker(String name) {
return fieldValueMockers.get(name);
}
private void addTypeProvider(String type,Supplier supplier) {
FieldValueMocker mokcer=new FieldValueMocker() {
@Override
public String getName() {
return type;
}
@Override
public Object mockValue(FieldValueMockContext context) {
return supplier.get();
}
};
fieldValueMockers.put(type,mokcer);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy