package org.finra.datagenerator.scaffolding.transformer.service; import com.google.common.collect.ImmutableMap; import org.finra.datagenerator.scaffolding.transformer.service.transformations.TransformationsImpl; import org.finra.datagenerator.scaffolding.utils.ClassUtils; import java.lang.reflect.Method; import java.util.*; import java.util.function.Function; /** * Created by dkopel on 9/30/16. */ public interface TransformerService { TransformationSessionType defaultSessionType = TransformationSessionType.MERGE; Map<String, Method> defaultContextMethods = ImmutableMap.<String, Method>builder() .put("asList", ClassUtils.getMethod(Arrays.class, "asList", new Class[] { Object[].class })) .build(); void registerTransformations(Set<TransformationsImpl> transformations); void registerContextFunction(String methodName, Method method); default List<TransformationContainer> transform(List<TransformationContainer> containers) { return transform(containers, defaultSessionType); } <T> Collection<T> filterData(Collection<T> data, Function<T, Boolean> filter); List<TransformationContainer> transform(List<TransformationContainer> container, TransformationSessionType sessionType); List<TransformationContainer> transform(TransformationContext tContext); void setGlobal(String key, Object value); void setGlobals(Map<String, Object> value); Object lookupGlobal(String key); Map<String, Object> getGlobals(); String toString(Object obj); }