mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-07 21:01:03 +00:00
Created stubs to get the function for a function dto
This commit is contained in:
1 parent
ee2f25b23a
commit
1202a0469f
4 files changed
+54
-8
No files matched your search
+19
@@ -6,15 +6,18 @@ import static org.junit.Assert.assertThat;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.datamining.DataMiningStringMessages;
|
||||
import com.sap.sailing.datamining.factories.FunctionFactory;
|
||||
import com.sap.sailing.datamining.function.Function;
|
||||
import com.sap.sailing.datamining.function.FunctionProvider;
|
||||
import com.sap.sailing.datamining.function.FunctionRegistry;
|
||||
import com.sap.sailing.datamining.function.ParallelFunctionRetriever;
|
||||
import com.sap.sailing.datamining.shared.dto.FunctionDTO;
|
||||
import com.sap.sailing.datamining.test.function.test_classes.DataTypeWithContext;
|
||||
import com.sap.sailing.datamining.test.function.test_classes.DataTypeWithContextImpl;
|
||||
import com.sap.sailing.datamining.test.function.test_classes.DataTypeWithContextProcessor;
|
||||
@@ -22,9 +25,12 @@ import com.sap.sailing.datamining.test.function.test_classes.ExtendingInterface;
|
||||
import com.sap.sailing.datamining.test.function.test_classes.ExternalLibraryClass;
|
||||
import com.sap.sailing.datamining.test.function.test_classes.SimpleClassWithMarkedMethods;
|
||||
import com.sap.sailing.datamining.test.util.FunctionTestsUtil;
|
||||
import com.sap.sailing.datamining.test.util.StringMessagesForTests;
|
||||
|
||||
public class TestFunctionProvider {
|
||||
|
||||
private static final DataMiningStringMessages stringMessages = new StringMessagesForTests();
|
||||
|
||||
private FunctionRegistry functionRegistry;
|
||||
|
||||
@Before
|
||||
@@ -75,5 +81,18 @@ public class TestFunctionProvider {
|
||||
providedFunctions = new HashSet<>(functionProvider.getFunctionsFor(DataTypeWithContextImpl.class));
|
||||
assertThat(providedFunctions, is(expectedFunctions));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetFunctionForDTO() {
|
||||
Method getRegattaNameMethod = FunctionTestsUtil.getMethodFromClass(DataTypeWithContext.class, "getRegattaName");
|
||||
Function<Object> getRegattaName = FunctionFactory.createMethodWrappingFunction(getRegattaNameMethod);
|
||||
FunctionDTO getRegattaNameDTO = getRegattaName.asDTO(Locale.ENGLISH, stringMessages);
|
||||
|
||||
FunctionProvider functionProvider = new RegistryFunctionsProvider(functionRegistry);
|
||||
|
||||
@SuppressWarnings("unchecked") // Hamcrest requires type matching of actual and expected, so the Functions have to be specific (without <?>)
|
||||
Function<Object> providedFunction = (Function<Object>) functionProvider.getFunctionFor(getRegattaNameDTO);
|
||||
assertThat(providedFunction, is(getRegattaName));
|
||||
}
|
||||
|
||||
}
|
||||
+4
@@ -2,10 +2,14 @@ package com.sap.sailing.datamining.function;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sailing.datamining.shared.dto.FunctionDTO;
|
||||
|
||||
public interface FunctionProvider {
|
||||
|
||||
public Collection<Function<?>> getDimenionsFor(Class<?> dataType);
|
||||
|
||||
public Collection<Function<?>> getFunctionsFor(Class<?> sourceType);
|
||||
|
||||
public Function<?> getFunctionFor(FunctionDTO functionDTO);
|
||||
|
||||
}
|
||||
+14
-1
@@ -120,7 +120,20 @@ public class MethodWrappingFunction<ReturnType> extends AbstractFunction<ReturnT
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getDeclaringClass().getSimpleName() + "." + getMethodName();
|
||||
return getDeclaringClass().getSimpleName() + "." + getMethodName() + "(" + parametersAsString() + ") : " + method.getReturnType().getSimpleName();
|
||||
}
|
||||
|
||||
private String parametersAsString() {
|
||||
StringBuilder parameterBuilder = new StringBuilder();
|
||||
boolean first = true;
|
||||
for (Class<?> parameterType : getParameters()) {
|
||||
if (!first) {
|
||||
parameterBuilder.append(", ");
|
||||
}
|
||||
parameterBuilder.append(parameterType.getSimpleName());
|
||||
first = false;
|
||||
}
|
||||
return parameterBuilder.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+17
-7
@@ -7,7 +7,6 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.datamining.ConcurrentFilterCriteria;
|
||||
import com.sap.sailing.datamining.DataMiningFactory;
|
||||
import com.sap.sailing.datamining.FiltrationWorker;
|
||||
import com.sap.sailing.datamining.ParallelFilter;
|
||||
import com.sap.sailing.datamining.WorkerBuilder;
|
||||
@@ -15,7 +14,9 @@ import com.sap.sailing.datamining.builders.FilterByCriteriaBuilder;
|
||||
import com.sap.sailing.datamining.function.Function;
|
||||
import com.sap.sailing.datamining.function.FunctionProvider;
|
||||
import com.sap.sailing.datamining.function.FunctionRegistry;
|
||||
import com.sap.sailing.datamining.impl.Activator;
|
||||
import com.sap.sailing.datamining.impl.PartitioningParallelFilter;
|
||||
import com.sap.sailing.datamining.shared.dto.FunctionDTO;
|
||||
|
||||
public class RegistryFunctionsProvider implements FunctionProvider {
|
||||
|
||||
@@ -39,7 +40,8 @@ public class RegistryFunctionsProvider implements FunctionProvider {
|
||||
|
||||
private Collection<Function<?>> filterForSourceType(Collection<Function<?>> functions, Class<?> sourceType) {
|
||||
Collection<Function<?>> dimensionsForType = new HashSet<>();
|
||||
ParallelFilter<Function<?>> dimensionForTypeFilter = createFilterForSourceTypeFilter(sourceType);
|
||||
ConcurrentFilterCriteria<Function<?>> sourceTypeFilterCriteria = createSourceTypeFilterCriteria(sourceType);
|
||||
ParallelFilter<Function<?>> dimensionForTypeFilter = createFilterForSourceTypeFilter(sourceTypeFilterCriteria);
|
||||
|
||||
try {
|
||||
dimensionsForType = dimensionForTypeFilter.start(functions).get();
|
||||
@@ -50,11 +52,19 @@ public class RegistryFunctionsProvider implements FunctionProvider {
|
||||
return dimensionsForType;
|
||||
}
|
||||
|
||||
private ParallelFilter<Function<?>> createFilterForSourceTypeFilter(Class<?> sourceType) {
|
||||
ConcurrentFilterCriteria<Function<?>> declaringTypeOrParameterTypeCriteria = new DeclaringTypeOrParameterTypeCriteria(sourceType);
|
||||
WorkerBuilder<FiltrationWorker<Function<?>>> workerBuilder = new FilterByCriteriaBuilder<Function<?>>(declaringTypeOrParameterTypeCriteria);
|
||||
ParallelFilter<Function<?>> dimensionForTypeFilter = new PartitioningParallelFilter<>(workerBuilder, DataMiningFactory.getExecutor());
|
||||
return dimensionForTypeFilter;
|
||||
private ConcurrentFilterCriteria<Function<?>> createSourceTypeFilterCriteria(Class<?> sourceType) {
|
||||
return new DeclaringTypeOrParameterTypeCriteria(sourceType);
|
||||
}
|
||||
|
||||
private ParallelFilter<Function<?>> createFilterForSourceTypeFilter(ConcurrentFilterCriteria<Function<?>> filterCriteria) {
|
||||
WorkerBuilder<FiltrationWorker<Function<?>>> workerBuilder = new FilterByCriteriaBuilder<Function<?>>(filterCriteria);
|
||||
return new PartitioningParallelFilter<>(workerBuilder, Activator.getExecutor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Function<?> getFunctionFor(FunctionDTO functionDTO) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user