mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-02 17:19:37 +00:00
Radically cleaned the server side data mining projects
This commit is contained in:
1 parent
c9fae07ada
commit
225cacad6e
92 files changed
+18
-2962
No files matched your search
-16
@@ -11,11 +11,8 @@ import java.util.Collection;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sse.datamining.components.FilterCriteria;
|
||||
import com.sap.sse.datamining.data.deprecated.ClusterOfComparable;
|
||||
import com.sap.sse.datamining.factories.FunctionFactory;
|
||||
import com.sap.sse.datamining.functions.Function;
|
||||
import com.sap.sse.datamining.impl.criterias.deprecated.SimpleRangeFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.data.deprecated.ClusterOfComparableImpl;
|
||||
import com.sap.sse.datamining.test.functions.test_classes.DataTypeWithContext;
|
||||
import com.sap.sse.datamining.test.functions.test_classes.DataTypeWithContextImpl;
|
||||
import com.sap.sse.datamining.test.util.FunctionTestsUtil;
|
||||
@@ -44,19 +41,6 @@ public class TestFilterCriterias {
|
||||
assertFalse("'Regatta (29ER)' shouldn't be matched", regexFilterCriteria.matches("Regatta (29ER)"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRangeFilterCriteria() {
|
||||
ClusterOfComparable<Integer> cluster = new ClusterOfComparableImpl<Integer>("Test", 3, 1);
|
||||
FilterCriteria<Integer> rangeFilterCriteria = new SimpleRangeFilterCriteria<Integer>(cluster);
|
||||
|
||||
assertTrue(rangeFilterCriteria.matches(1));
|
||||
assertTrue(rangeFilterCriteria.matches(2));
|
||||
assertTrue(rangeFilterCriteria.matches(3));
|
||||
|
||||
assertFalse(rangeFilterCriteria.matches(0));
|
||||
assertFalse(rangeFilterCriteria.matches(4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCompoundFilterCriterias() {
|
||||
StringRegexFilterCriteria startsWithBar = new StringRegexFilterCriteria("Bar.*");
|
||||
|
||||
-144
@@ -1,144 +0,0 @@
|
||||
package com.sap.sse.datamining.impl.workers;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sse.datamining.data.deprecated.Dimension;
|
||||
import com.sap.sse.datamining.impl.data.deprecated.AbstractDimension;
|
||||
import com.sap.sse.datamining.shared.GroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.CompoundGroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.GenericGroupKey;
|
||||
import com.sap.sse.datamining.test.util.OpenDataReceiver;
|
||||
import com.sap.sse.datamining.test.util.OpenGrouper;
|
||||
import com.sap.sse.datamining.workers.GroupingWorker;
|
||||
|
||||
public class TestDimensionGroupers {
|
||||
|
||||
@Test
|
||||
public void testGroupByDimension() {
|
||||
Dimension<Integer, String> crossSum = createCrossSumDimension();
|
||||
GroupingWorker<Integer> groupByDimension = new OpenGrouper<Integer>(Arrays.asList(crossSum));
|
||||
|
||||
OpenDataReceiver<Map<GroupKey, Collection<Integer>>> receiver = new OpenDataReceiver<>();
|
||||
groupByDimension.setReceiver(receiver);
|
||||
|
||||
Collection<Integer> data = Arrays.asList(11, 2, 13, 4, 22, 3, 21, 111);
|
||||
groupByDimension.setDataToGroup(data);
|
||||
|
||||
Map<GroupKey, Collection<Integer>> expectedGroups = new HashMap<GroupKey, Collection<Integer>>();
|
||||
Collection<Integer> group = new ArrayList<Integer>();
|
||||
group.add(11);
|
||||
group.add(2);
|
||||
expectedGroups.put(new GenericGroupKey<String>("2"), group);
|
||||
group = new ArrayList<Integer>();
|
||||
group.add(3);
|
||||
group.add(21);
|
||||
group.add(111);
|
||||
expectedGroups.put(new GenericGroupKey<String>("3"), group);
|
||||
group = new ArrayList<Integer>();
|
||||
group.add(13);
|
||||
group.add(4);
|
||||
group.add(22);
|
||||
expectedGroups.put(new GenericGroupKey<String>("4"), group);
|
||||
|
||||
groupByDimension.run();
|
||||
assertEquals(expectedGroups, receiver.result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGroupKeyGeneration() {
|
||||
Dimension<Integer, String> first = new AbstractDimension<Integer, String>("First") {
|
||||
@Override
|
||||
public String getDimensionValueFrom(Integer data) {
|
||||
return "First";
|
||||
}
|
||||
};
|
||||
Dimension<Integer, String> second = new AbstractDimension<Integer, String>("Second") {
|
||||
@Override
|
||||
public String getDimensionValueFrom(Integer data) {
|
||||
return "Second";
|
||||
}
|
||||
};
|
||||
Dimension<Integer, String> third = new AbstractDimension<Integer, String>("Third") {
|
||||
@Override
|
||||
public String getDimensionValueFrom(Integer data) {
|
||||
return "Third";
|
||||
}
|
||||
};
|
||||
|
||||
OpenGrouper<Integer> grouper = new OpenGrouper<Integer>(Arrays.asList(first, second, third));
|
||||
GroupKey expectedGroupKey = new CompoundGroupKey(new GenericGroupKey<String>("First"), new CompoundGroupKey(new GenericGroupKey<String>("Second"), new GenericGroupKey<String>("Third")));
|
||||
assertEquals(expectedGroupKey, grouper.getGroupKey(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGroupByMultipleDimensions() {
|
||||
Dimension<Integer, String> crossSum = createCrossSumDimension();
|
||||
Dimension<Integer, String> signum = createSignumDimension();
|
||||
GroupingWorker<Integer> groupByDimensions = new OpenGrouper<Integer>(Arrays.asList(crossSum, signum));
|
||||
|
||||
OpenDataReceiver<Map<GroupKey, Collection<Integer>>> receiver = new OpenDataReceiver<>();
|
||||
groupByDimensions.setReceiver(receiver);
|
||||
|
||||
Collection<Integer> data = Arrays.asList(13, -4, 22, -3, 21, -111);
|
||||
groupByDimensions.setDataToGroup(data);
|
||||
|
||||
Map<GroupKey, Collection<Integer>> expectedGroups = new HashMap<GroupKey, Collection<Integer>>();
|
||||
Collection<Integer> expectedGroup = new ArrayList<Integer>();
|
||||
expectedGroup.add(-3);
|
||||
expectedGroup.add(-111);
|
||||
expectedGroups.put(new CompoundGroupKey(new GenericGroupKey<String>("3"), new GenericGroupKey<String>("-1")), expectedGroup);
|
||||
expectedGroup = new ArrayList<Integer>();
|
||||
expectedGroup.add(13);
|
||||
expectedGroup.add(22);
|
||||
expectedGroups.put(new CompoundGroupKey(new GenericGroupKey<String>("4"), new GenericGroupKey<String>("1")), expectedGroup);
|
||||
expectedGroup = new ArrayList<Integer>();
|
||||
expectedGroup.add(21);
|
||||
expectedGroups.put(new CompoundGroupKey(new GenericGroupKey<String>("3"), new GenericGroupKey<String>("1")), expectedGroup);
|
||||
expectedGroup = new ArrayList<Integer>();
|
||||
expectedGroup.add(-4);
|
||||
expectedGroups.put(new CompoundGroupKey(new GenericGroupKey<String>("4"), new GenericGroupKey<String>("-1")), expectedGroup);
|
||||
|
||||
groupByDimensions.run();
|
||||
Map<GroupKey, Collection<Integer>> groups = receiver.result;
|
||||
for (Entry<GroupKey, Collection<Integer>> expectedGroupEntry : expectedGroups.entrySet()) {
|
||||
Collection<Integer> group = groups.get(expectedGroupEntry.getKey());
|
||||
assertNotNull("No group for key: " + expectedGroupEntry.getKey().asString(), group);
|
||||
assertEquals(expectedGroupEntry.getValue(), group);
|
||||
}
|
||||
}
|
||||
|
||||
private Dimension<Integer, String> createCrossSumDimension() {
|
||||
return new AbstractDimension<Integer, String>("Cross Sum") {
|
||||
@Override
|
||||
public String getDimensionValueFrom(Integer data) {
|
||||
int crossSum = 0;
|
||||
int value = Math.abs(data);
|
||||
while (value > 0) {
|
||||
crossSum += value % 10;
|
||||
value /= 10;
|
||||
}
|
||||
return crossSum + "";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private AbstractDimension<Integer, String> createSignumDimension() {
|
||||
return new AbstractDimension<Integer, String>("Signum") {
|
||||
@Override
|
||||
public String getDimensionValueFrom(Integer data) {
|
||||
return ((int) Math.signum(data)) + "";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
-39
@@ -1,39 +0,0 @@
|
||||
package com.sap.sse.datamining.impl.workers;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sse.datamining.shared.GroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.GenericGroupKey;
|
||||
import com.sap.sse.datamining.test.util.OpenDataReceiver;
|
||||
import com.sap.sse.datamining.test.util.StringLengthExtractor;
|
||||
import com.sap.sse.datamining.workers.ExtractionWorker;
|
||||
|
||||
public class TestExtractors {
|
||||
|
||||
@Test
|
||||
public void testAbstractExtractor() {
|
||||
ExtractionWorker<String, Integer> lengthExtractor = new StringLengthExtractor();
|
||||
OpenDataReceiver<Map<GroupKey, Collection<Integer>>> receiver = new OpenDataReceiver<Map<GroupKey, Collection<Integer>>>();
|
||||
lengthExtractor.setReceiver(receiver);
|
||||
|
||||
Collection<String> dataEntries = Arrays.asList("Fu", "Bar", "Blub");
|
||||
Map<GroupKey, Collection<String>> data = new HashMap<GroupKey, Collection<String>>();
|
||||
data.put(new GenericGroupKey<Integer>(100), dataEntries);
|
||||
lengthExtractor.setDataToExtractFrom(data);
|
||||
|
||||
|
||||
Collection<Integer> expectedExtractedDataEntries = Arrays.asList(2, 3, 4);
|
||||
Map<GroupKey, Collection<Integer>> expectedExtractedData = new HashMap<GroupKey, Collection<Integer>>();
|
||||
expectedExtractedData.put(new GenericGroupKey<Integer>(100), expectedExtractedDataEntries);
|
||||
lengthExtractor.run();
|
||||
assertEquals(expectedExtractedData, receiver.result);
|
||||
}
|
||||
|
||||
}
|
||||
-37
@@ -1,37 +0,0 @@
|
||||
package com.sap.sse.datamining.impl.workers;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sse.datamining.components.FilterCriteria;
|
||||
import com.sap.sse.datamining.data.deprecated.ClusterOfComparable;
|
||||
import com.sap.sse.datamining.impl.criterias.deprecated.SimpleRangeFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.data.deprecated.ClusterOfComparableImpl;
|
||||
import com.sap.sse.datamining.test.util.OpenDataReceiver;
|
||||
import com.sap.sse.datamining.workers.FiltrationWorker;
|
||||
|
||||
public class TestFilters {
|
||||
|
||||
@Test
|
||||
public void testFilterByCriteria() {
|
||||
List<Integer> data = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
|
||||
|
||||
ClusterOfComparable<Integer> cluster = new ClusterOfComparableImpl<Integer>("Test", 5, 1);
|
||||
FilterCriteria<Integer> criteria = new SimpleRangeFilterCriteria<Integer>(cluster);
|
||||
FiltrationWorker<Integer> filter = new CriteriaFiltrationWorker<Integer>(criteria);
|
||||
filter.setDataToFilter(data);
|
||||
|
||||
OpenDataReceiver<Collection<Integer>> receiver = new OpenDataReceiver<>();
|
||||
filter.setReceiver(receiver);
|
||||
|
||||
filter.run();
|
||||
Collection<Integer> expectedFilteredData = Arrays.asList(1, 2, 3, 4, 5);
|
||||
assertEquals(expectedFilteredData, receiver.result);
|
||||
}
|
||||
|
||||
}
|
||||
-65
@@ -1,65 +0,0 @@
|
||||
package com.sap.sse.datamining.impl.workers.aggregators;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sse.datamining.impl.workers.aggregators.helpers.SimpleIntegerSumAggregationHelper;
|
||||
import com.sap.sse.datamining.shared.GroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.GenericGroupKey;
|
||||
import com.sap.sse.datamining.test.util.OpenDataReceiver;
|
||||
import com.sap.sse.datamining.workers.AggregationWorker;
|
||||
|
||||
public class TestAggregators {
|
||||
|
||||
@Test
|
||||
public void testSumAggregator() {
|
||||
AggregationWorker<Integer, Integer> sumAggregator = new SumAggregationWorker<Integer, Integer>(new SimpleIntegerSumAggregationHelper());
|
||||
Map<GroupKey, Collection<Integer>> data = asDataToAggregate(1, 7, 6, 3);
|
||||
sumAggregator.setDataToAggregate(data);
|
||||
OpenDataReceiver<Map<GroupKey, Integer>> receiver = new OpenDataReceiver<>();
|
||||
sumAggregator.setReceiver(receiver);
|
||||
|
||||
sumAggregator.run();
|
||||
Map<GroupKey, Integer> expectedAggregation = asAggregatedData(17);
|
||||
assertEquals(expectedAggregation, receiver.result);
|
||||
|
||||
data = asDataToAggregate(7);
|
||||
sumAggregator.setDataToAggregate(data);
|
||||
sumAggregator.run();
|
||||
expectedAggregation = asAggregatedData(7);
|
||||
assertEquals(expectedAggregation, receiver.result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAverageAggregator() {
|
||||
AggregationWorker<Integer, Integer> averageAggregator = new SimpleIntegerArithmeticAverageAggregationWorker();
|
||||
Map<GroupKey, Collection<Integer>> data = asDataToAggregate(1, 7, 6, 3);
|
||||
averageAggregator.setDataToAggregate(data);
|
||||
OpenDataReceiver<Map<GroupKey, Integer>> receiver = new OpenDataReceiver<>();
|
||||
averageAggregator.setReceiver(receiver);
|
||||
|
||||
averageAggregator.run();
|
||||
Map<GroupKey, Integer> expectedAggregation = asAggregatedData(4);
|
||||
assertEquals(expectedAggregation, receiver.result);
|
||||
}
|
||||
|
||||
private Map<GroupKey, Collection<Integer>> asDataToAggregate(Integer... values) {
|
||||
Collection<Integer> dataEntries = Arrays.asList(values);
|
||||
Map<GroupKey, Collection<Integer>> data = new HashMap<GroupKey, Collection<Integer>>();
|
||||
data.put(new GenericGroupKey<Integer>(100), dataEntries);
|
||||
return data;
|
||||
}
|
||||
|
||||
private Map<GroupKey, Integer> asAggregatedData(Integer value) {
|
||||
Map<GroupKey,Integer> data = new HashMap<GroupKey, Integer>();
|
||||
data.put(new GenericGroupKey<Integer>(100), value);
|
||||
return data;
|
||||
}
|
||||
|
||||
}
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
package com.sap.sse.datamining.test.util;
|
||||
|
||||
import com.sap.sse.datamining.workers.WorkReceiver;
|
||||
|
||||
public class OpenDataReceiver<ResultType> implements WorkReceiver<ResultType> {
|
||||
|
||||
public ResultType result;
|
||||
|
||||
@Override
|
||||
public void receiveWork(ResultType result) {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
}
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
package com.sap.sse.datamining.test.util;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sse.datamining.data.deprecated.Dimension;
|
||||
import com.sap.sse.datamining.impl.workers.MultiDimensionalGroupingWorker;
|
||||
import com.sap.sse.datamining.shared.GroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.GenericGroupKey;
|
||||
|
||||
public class OpenGrouper<DataType> extends MultiDimensionalGroupingWorker<DataType, String> {
|
||||
|
||||
public OpenGrouper(Collection<Dimension<DataType, String>> dimensions) {
|
||||
super(dimensions);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GroupKey createGroupKeyFor(DataType dataEntry, Dimension<DataType, String> dimension) {
|
||||
return new GenericGroupKey<String>(dimension.getDimensionValueFrom(dataEntry));
|
||||
}
|
||||
|
||||
public GroupKey getGroupKey(DataType dataEntry) {
|
||||
return getGroupKeyFor(dataEntry);
|
||||
}
|
||||
|
||||
}
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
package com.sap.sse.datamining.test.util;
|
||||
|
||||
import com.sap.sse.datamining.impl.workers.extractors.AbstractExtractionWorker;
|
||||
|
||||
public class StringLengthExtractor extends AbstractExtractionWorker<String, Integer> {
|
||||
|
||||
@Override
|
||||
public Integer extract(String dataEntry) {
|
||||
return dataEntry.length();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user