mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-13 22:15:26 +00:00
Using DataRetrieverLevel(DTO) instead of a simple int everywhere
This commit is contained in:
1 parent
8fabab0436
commit
e680df0d12
27 files changed
+146
-101
No files matched your search
+1
-1
@@ -1342,4 +1342,4 @@ cantDisplayDataOfType=Can''t display data of type {0}
|
||||
shownDecimals=Shown Decimals
|
||||
openFullscreenView=Open fullscreen view
|
||||
closeFullscreenView=Close fullscreen view
|
||||
analyse=Analyze
|
||||
analyze=Analyze
|
||||
+1
-1
@@ -1331,4 +1331,4 @@ cantDisplayDataOfType=Daten des Typs {0} können nicht dargestellt werden
|
||||
shownDecimals=Angezeigte Nachkommastellen
|
||||
openFullscreenView=Vollbildansicht öffnen
|
||||
closeFullscreenView=Vollbildansicht schließen
|
||||
analyse=Untersuche
|
||||
analyze=Untersuche
|
||||
+1
-1
@@ -1281,4 +1281,4 @@ cantDisplayDataOfType=Can''t display data of type {0}
|
||||
shownDecimals=Shown Decimals
|
||||
openFullscreenView=Open fullscreen view
|
||||
closeFullscreenView=Close fullscreen view
|
||||
analyse=Analyze
|
||||
analyze=Analyze
|
||||
+2
-2
@@ -34,8 +34,8 @@ public interface DataMiningService extends RemoteService {
|
||||
ArrayList<DataRetrieverChainDefinitionDTO> getDataRetrieverChainDefinitions(String localeName);
|
||||
ArrayList<DataRetrieverChainDefinitionDTO> getDataRetrieverChainDefinitionsFor(FunctionDTO statisticToCalculate, String localeInfoName);
|
||||
|
||||
QueryResultDTO<HashSet<Object>> getDimensionValuesFor(DataMiningSession session, DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, int retrieverLevel,
|
||||
HashSet<FunctionDTO> dimensionDTOs, HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionDTO, String localeInfoName);
|
||||
QueryResultDTO<HashSet<Object>> getDimensionValuesFor(DataMiningSession session, DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, DataRetrieverLevelDTO retrieverLevel,
|
||||
HashSet<FunctionDTO> dimensionDTOs, HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionDTO, String localeInfoName);
|
||||
|
||||
<ResultType> QueryResultDTO<ResultType> runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition);
|
||||
|
||||
|
||||
+2
-2
@@ -38,8 +38,8 @@ public interface DataMiningServiceAsync {
|
||||
void getDataRetrieverChainDefinitionsFor(FunctionDTO statisticToCalculate, String localeInfoName,
|
||||
AsyncCallback<ArrayList<DataRetrieverChainDefinitionDTO>> callback);
|
||||
|
||||
void getDimensionValuesFor(DataMiningSession session, DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, int retrieverLevel,
|
||||
HashSet<FunctionDTO> dimensionDTOs, HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionDTO,
|
||||
void getDimensionValuesFor(DataMiningSession session, DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, DataRetrieverLevelDTO retrieverLevel,
|
||||
HashSet<FunctionDTO> dimensionDTOs, HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionDTO,
|
||||
String localeInfoName, AsyncCallback<QueryResultDTO<HashSet<Object>>> callback);
|
||||
|
||||
<ResultType> void runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition, AsyncCallback<QueryResultDTO<ResultType>> callback);
|
||||
|
||||
+2
-1
@@ -5,13 +5,14 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
||||
import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.FunctionDTO;
|
||||
|
||||
public interface FilterSelectionProvider extends DataMiningComponentProvider, DataRetrieverChainDefinitionChangedListener {
|
||||
|
||||
public void addSelectionChangedListener(FilterSelectionChangedListener listener);
|
||||
|
||||
public HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> getSelection();
|
||||
public HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> getSelection();
|
||||
|
||||
public void applySelection(StatisticQueryDefinitionDTO queryDefinition);
|
||||
|
||||
|
||||
+4
-5
@@ -65,13 +65,12 @@ public class PlainFilterSelectionPresenter implements FilterSelectionPresenter,
|
||||
public void selectionChanged() {
|
||||
presentationPanel.clear();
|
||||
|
||||
Map<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> selection = filterSelectionProvider.getSelection();
|
||||
List<Integer> sortedLevels = new ArrayList<>(selection.keySet());
|
||||
Map<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> selection = filterSelectionProvider.getSelection();
|
||||
List<DataRetrieverLevelDTO> sortedLevels = new ArrayList<>(selection.keySet());
|
||||
Collections.sort(sortedLevels);
|
||||
boolean first = true;
|
||||
for (Integer levelIndex : sortedLevels) {
|
||||
Map<FunctionDTO, HashSet<? extends Serializable>> levelSelection = selection.get(levelIndex);
|
||||
DataRetrieverLevelDTO retrieverLevel = retrieverChain.getRetrieverLevel(levelIndex);
|
||||
for (DataRetrieverLevelDTO retrieverLevel : sortedLevels) {
|
||||
Map<FunctionDTO, HashSet<? extends Serializable>> levelSelection = selection.get(retrieverLevel);
|
||||
RetrieverLevelFilterSelectionPresenter levelSelectionPresenter = new RetrieverLevelFilterSelectionPresenter(retrieverLevel, levelSelection);
|
||||
if (!first) {
|
||||
levelSelectionPresenter.getEntryWidget().getElement().getStyle().setMarginTop(5, Unit.PX);
|
||||
|
||||
+2
-1
@@ -36,6 +36,7 @@ import com.sap.sse.datamining.shared.DataMiningSession;
|
||||
import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.AggregationProcessorDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.FunctionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.ModifiableStatisticQueryDefinitionDTO;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
@@ -178,7 +179,7 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD
|
||||
queryDTO.appendDimensionToGroupBy(dimension);
|
||||
}
|
||||
|
||||
for (Entry<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionEntry : filterSelectionProvider.getSelection().entrySet()) {
|
||||
for (Entry<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionEntry : filterSelectionProvider.getSelection().entrySet()) {
|
||||
queryDTO.setFilterSelectionFor(filterSelectionEntry.getKey(), filterSelectionEntry.getValue());
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -34,6 +34,7 @@ import com.sap.sailing.gwt.ui.datamining.execution.SimpleManagedDataMiningQuerie
|
||||
import com.sap.sse.datamining.shared.DataMiningSession;
|
||||
import com.sap.sse.datamining.shared.GroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.GenericGroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.FunctionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
@@ -158,15 +159,15 @@ class DimensionFilterSelectionProvider {
|
||||
final FunctionDTO dimension = getSelectedDimension();
|
||||
HashSet<FunctionDTO> dimensionDTOs = new HashSet<>();
|
||||
dimensionDTOs.add(dimension);
|
||||
HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionDTO = retrieverLevelSelectionProvider.getCompleteFilterSelection();
|
||||
int retrieverLevel = retrieverLevelSelectionProvider.getRetrieverLevel();
|
||||
HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionDTO = retrieverLevelSelectionProvider.getCompleteFilterSelection();
|
||||
DataRetrieverLevelDTO retrieverLevel = retrieverLevelSelectionProvider.getRetrieverLevel();
|
||||
if (filterSelectionDTO.containsKey(retrieverLevel)) {
|
||||
filterSelectionDTO.get(retrieverLevel).remove(dimension);
|
||||
}
|
||||
busyIndicator.setVisible(true);
|
||||
counter.increase();
|
||||
dataMiningService.getDimensionValuesFor(session, retrieverLevelSelectionProvider.getDataRetrieverChain(),
|
||||
retrieverLevelSelectionProvider.getRetrieverLevel(), dimensionDTOs, filterSelectionDTO,
|
||||
retrieverLevel, dimensionDTOs, filterSelectionDTO,
|
||||
LocaleInfo.getCurrentLocale().getLocaleName(), new ManagedDataMiningQueryCallback<HashSet<Object>>(counter) {
|
||||
@Override
|
||||
protected void handleSuccess(QueryResultDTO<HashSet<Object>> result) {
|
||||
|
||||
+11
-10
@@ -177,15 +177,16 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio
|
||||
}
|
||||
}
|
||||
|
||||
void updateFilterSelectionProviders(int beginningWithLevel, final FunctionDTO exceptForDimension) {
|
||||
void updateFilterSelectionProviders(DataRetrieverLevelDTO beginningWithLevel, final FunctionDTO exceptForDimension) {
|
||||
DataRetrieverLevelDTO currentLevel = beginningWithLevel;
|
||||
DataRetrieverLevelDTO retrieverLevelToUpdate = null;
|
||||
for (int retrieverLevelIndex = beginningWithLevel; retrieverLevelIndex < retrieverChain.size(); retrieverLevelIndex++) {
|
||||
DataRetrieverLevelDTO retrieverLevel = retrieverChain.getRetrieverLevel(retrieverLevelIndex);
|
||||
if (selectionProvidersMappedByRetrievedDataType.containsKey(retrieverLevel)) {
|
||||
retrieverLevelToUpdate = retrieverLevel;
|
||||
do {
|
||||
if (selectionProvidersMappedByRetrievedDataType.containsKey(currentLevel)) {
|
||||
retrieverLevelToUpdate = currentLevel;
|
||||
break;
|
||||
}
|
||||
}
|
||||
currentLevel = retrieverChain.getNextRetrieverLevel(currentLevel);
|
||||
} while (currentLevel != null);
|
||||
|
||||
if (retrieverLevelToUpdate != null) {
|
||||
selectionProvidersMappedByRetrievedDataType.get(retrieverLevelToUpdate).updateAvailableData(exceptForDimension);
|
||||
@@ -201,8 +202,8 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio
|
||||
}
|
||||
|
||||
@Override
|
||||
public HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> getSelection() {
|
||||
HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelection = new HashMap<>();
|
||||
public HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> getSelection() {
|
||||
HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelection = new HashMap<>();
|
||||
for (RetrieverLevelFilterSelectionProvider selectionProvider : selectionProvidersMappedByRetrievedDataType.values()) {
|
||||
Map<FunctionDTO, HashSet<? extends Serializable>> levelFilterSelection = selectionProvider.getFilterSelection();
|
||||
if (!levelFilterSelection.isEmpty()) {
|
||||
@@ -215,8 +216,8 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio
|
||||
@Override
|
||||
public void applySelection(StatisticQueryDefinitionDTO queryDefinition) {
|
||||
for (RetrieverLevelFilterSelectionProvider selectionProvider : selectionProvidersMappedByRetrievedDataType.values()) {
|
||||
Map<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelection = queryDefinition.getFilterSelection();
|
||||
int retrieverLevel = selectionProvider.getRetrieverLevel();
|
||||
Map<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelection = queryDefinition.getFilterSelection();
|
||||
DataRetrieverLevelDTO retrieverLevel = selectionProvider.getRetrieverLevel();
|
||||
if (filterSelection.containsKey(retrieverLevel)) {
|
||||
selectionProvider.applySelection(filterSelection.get(retrieverLevel));
|
||||
}
|
||||
|
||||
+4
-9
@@ -19,7 +19,6 @@ import com.sap.sse.datamining.shared.DataMiningSession;
|
||||
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.FunctionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.LocalizedTypeDTO;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.shared.components.Component;
|
||||
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
|
||||
@@ -142,7 +141,7 @@ public class RetrieverLevelFilterSelectionProvider implements Component<Abstract
|
||||
}
|
||||
} else {
|
||||
// Update for this level is completed. Continue with the next level.
|
||||
retrieverChainSelectionProvider.updateFilterSelectionProviders(getRetrieverLevel() + 1, exceptForDimension);
|
||||
retrieverChainSelectionProvider.updateFilterSelectionProviders(retrieverChain.getNextRetrieverLevel(getRetrieverLevel()), exceptForDimension);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +149,7 @@ public class RetrieverLevelFilterSelectionProvider implements Component<Abstract
|
||||
retrieverChainSelectionProvider.retrieverLevelFilterSelectionChanged(this, dimensionFilterSelectionProvider);
|
||||
}
|
||||
|
||||
HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> getCompleteFilterSelection() {
|
||||
HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> getCompleteFilterSelection() {
|
||||
return retrieverChainSelectionProvider.getSelection();
|
||||
}
|
||||
|
||||
@@ -193,12 +192,8 @@ public class RetrieverLevelFilterSelectionProvider implements Component<Abstract
|
||||
return retrieverChain;
|
||||
}
|
||||
|
||||
public int getRetrieverLevel() {
|
||||
return retrieverLevel.getLevel();
|
||||
}
|
||||
|
||||
public LocalizedTypeDTO getRetrievedDataType() {
|
||||
return retrieverLevel.getRetrievedDataType();
|
||||
public DataRetrieverLevelDTO getRetrieverLevel() {
|
||||
return retrieverLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+10
-7
@@ -187,11 +187,12 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
|
||||
|
||||
@Override
|
||||
public QueryResultDTO<HashSet<Object>> getDimensionValuesFor(DataMiningSession session, DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO,
|
||||
int retrieverLevel, HashSet<FunctionDTO> dimensionDTOs, HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionDTO, String localeInfoName) {
|
||||
DataRetrieverLevelDTO retrieverLevelDTO, HashSet<FunctionDTO> dimensionDTOs, HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionDTO, String localeInfoName) {
|
||||
DataMiningServer dataMiningServer = getDataMiningServer();
|
||||
DataRetrieverChainDefinition<RacingEventService, ?> retrieverChainDefinition = dataMiningServer.getDataRetrieverChainDefinition(dataRetrieverChainDefinitionDTO.getId());
|
||||
DataRetrieverLevel<?, ?> retrieverLevel = retrieverChainDefinition.getDataRetrieverLevel(retrieverLevelDTO.getLevel());
|
||||
Iterable<Function<?>> dimensions = functionDTOsAsFunctions(dimensionDTOs);
|
||||
Map<Integer, Map<Function<?>, Collection<?>>> filterSelection = filterSelectionDTOAsFilterSelection(filterSelectionDTO);
|
||||
Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> filterSelection = filterSelectionDTOAsFilterSelection(filterSelectionDTO, retrieverChainDefinition);
|
||||
Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
|
||||
Query<HashSet<Object>> dimensionValuesQuery = dataMiningServer.createDimensionValuesQuery(retrieverChainDefinition, retrieverLevel, dimensions, filterSelection, locale);
|
||||
QueryResult<HashSet<Object>> result = dataMiningServer.runNewQueryAndAbortPreviousQueries(session, dimensionValuesQuery);
|
||||
@@ -210,14 +211,16 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
|
||||
return functions;
|
||||
}
|
||||
|
||||
private Map<Integer, Map<Function<?>, Collection<?>>> filterSelectionDTOAsFilterSelection(
|
||||
HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionDTO) {
|
||||
Map<Integer, Map<Function<?>, Collection<?>>> filterSelection = new HashMap<>();
|
||||
for (Integer retrieverLevel : filterSelectionDTO.keySet()) {
|
||||
HashMap<FunctionDTO, HashSet<? extends Serializable>> retrievalLevelSelection = filterSelectionDTO.get(retrieverLevel);
|
||||
private Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> filterSelectionDTOAsFilterSelection(
|
||||
HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelectionDTO,
|
||||
DataRetrieverChainDefinition<?, ?> retrieverChainDefinition) {
|
||||
Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> filterSelection = new HashMap<>();
|
||||
for (DataRetrieverLevelDTO retrieverLevelDTO : filterSelectionDTO.keySet()) {
|
||||
HashMap<FunctionDTO, HashSet<? extends Serializable>> retrievalLevelSelection = filterSelectionDTO.get(retrieverLevelDTO);
|
||||
for (FunctionDTO dimensionDTO : retrievalLevelSelection.keySet()) {
|
||||
if (!retrievalLevelSelection.get(dimensionDTO).isEmpty()) {
|
||||
Function<?> function = getDataMiningServer().getFunctionForDTO(dimensionDTO);
|
||||
DataRetrieverLevel<?, ?> retrieverLevel = retrieverChainDefinition.getDataRetrieverLevel(retrieverLevelDTO.getLevel());
|
||||
if (function != null) {
|
||||
if (!filterSelection.containsKey(retrieverLevel)) {
|
||||
filterSelection.put(retrieverLevel, new HashMap<Function<?>, Collection<?>>());
|
||||
|
||||
+3
-1
@@ -4,9 +4,11 @@ import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
|
||||
import com.sap.sse.datamining.shared.impl.dto.AggregationProcessorDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.FunctionDTO;
|
||||
|
||||
public interface StatisticQueryDefinitionDTO extends Serializable {
|
||||
@@ -14,7 +16,7 @@ public interface StatisticQueryDefinitionDTO extends Serializable {
|
||||
public String getLocaleInfoName();
|
||||
|
||||
public DataRetrieverChainDefinitionDTO getDataRetrieverChainDefinition();
|
||||
public HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> getFilterSelection();
|
||||
public Map<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> getFilterSelection();
|
||||
public ArrayList<FunctionDTO> getDimensionsToGroupBy();
|
||||
public FunctionDTO getStatisticToCalculate();
|
||||
public AggregationProcessorDefinitionDTO getAggregatorDefinition();
|
||||
|
||||
+32
-21
@@ -47,27 +47,53 @@ public class DataRetrieverChainDefinitionDTO implements Serializable, Comparable
|
||||
return retrieverLevels;
|
||||
}
|
||||
|
||||
public int size() {
|
||||
public int getLevelAmount() {
|
||||
return retrieverLevels.size();
|
||||
}
|
||||
|
||||
public DataRetrieverLevelDTO getRetrieverLevel(int retrieverLevel) {
|
||||
return retrieverLevels.get(retrieverLevel);
|
||||
/**
|
||||
* @param levelIndex
|
||||
* @return The retriever level for the given index or <code>null</code>, if the index is out of bounds.
|
||||
*/
|
||||
public DataRetrieverLevelDTO getRetrieverLevel(int levelIndex) {
|
||||
if (levelIndex < 0 || levelIndex >= getLevelAmount()) {
|
||||
return null;
|
||||
}
|
||||
return retrieverLevels.get(levelIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param retrieverLevel
|
||||
* @return The retriever level after the given one or <code>null</code>, if the given one is the last one in the chain.
|
||||
*/
|
||||
public DataRetrieverLevelDTO getNextRetrieverLevel(DataRetrieverLevelDTO retrieverLevel) {
|
||||
return getRetrieverLevel(retrieverLevel.getLevel() + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param retrieverLevel
|
||||
* @return The retriever level before the given one or <code>null</code>, if the given one is the first one in the chain.
|
||||
*/
|
||||
public DataRetrieverLevelDTO getPreviousRetrieverLevel(DataRetrieverLevelDTO retrieverLevel) {
|
||||
return getRetrieverLevel(retrieverLevel.getLevel() - 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(DataRetrieverChainDefinitionDTO d) {
|
||||
return this.getName().compareTo(d.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getDataSourceTypeName() + " -> " + getRetrievedDataTypeName() +
|
||||
"[ID: " + id + ", name: " + name + "]";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((dataSourceTypeName == null) ? 0 : dataSourceTypeName.hashCode());
|
||||
result = prime * result + ((id == null) ? 0 : id.hashCode());
|
||||
result = prime * result + ((name == null) ? 0 : name.hashCode());
|
||||
result = prime * result + ((retrieverLevels == null) ? 0 : retrieverLevels.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -80,26 +106,11 @@ public class DataRetrieverChainDefinitionDTO implements Serializable, Comparable
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
DataRetrieverChainDefinitionDTO other = (DataRetrieverChainDefinitionDTO) obj;
|
||||
if (dataSourceTypeName == null) {
|
||||
if (other.dataSourceTypeName != null)
|
||||
return false;
|
||||
} else if (!dataSourceTypeName.equals(other.dataSourceTypeName))
|
||||
return false;
|
||||
if (id == null) {
|
||||
if (other.id != null)
|
||||
return false;
|
||||
} else if (!id.equals(other.id))
|
||||
return false;
|
||||
if (name == null) {
|
||||
if (other.name != null)
|
||||
return false;
|
||||
} else if (!name.equals(other.name))
|
||||
return false;
|
||||
if (retrieverLevels == null) {
|
||||
if (other.retrieverLevels != null)
|
||||
return false;
|
||||
} else if (!retrieverLevels.equals(other.retrieverLevels))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+6
-1
@@ -2,7 +2,7 @@ package com.sap.sse.datamining.shared.impl.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class DataRetrieverLevelDTO implements Serializable {
|
||||
public class DataRetrieverLevelDTO implements Serializable, Comparable<DataRetrieverLevelDTO> {
|
||||
private static final long serialVersionUID = 6911713148350359643L;
|
||||
|
||||
private int retrieverLevel;
|
||||
@@ -32,6 +32,11 @@ public class DataRetrieverLevelDTO implements Serializable {
|
||||
public LocalizedTypeDTO getRetrievedDataType() {
|
||||
return retrievedDataType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(DataRetrieverLevelDTO otherRetrieverLevel) {
|
||||
return Integer.compare(getLevel(), otherRetrieverLevel.getLevel());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
|
||||
+3
-3
@@ -15,7 +15,7 @@ public class ModifiableStatisticQueryDefinitionDTO implements StatisticQueryDefi
|
||||
private AggregationProcessorDefinitionDTO aggregatorDefinition;
|
||||
private ArrayList<FunctionDTO> dimensionsToGroupBy;
|
||||
private DataRetrieverChainDefinitionDTO dataRetrieverChainDefinition;
|
||||
private HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelection;
|
||||
private HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> filterSelection;
|
||||
|
||||
/**
|
||||
* <b>Constructor for the GWT-Serialization. Don't use this!</b>
|
||||
@@ -32,7 +32,7 @@ public class ModifiableStatisticQueryDefinitionDTO implements StatisticQueryDefi
|
||||
this.dimensionsToGroupBy = new ArrayList<FunctionDTO>();
|
||||
}
|
||||
|
||||
public void setFilterSelectionFor(Integer retrieverLevel, HashMap<FunctionDTO, HashSet<? extends Serializable>> levelFilterSelection) {
|
||||
public void setFilterSelectionFor(DataRetrieverLevelDTO retrieverLevel, HashMap<FunctionDTO, HashSet<? extends Serializable>> levelFilterSelection) {
|
||||
filterSelection.put(retrieverLevel, levelFilterSelection);
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ public class ModifiableStatisticQueryDefinitionDTO implements StatisticQueryDefi
|
||||
}
|
||||
|
||||
@Override
|
||||
public HashMap<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> getFilterSelection() {
|
||||
public HashMap<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> getFilterSelection() {
|
||||
return filterSelection;
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -19,6 +19,7 @@ import com.sap.sse.datamining.components.DataRetrieverChainDefinition;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.data.QueryResult;
|
||||
import com.sap.sse.datamining.functions.Function;
|
||||
import com.sap.sse.datamining.impl.components.DataRetrieverLevel;
|
||||
import com.sap.sse.datamining.impl.components.SimpleDataRetrieverChainDefinition;
|
||||
import com.sap.sse.datamining.shared.GroupKey;
|
||||
import com.sap.sse.datamining.shared.impl.GenericGroupKey;
|
||||
@@ -95,8 +96,8 @@ public class TestDimensionsValuesQuery {
|
||||
raceDimensions.add(dimensionRaceName);
|
||||
raceDimensions.add(dimensionBoatClassName);
|
||||
raceDimensions.add(dimensionYear);
|
||||
Map<Integer, Map<Function<?>, Collection<?>>> filterSelection = new HashMap<>();
|
||||
Query<HashSet<Object>> dimensionsValueQuery = server.createDimensionValuesQuery(dataRetrieverChainDefinition, 1 /*race*/, raceDimensions, filterSelection, locale);
|
||||
Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> filterSelection = new HashMap<>();
|
||||
Query<HashSet<Object>> dimensionsValueQuery = server.createDimensionValuesQuery(dataRetrieverChainDefinition, dataRetrieverChainDefinition.getDataRetrieverLevel(/*race*/ 1), raceDimensions, filterSelection, locale);
|
||||
|
||||
Map<GroupKey, HashSet<Object>> expectedRaceResultData = buildExpectedRaceResultData();
|
||||
QueryResult<HashSet<Object>> result = dimensionsValueQuery.run();
|
||||
@@ -106,7 +107,7 @@ public class TestDimensionsValuesQuery {
|
||||
legDimensions.add(dimensionLegNumber);
|
||||
legDimensions.add(dimensionCompetitorName);
|
||||
legDimensions.add(dimensionCompetitorSailID);
|
||||
dimensionsValueQuery = server.createDimensionValuesQuery(dataRetrieverChainDefinition, 2 /*leg*/, legDimensions, filterSelection, locale);
|
||||
dimensionsValueQuery = server.createDimensionValuesQuery(dataRetrieverChainDefinition, dataRetrieverChainDefinition.getDataRetrieverLevel(/*leg*/ 2), legDimensions, filterSelection, locale);
|
||||
|
||||
Map<GroupKey, HashSet<Object>> expectedLegResultData = buildExpectedLegResultData();
|
||||
result = dimensionsValueQuery.run();
|
||||
|
||||
+1
-1
@@ -82,7 +82,7 @@ public class TestStatisticQuery {
|
||||
definition.addDimensionToGroupBy(functionFactory.createMethodWrappingFunction(getLengthMethod));
|
||||
|
||||
Method getValueMethod = FunctionTestsUtil.getMethodFromClass(Number.class, "getValue");
|
||||
definition.setFilterSelection(0, functionFactory.createMethodWrappingFunction(getValueMethod), Arrays.asList(10, 100, 1000));
|
||||
definition.setFilterSelection(retrieverChain.getDataRetrieverLevel(0), functionFactory.createMethodWrappingFunction(getValueMethod), Arrays.asList(10, 100, 1000));
|
||||
|
||||
return definition;
|
||||
}
|
||||
|
||||
@@ -55,8 +55,8 @@ public interface DataMiningServer {
|
||||
Class<DataSourceType> dataSourceType, Class<DataType> retrievedDataType);
|
||||
public <DataSourceType, DataType> DataRetrieverChainDefinition<DataSourceType, DataType> getDataRetrieverChainDefinition(UUID id);
|
||||
|
||||
public <DataSourceType> Query<HashSet<Object>> createDimensionValuesQuery(DataRetrieverChainDefinition<DataSourceType, ?> dataRetrieverChainDefinition, int retrieverLevel,
|
||||
Iterable<Function<?>> dimensions, Map<Integer, Map<Function<?>, Collection<?>>> filterSelection, Locale locale);
|
||||
public <DataSourceType> Query<HashSet<Object>> createDimensionValuesQuery(DataRetrieverChainDefinition<DataSourceType, ?> dataRetrieverChainDefinition, DataRetrieverLevel<?, ?> retrieverLevel,
|
||||
Iterable<Function<?>> dimensions, Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> filterSelection, Locale locale);
|
||||
public <DataSourceType, DataType, ExtractedType, ResultType> StatisticQueryDefinition<DataSourceType, DataType, ExtractedType, ResultType> getQueryDefinitionForDTO(StatisticQueryDefinitionDTO queryDefinitionDTO);
|
||||
public <DataSourceType, ResultType> Query<ResultType> createQuery(StatisticQueryDefinition<DataSourceType, ?, ?, ResultType> queryDefinition);
|
||||
public <ResultType> QueryResult<ResultType> runNewQueryAndAbortPreviousQueries(DataMiningSession session, Query<ResultType> query);
|
||||
|
||||
+2
-1
@@ -8,6 +8,7 @@ import java.util.Map;
|
||||
import com.sap.sse.datamining.components.AggregationProcessorDefinition;
|
||||
import com.sap.sse.datamining.components.DataRetrieverChainDefinition;
|
||||
import com.sap.sse.datamining.functions.Function;
|
||||
import com.sap.sse.datamining.impl.components.DataRetrieverLevel;
|
||||
|
||||
public interface StatisticQueryDefinition<DataSourceType, DataType, ExtractedType, ResultType> {
|
||||
|
||||
@@ -19,7 +20,7 @@ public interface StatisticQueryDefinition<DataSourceType, DataType, ExtractedTyp
|
||||
public Locale getLocale();
|
||||
|
||||
public DataRetrieverChainDefinition<DataSourceType, DataType> getDataRetrieverChainDefinition();
|
||||
public Map<Integer, Map<Function<?>, Collection<?>>> getFilterSelection();
|
||||
public Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> getFilterSelection();
|
||||
public List<Function<?>> getDimensionsToGroupBy();
|
||||
public Function<ExtractedType> getStatisticToCalculate();
|
||||
public AggregationProcessorDefinition<ExtractedType, ResultType> getAggregatorDefinition();
|
||||
|
||||
+9
-2
@@ -1,5 +1,7 @@
|
||||
package com.sap.sse.datamining.components;
|
||||
|
||||
import com.sap.sse.datamining.impl.components.DataRetrieverLevel;
|
||||
|
||||
|
||||
/**
|
||||
* Used to construct a chain of retriever processors step by step. Allows to set the filter and result
|
||||
@@ -11,6 +13,11 @@ package com.sap.sse.datamining.components;
|
||||
*/
|
||||
public interface DataRetrieverChainBuilder<DataSourceType> {
|
||||
|
||||
/**
|
||||
* @return <code>true</code>, if {@link #canStepFurther()} has been called.
|
||||
*/
|
||||
public boolean hasBeenInitialized();
|
||||
|
||||
/**
|
||||
* @return <code>true</code>, if there's a next data retriever in the chain.
|
||||
*/
|
||||
@@ -30,9 +37,9 @@ public interface DataRetrieverChainBuilder<DataSourceType> {
|
||||
public Class<?> getCurrentRetrievedDataType();
|
||||
|
||||
/**
|
||||
* @return The current retriever level or <code>-1</code> if {@link #stepFurther()} has not yet been called.
|
||||
* @return The current retriever level or <code>null</code> if {@link #stepFurther()} has not yet been called.
|
||||
*/
|
||||
public int getCurrentRetrieverLevel();
|
||||
public DataRetrieverLevel<?, ?> getCurrentRetrieverLevel();
|
||||
|
||||
/**
|
||||
* Sets the filter for the data retriever of the current level.
|
||||
|
||||
+6
@@ -108,6 +108,12 @@ public interface DataRetrieverChainDefinition<DataSourceType, DataType> {
|
||||
*/
|
||||
public List<? extends DataRetrieverLevel<?, ?>> getDataRetrieverLevels();
|
||||
|
||||
/**
|
||||
* @param levelIndex
|
||||
* @return The retriever level for the given index or <code>null</code>, if the index is out of bounds.
|
||||
*/
|
||||
public DataRetrieverLevel<?, ?> getDataRetrieverLevel(int levelIndex);
|
||||
|
||||
/**
|
||||
* Returns a {@link DataRetrieverChainBuilder}, that is used to construct the chain. {@link #endWith(Class, Class, Class, String)}
|
||||
* has to be called before you can use this method. Otherwise an exception will be thrown.
|
||||
|
||||
+14
-13
@@ -22,6 +22,7 @@ import com.sap.sse.datamining.functions.ParameterizedFunction;
|
||||
import com.sap.sse.datamining.impl.AdditionalDimensionValuesQueryData;
|
||||
import com.sap.sse.datamining.impl.AdditionalStatisticQueryData;
|
||||
import com.sap.sse.datamining.impl.ProcessorQuery;
|
||||
import com.sap.sse.datamining.impl.components.DataRetrieverLevel;
|
||||
import com.sap.sse.datamining.impl.components.GroupedDataEntry;
|
||||
import com.sap.sse.datamining.impl.criterias.AndCompoundFilterCriterion;
|
||||
import com.sap.sse.datamining.impl.criterias.CompoundFilterCriterion;
|
||||
@@ -49,7 +50,7 @@ public class QueryFactory {
|
||||
Processor<DataType, GroupedDataEntry<DataType>> groupingProcessor = processorFactory.createGroupingProcessor(dataTypeToRetrieve, extractionProcessor, getParameterProvidersFor(queryDefinition.getDimensionsToGroupBy(), stringMessages, queryDefinition.getLocale()));
|
||||
|
||||
DataRetrieverChainBuilder<DataSourceType> chainBuilder = queryDefinition.getDataRetrieverChainDefinition().startBuilding(executor);
|
||||
Map<Integer, FilterCriterion<?>> criteriaMappedByRetrieverLevel = createFilterCriteria(queryDefinition.getFilterSelection());
|
||||
Map<DataRetrieverLevel<?, ?>, FilterCriterion<?>> criteriaMappedByRetrieverLevel = createFilterCriteria(queryDefinition.getFilterSelection());
|
||||
while (chainBuilder.canStepFurther()) {
|
||||
chainBuilder.stepFurther();
|
||||
|
||||
@@ -98,9 +99,9 @@ public class QueryFactory {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private <DataType> Map<Integer, FilterCriterion<?>> createFilterCriteria(Map<Integer, Map<Function<?>, Collection<?>>> filterSelection) {
|
||||
Map<Integer, CompoundFilterCriterion<?>> criteriaMappedByRetrieverLevel = new HashMap<>();
|
||||
for (Entry<Integer, Map<Function<?>, Collection<?>>> levelFilterSelection : filterSelection.entrySet()) {
|
||||
private <DataType> Map<DataRetrieverLevel<?, ?>, FilterCriterion<?>> createFilterCriteria(Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> filterSelection) {
|
||||
Map<DataRetrieverLevel<?, ?>, FilterCriterion<?>> criteriaMappedByRetrieverLevel = new HashMap<>();
|
||||
for (Entry<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> levelFilterSelection : filterSelection.entrySet()) {
|
||||
for (Entry<Function<?>, Collection<?>> levelFilterSelectionEntry : levelFilterSelection.getValue().entrySet()) {
|
||||
Function<?> function = levelFilterSelectionEntry.getKey();
|
||||
ParameterProvider parameterProvider = ParameterProvider.NULL;
|
||||
@@ -114,25 +115,25 @@ public class QueryFactory {
|
||||
((CompoundFilterCriterion<DataType>) criteriaMappedByRetrieverLevel.get(levelFilterSelection.getKey())).addCriteria(new FunctionValuesFilterCriterion<>(dataType, function, parameterProvider, filterValues));
|
||||
}
|
||||
}
|
||||
return (Map<Integer, FilterCriterion<?>>)(Map<Integer, ?>) criteriaMappedByRetrieverLevel;
|
||||
return criteriaMappedByRetrieverLevel;
|
||||
}
|
||||
|
||||
public <DataSource> Query<HashSet<Object>> createDimensionValuesQuery(DataSource dataSource,
|
||||
final DataRetrieverChainDefinition<DataSource, ?> dataRetrieverChainDefinition, final int retrieverLevel,
|
||||
final Iterable<Function<?>> dimensions, final Map<Integer, Map<Function<?>, Collection<?>>> filterSelection, final Locale locale,
|
||||
public <DataSourceType> Query<HashSet<Object>> createDimensionValuesQuery(DataSourceType dataSource,
|
||||
final DataRetrieverChainDefinition<DataSourceType, ?> dataRetrieverChainDefinition, final DataRetrieverLevel<?, ?> retrieverLevel,
|
||||
final Iterable<Function<?>> dimensions, final Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> filterSelection, final Locale locale,
|
||||
final ResourceBundleStringMessages stringMessages, final ExecutorService executor) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Class<HashSet<Object>> resultType = (Class<HashSet<Object>>)(Class<?>) HashSet.class;
|
||||
return new ProcessorQuery<HashSet<Object>, DataSource>(dataSource, stringMessages, locale, resultType, new AdditionalDimensionValuesQueryData(dataRetrieverChainDefinition.getID(), dimensions)) {
|
||||
return new ProcessorQuery<HashSet<Object>, DataSourceType>(dataSource, stringMessages, locale, resultType, new AdditionalDimensionValuesQueryData(dataRetrieverChainDefinition.getID(), dimensions)) {
|
||||
@Override
|
||||
protected Processor<DataSource, ?> createChainAndReturnFirstProcessor(Processor<Map<GroupKey, HashSet<Object>>, Void> resultReceiver) {
|
||||
protected Processor<DataSourceType, ?> createChainAndReturnFirstProcessor(Processor<Map<GroupKey, HashSet<Object>>, Void> resultReceiver) {
|
||||
ProcessorFactory processorFactory = new ProcessorFactory(executor);
|
||||
|
||||
Processor<GroupedDataEntry<Object>, Map<GroupKey, HashSet<Object>>> valueCollector = processorFactory.createGroupedDataCollectingAsSetProcessor(/*query*/ this);
|
||||
|
||||
Map<Integer, FilterCriterion<?>> criteriaMappedByRetrieverLevel = createFilterCriteria(filterSelection);
|
||||
DataRetrieverChainBuilder<DataSource> chainBuilder = dataRetrieverChainDefinition.startBuilding(executor);
|
||||
while (chainBuilder.getCurrentRetrieverLevel() < retrieverLevel) {
|
||||
Map<DataRetrieverLevel<?, ?>, FilterCriterion<?>> criteriaMappedByRetrieverLevel = createFilterCriteria(filterSelection);
|
||||
DataRetrieverChainBuilder<DataSourceType> chainBuilder = dataRetrieverChainDefinition.startBuilding(executor);
|
||||
while (!chainBuilder.hasBeenInitialized() || chainBuilder.getCurrentRetrieverLevel().getLevel() < retrieverLevel.getLevel()) {
|
||||
chainBuilder.stepFurther();
|
||||
|
||||
if (criteriaMappedByRetrieverLevel.containsKey(chainBuilder.getCurrentRetrieverLevel())) {
|
||||
|
||||
+5
-4
@@ -33,6 +33,7 @@ import com.sap.sse.datamining.impl.components.management.StrategyPerQueryTypeMan
|
||||
import com.sap.sse.datamining.shared.DataMiningSession;
|
||||
import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.AggregationProcessorDefinitionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.FunctionDTO;
|
||||
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
|
||||
import com.sap.sse.i18n.ResourceBundleStringMessages;
|
||||
@@ -298,8 +299,8 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
|
||||
AggregationProcessorDefinition<ExtractedType, ResultType> aggregatorDefinition = getAggregationProcessorDefinitionForDTO(queryDefinitionDTO.getAggregatorDefinition());
|
||||
queryDefinition = new ModifiableStatisticQueryDefinition<>(locale, retrieverChain, statisticToCalculate, aggregatorDefinition);
|
||||
|
||||
for (Entry<Integer, HashMap<FunctionDTO, HashSet<? extends Serializable>>> levelSpecificFilterSelection : queryDefinitionDTO.getFilterSelection().entrySet()) {
|
||||
Integer retrieverLevel = levelSpecificFilterSelection.getKey();
|
||||
for (Entry<DataRetrieverLevelDTO, HashMap<FunctionDTO, HashSet<? extends Serializable>>> levelSpecificFilterSelection : queryDefinitionDTO.getFilterSelection().entrySet()) {
|
||||
DataRetrieverLevel<?, ?> retrieverLevel = retrieverChain.getDataRetrieverLevel(levelSpecificFilterSelection.getKey().getLevel());
|
||||
for (Entry<FunctionDTO, HashSet<? extends Serializable>> levelSpecificFilterSelectionEntry : levelSpecificFilterSelection.getValue().entrySet()) {
|
||||
Function<?> dimensionToFilterBy = getFunctionForDTO(levelSpecificFilterSelectionEntry.getKey());
|
||||
if (dimensionToFilterBy != null) {
|
||||
@@ -326,8 +327,8 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public <DataSourceType> Query<HashSet<Object>> createDimensionValuesQuery(DataRetrieverChainDefinition<DataSourceType, ?> dataRetrieverChainDefinition, int retrieverLevel,
|
||||
Iterable<Function<?>> dimensions, Map<Integer, Map<Function<?>, Collection<?>>> filterSelection, Locale locale) {
|
||||
public <DataSourceType> Query<HashSet<Object>> createDimensionValuesQuery(DataRetrieverChainDefinition<DataSourceType, ?> dataRetrieverChainDefinition, DataRetrieverLevel<?, ?> retrieverLevel,
|
||||
Iterable<Function<?>> dimensions, Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> filterSelection, Locale locale) {
|
||||
DataSourceProvider<DataSourceType> dataSourceProvider = getDataSourceProviderFor(dataRetrieverChainDefinition.getDataSourceType());
|
||||
return queryFactory.createDimensionValuesQuery(dataSourceProvider.getDataSource(), dataRetrieverChainDefinition, retrieverLevel, dimensions, filterSelection, locale, getStringMessages(), getExecutorService());
|
||||
}
|
||||
|
||||
+4
-3
@@ -11,13 +11,14 @@ import com.sap.sse.datamining.StatisticQueryDefinition;
|
||||
import com.sap.sse.datamining.components.AggregationProcessorDefinition;
|
||||
import com.sap.sse.datamining.components.DataRetrieverChainDefinition;
|
||||
import com.sap.sse.datamining.functions.Function;
|
||||
import com.sap.sse.datamining.impl.components.DataRetrieverLevel;
|
||||
|
||||
public class ModifiableStatisticQueryDefinition<DataSourceType, DataType, ExtractedType, ResultType> implements StatisticQueryDefinition<DataSourceType, DataType, ExtractedType, ResultType> {
|
||||
|
||||
private final Locale locale;
|
||||
|
||||
private final DataRetrieverChainDefinition<DataSourceType, DataType> retrieverChain;
|
||||
private final Map<Integer, Map<Function<?>, Collection<?>>> filterSelection;
|
||||
private final Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> filterSelection;
|
||||
|
||||
private final List<Function<?>> dimensionsToGroupBy;
|
||||
|
||||
@@ -67,7 +68,7 @@ public class ModifiableStatisticQueryDefinition<DataSourceType, DataType, Extrac
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, Map<Function<?>, Collection<?>>> getFilterSelection() {
|
||||
public Map<DataRetrieverLevel<?, ?>, Map<Function<?>, Collection<?>>> getFilterSelection() {
|
||||
return filterSelection;
|
||||
}
|
||||
|
||||
@@ -86,7 +87,7 @@ public class ModifiableStatisticQueryDefinition<DataSourceType, DataType, Extrac
|
||||
return aggregatorDefinition;
|
||||
}
|
||||
|
||||
public void setFilterSelection(Integer retrieverLevel, Function<?> dimensionToFilterBy, Collection<?> filterSelection) {
|
||||
public void setFilterSelection(DataRetrieverLevel<?, ?> retrieverLevel, Function<?> dimensionToFilterBy, Collection<?> filterSelection) {
|
||||
if (!this.filterSelection.containsKey(retrieverLevel)) {
|
||||
this.filterSelection.put(retrieverLevel, new HashMap<Function<?>, Collection<?>>());
|
||||
}
|
||||
|
||||
+3
-3
@@ -109,8 +109,8 @@ public class SimpleDataRetrieverChainBuilder<DataSourceType> implements DataRetr
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCurrentRetrieverLevel() {
|
||||
return currentRetrieverTypeIndex;
|
||||
public DataRetrieverLevel<?, ?> getCurrentRetrieverLevel() {
|
||||
return hasBeenInitialized() ? dataRetrieverTypesWithInformation.get(currentRetrieverTypeIndex) : null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -129,7 +129,7 @@ public class SimpleDataRetrieverChainBuilder<DataSourceType> implements DataRetr
|
||||
return (Processor<DataSourceType, ?>) firstRetriever;
|
||||
}
|
||||
|
||||
private boolean hasBeenInitialized() {
|
||||
public boolean hasBeenInitialized() {
|
||||
return currentRetrieverTypeIndex >= 0;
|
||||
}
|
||||
|
||||
|
||||
+8
@@ -128,6 +128,14 @@ public class SimpleDataRetrieverChainDefinition<DataSourceType, DataType> implem
|
||||
public List<? extends DataRetrieverLevel<?, ?>> getDataRetrieverLevels() {
|
||||
return dataRetrieverTypesWithInformation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataRetrieverLevel<?, ?> getDataRetrieverLevel(int levelIndex) {
|
||||
if (levelIndex < 0 || levelIndex >= getDataRetrieverLevels().size()) {
|
||||
return null;
|
||||
}
|
||||
return getDataRetrieverLevels().get(levelIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataRetrieverChainBuilder<DataSourceType> startBuilding(ExecutorService executor) {
|
||||
|
||||
Reference in new issue
Block a user