Radically cleaned the server side data mining projects

This commit is contained in:
Lennart Hensler committed 2014-06-05 11:33:07 +02:00
1 parent c9fae07ada
commit 225cacad6e
92 files changed
+18 -2962

No files matched your search

@@ -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.*");
@@ -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)) + "";
}
};
}
}
@@ -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);
}
}
@@ -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);
}
}
@@ -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;
}
}
@@ -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;
}
}
@@ -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);
}
}
@@ -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();
}
}