All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.xmlform.impl.DefaultMockerProvider Maven / Gradle / Ivy

There is a newer version: 3.2.1
Show newest version
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