mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-22 21:55:39 +00:00
Finished the construction of the new queries
This commit is contained in:
+25
-2
@@ -1,12 +1,16 @@
|
||||
package com.sap.sailing.datamining.factories;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
|
||||
import com.sap.sailing.datamining.data.HasGPSFixContext;
|
||||
import com.sap.sailing.datamining.data.HasTrackedLegContext;
|
||||
import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext;
|
||||
import com.sap.sailing.datamining.impl.DeprecatedToFunctionConverter;
|
||||
import com.sap.sailing.datamining.impl.components.GPSFixRetrievalProcessor;
|
||||
import com.sap.sailing.datamining.impl.components.LeaderboardGroupRetrievalProcessor;
|
||||
import com.sap.sailing.datamining.impl.components.RegattaLeaderboardFilteringRetrievalProcessor;
|
||||
@@ -21,7 +25,12 @@ import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sse.datamining.components.FilterCriteria;
|
||||
import com.sap.sse.datamining.components.ParallelDataRetriever;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.functions.Function;
|
||||
import com.sap.sse.datamining.impl.DataMiningActivator;
|
||||
import com.sap.sse.datamining.impl.criterias.AndCompoundFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.criterias.CompoundFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.criterias.NonFilteringFilterCriteria;
|
||||
import com.sap.sse.datamining.impl.criterias.NullaryFunctionValuesFilterCriteria;
|
||||
import com.sap.sse.datamining.shared.dto.FunctionDTO;
|
||||
import com.sap.sse.datamining.workers.DataRetrievalWorker;
|
||||
import com.sap.sse.datamining.workers.WorkerBuilder;
|
||||
@@ -76,8 +85,22 @@ public final class DataRetrieverFactory {
|
||||
|
||||
private static <BaseDataType> FilterCriteria<BaseDataType> getFilterCriteriaForBaseDataType(Class<BaseDataType> baseDataType,
|
||||
Map<FunctionDTO, Iterable<?>> filterSelection) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
CompoundFilterCriteria<BaseDataType> criteria = null;
|
||||
for (Entry<FunctionDTO, Iterable<?>> filterSelectionEntry : filterSelection.entrySet()) {
|
||||
Function<?> function = DeprecatedToFunctionConverter.getFunctionFor(filterSelectionEntry.getKey());
|
||||
if (baseDataType.equals(function.getDeclaringType())) {
|
||||
if (criteria == null) {
|
||||
criteria = new AndCompoundFilterCriteria<>();
|
||||
}
|
||||
|
||||
Collection<Object> filterValues = new ArrayList<>();
|
||||
for (Object filterValue : filterSelectionEntry.getValue()) {
|
||||
filterValues.add(filterValue);
|
||||
}
|
||||
criteria.addCriteria(new NullaryFunctionValuesFilterCriteria<BaseDataType>(function, filterValues));
|
||||
}
|
||||
}
|
||||
return criteria != null ? criteria : new NonFilteringFilterCriteria<BaseDataType>();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package com.sap.sse.datamining.shared.annotations;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Target(ElementType.TYPE)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface BaseDataType {
|
||||
|
||||
public String groupKey();
|
||||
|
||||
public int level();
|
||||
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package com.sap.sse.datamining.shared.annotations;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Target(ElementType.TYPE)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface DataRetriever {
|
||||
|
||||
public String groupKey();
|
||||
|
||||
public int level();
|
||||
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.sap.sse.datamining.impl.criterias;
|
||||
|
||||
import com.sap.sse.datamining.components.FilterCriteria;
|
||||
|
||||
public class NonFilteringFilterCriteria<T> implements FilterCriteria<T> {
|
||||
|
||||
@Override
|
||||
public boolean matches(T element) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
+6
-6
@@ -7,21 +7,21 @@ import java.util.Objects;
|
||||
import com.sap.sse.datamining.components.FilterCriteria;
|
||||
import com.sap.sse.datamining.functions.Function;
|
||||
|
||||
public class NullaryFunctionValuesFilterCriteria<DataType, ValueType> implements FilterCriteria<DataType> {
|
||||
public class NullaryFunctionValuesFilterCriteria<DataType> implements FilterCriteria<DataType> {
|
||||
|
||||
private Function<ValueType> function;
|
||||
private Collection<ValueType> valuesToMatch;
|
||||
private Function<?> function;
|
||||
private Collection<?> valuesToMatch;
|
||||
|
||||
public NullaryFunctionValuesFilterCriteria(Function<ValueType> function, Collection<ValueType> valuesToMatch) {
|
||||
public NullaryFunctionValuesFilterCriteria(Function<?> function, Collection<?> valuesToMatch) {
|
||||
this.function = function;
|
||||
this.valuesToMatch = new HashSet<>(valuesToMatch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(DataType dataEntry) {
|
||||
ValueType value = function.tryToInvoke(dataEntry);
|
||||
Object value = function.tryToInvoke(dataEntry);
|
||||
|
||||
for (ValueType valueToMatch : valuesToMatch) {
|
||||
for (Object valueToMatch : valuesToMatch) {
|
||||
if (Objects.equals(value, valueToMatch)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user