Implemented preparations for predefined queries

This commit is contained in:
Lennart Hensler committed 2015-10-15 18:38:58 +02:00
1 parent 4649f362d2
commit 9e64fa6a78
17 files changed
+337 -21

No files matched your search

@@ -1414,4 +1414,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
String groupAverageDescending();
String groupMedianAscending();
String groupMedianDescending();
String runPredefinedQuery();
String selectPredefinedQuery();
String predefinedQueryRunner();
}
@@ -1385,4 +1385,7 @@ queryDefinitionViewer=Query Definition Viewer
groupAverageAscending=Group Average (Ascending)
groupAverageDescending=Group Average (Descending)
groupMedianAscending=Group Median (Ascending)
groupMedianDescending=Group Median (Descending)
groupMedianDescending=Group Median (Descending)
runPredefinedQuery=Run Predefined Query
selectPredefinedQuery=Select Predefined Query
predefinedQueryRunner=Predefined Query Runner
@@ -1374,4 +1374,7 @@ queryDefinitionViewer=Query Definition Anzeiger
groupAverageAscending=Gruppe Durchschnitt (Aufsteigend)
groupAverageDescending=Gruppe Durchschnitt (Absteigend)
groupMedianAscending=Gruppe Median (Aufsteigend)
groupMedianDescending=Gruppe Median (Absteigend)
groupMedianDescending=Gruppe Median (Absteigend)
runPredefinedQuery=Vordefinierte Abfrage ausführen
selectPredefinedQuery=Vordefinierte Abfrage auswählen
predefinedQueryRunner=Vordefinierte Abfrageverarbeiter
@@ -1314,4 +1314,7 @@ flightsCount[one]={0,number} flight
groupAverageAscending=Group Average (Ascending)
groupAverageDescending=Group Average (Descending)
groupMedianAscending=Group Median (Ascending)
groupMedianDescending=Group Median (Descending)
groupMedianDescending=Group Median (Descending)
runPredefinedQuery=Run Predefined Query
selectPredefinedQuery=Select Predefined Query
predefinedQueryRunner=Predefined Query Runner
@@ -13,6 +13,7 @@ import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint;
import com.sap.sailing.gwt.ui.client.GlobalNavigationPanel;
import com.sap.sailing.gwt.ui.client.LogoAndTitlePanel;
import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
import com.sap.sailing.gwt.ui.datamining.developer.PredefinedQueryRunner;
import com.sap.sailing.gwt.ui.datamining.developer.QueryDefinitionViewer;
import com.sap.sailing.gwt.ui.datamining.execution.SimpleQueryRunner;
import com.sap.sailing.gwt.ui.datamining.presentation.TabbedResultsPresenter;
@@ -68,6 +69,9 @@ public class DataMiningEntryPoint extends AbstractSailingEntryPoint {
if (enableDeveloperOptions) {
final QueryDefinitionViewer queryDefinitionViewer = new QueryDefinitionViewer(getStringMessages(), queryDefinitionProviderWithControls);
queryDefinitionProviderWithControls.addControl(queryDefinitionViewer.getEntryWidget());
final PredefinedQueryRunner predefinedQueryRunner = new PredefinedQueryRunner(session, getStringMessages(), dataMiningService, this, resultsPresenter);
queryDefinitionProviderWithControls.addControl(predefinedQueryRunner.getEntryWidget());
}
}
@@ -41,6 +41,9 @@ public interface DataMiningService extends RemoteService {
<ResultType> QueryResultDTO<ResultType> runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition);
HashSet<String> getPredefinedQueryNames();
<ResultType> QueryResultDTO<ResultType> runPredefinedQuery(DataMiningSession session, String name, String localeInfoName);
SerializationDummy pseudoMethodSoThatSomeClassesAreAddedToTheGWTSerializationPolicy();
}
@@ -45,6 +45,9 @@ public interface DataMiningServiceAsync {
String localeInfoName, AsyncCallback<QueryResultDTO<HashSet<Object>>> callback);
<ResultType> void runQuery(DataMiningSession session, StatisticQueryDefinitionDTO queryDefinition, AsyncCallback<QueryResultDTO<ResultType>> callback);
void getPredefinedQueryNames(AsyncCallback<HashSet<String>> callback);
<ResultType> void runPredefinedQuery(DataMiningSession session, String name, String localeInfoName, AsyncCallback<QueryResultDTO<ResultType>> callback);
/**
* This method does nothing, but is needed to ensure, that some classes for the data mining
@@ -0,0 +1,188 @@
package com.sap.sailing.gwt.ui.datamining.developer;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.i18n.client.LocaleInfo;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ValueListBox;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.controls.SimpleObjectRenderer;
import com.sap.sailing.gwt.ui.datamining.DataMiningServiceAsync;
import com.sap.sailing.gwt.ui.datamining.ResultsPresenter;
import com.sap.sse.common.Util;
import com.sap.sse.common.settings.SerializableSettings;
import com.sap.sse.datamining.shared.DataMiningSession;
import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.controls.busyindicator.SimpleBusyIndicator;
import com.sap.sse.gwt.client.shared.components.Component;
import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent;
public class PredefinedQueryRunner implements Component<SerializableSettings> {
private final DataMiningSession session;
private final StringMessages stringMessages;
private final DataMiningServiceAsync dataMiningService;
private final ErrorReporter errorReporter;
private final ResultsPresenter<?> resultsPresenter;
private final Button showDialogButton;
private final DialogBox dialogBox;
private final SimpleBusyIndicator busyIndicator;
private final ValueListBox<String> selectionListBox;
private final Button runButton;
public PredefinedQueryRunner(DataMiningSession session, StringMessages stringMessages,
DataMiningServiceAsync dataMiningService, ErrorReporter errorReporter,
ResultsPresenter<?> resultsPresenter) {
this.session = session;
this.stringMessages = stringMessages;
this.dataMiningService = dataMiningService;
this.errorReporter = errorReporter;
this.resultsPresenter = resultsPresenter;
showDialogButton = new Button(stringMessages.runPredefinedQuery(), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
show();
}
});
dialogBox = new DialogBox(false, true);
dialogBox.setText(stringMessages.viewQueryDefinition());
dialogBox.setAnimationEnabled(true);
Button closeButton = new Button(stringMessages.close(), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
dialogBox.hide();
}
});
runButton = new Button(stringMessages.run(), new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
runSelectedPredefinedQuery();
}
});
HorizontalPanel contentPanel = new HorizontalPanel();
contentPanel.setSpacing(5);
contentPanel.add(new Label(stringMessages.selectPredefinedQuery() + ":"));
busyIndicator = new SimpleBusyIndicator(true, 0.7f);
busyIndicator.setVisible(false);
contentPanel.add(busyIndicator);
selectionListBox = new ValueListBox<>(new SimpleObjectRenderer<String>());
contentPanel.add(selectionListBox);
DockPanel dockPanel = new DockPanel();
dockPanel.setSpacing(4);
HorizontalPanel dialogButtonsPanel = new HorizontalPanel();
dialogButtonsPanel.setSpacing(5);
dialogButtonsPanel.add(runButton);
dialogButtonsPanel.add(closeButton);
dockPanel.add(dialogButtonsPanel, DockPanel.SOUTH);
dockPanel.setCellHorizontalAlignment(dialogButtonsPanel, DockPanel.ALIGN_RIGHT);
dockPanel.add(contentPanel, DockPanel.CENTER);
dockPanel.setWidth("100%");
dialogBox.setWidget(dockPanel);
}
public void show() {
runButton.setEnabled(false);
selectionListBox.setVisible(false);
busyIndicator.setVisible(true);
dialogBox.center();
dataMiningService.getPredefinedQueryNames(new AsyncCallback<HashSet<String>>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error fetching the predefined query names: " + caught.getMessage());
busyIndicator.setVisible(false);
}
@Override
public void onSuccess(HashSet<String> predefinedQueryNames) {
if (!predefinedQueryNames.isEmpty()) {
String valueToBeSelected = Util.get(predefinedQueryNames, 0);
List<String> acceptableValues = new ArrayList<>(predefinedQueryNames);
selectionListBox.setValue(valueToBeSelected);
selectionListBox.setAcceptableValues(acceptableValues);
runButton.setEnabled(true);
selectionListBox.setVisible(true);
} else {
errorReporter.reportError("No predefined query names have been found.");
}
busyIndicator.setVisible(false);
}
});
}
protected void runSelectedPredefinedQuery() {
String predefinedQueryName = selectionListBox.getValue();
resultsPresenter.showBusyIndicator();
dataMiningService.runPredefinedQuery(session, predefinedQueryName, LocaleInfo.getCurrentLocale().getLocaleName(), new AsyncCallback<QueryResultDTO<Object>>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error running the query: " + caught.getMessage());
resultsPresenter.showError(stringMessages.errorRunningDataMiningQuery() + ".");
}
@Override
public void onSuccess(QueryResultDTO<Object> result) {
resultsPresenter.showResult(result);
}
});
dialogBox.hide();
}
@Override
public String getLocalizedShortName() {
return stringMessages.predefinedQueryRunner();
}
@Override
public Widget getEntryWidget() {
return showDialogButton;
}
@Override
public boolean isVisible() {
return showDialogButton.isVisible();
}
@Override
public void setVisible(boolean visibility) {
showDialogButton.setVisible(visibility);
}
@Override
public boolean hasSettings() {
return false;
}
@Override
public SettingsDialogComponent<SerializableSettings> getSettingsDialogComponent() {
return null;
}
@Override
public void updateSettings(SerializableSettings newSettings) {
}
@Override
public String getDependentCssClassName() {
return "predefinedQueryRunner";
}
}
@@ -63,22 +63,24 @@ public class TabbedResultsPresenter implements ResultsPresenter<Settings> {
@Override
public void showResult(QueryResultDTO<?> result) {
if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarAggregation")) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(new PolarResultsPresenter(stringMessages));
removeTab(oldHeader);
} else if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarBackendData")) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(new PolarBackendResultsPresenter(stringMessages));
removeTab(oldHeader);
} else {
if (!(getSelectedPresenter() instanceof MultiResultsPresenter)) {
if (result != null) {
if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarAggregation")) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(new MultiResultsPresenter(stringMessages));
addTabAndFocus(new PolarResultsPresenter(stringMessages));
removeTab(oldHeader);
} else if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarBackendData")) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(new PolarBackendResultsPresenter(stringMessages));
removeTab(oldHeader);
} else {
if (!(getSelectedPresenter() instanceof MultiResultsPresenter)) {
CloseableTabHeader oldHeader = getSelectedHeader();
addTabAndFocus(new MultiResultsPresenter(stringMessages));
removeTab(oldHeader);
}
}
getSelectedHeader().setText(result.getResultSignifier());
}
getSelectedHeader().setText(result.getResultSignifier());
getSelectedPresenter().showResult(result);
}
@@ -256,6 +256,27 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
return dataMiningServer.convertToDTO(result);
}
@Override
public HashSet<String> getPredefinedQueryNames() {
HashSet<String> predefinedQueryNames = new HashSet<String>();
for (String predefinedQueryName : getDataMiningServer().getPredefinedQueryNames()) {
predefinedQueryNames.add(predefinedQueryName);
}
return predefinedQueryNames;
}
@Override
public <ResultType> QueryResultDTO<ResultType> runPredefinedQuery(DataMiningSession session, String name, String localeInfoName) {
// TODO Use local info name
DataMiningServer dataMiningServer = getDataMiningServer();
Query<ResultType> query = dataMiningServer.createPredefinedQuery(name);
if (query != null) {
QueryResult<ResultType> result = dataMiningServer.runNewQueryAndAbortPreviousQueries(session, query);
return dataMiningServer.convertToDTO(result);
}
return null;
}
@Override
public SerializationDummy pseudoMethodSoThatSomeClassesAreAddedToTheGWTSerializationPolicy() {
return null;
@@ -16,11 +16,13 @@ import com.sap.sse.datamining.ModifiableDataMiningServer;
import com.sap.sse.datamining.components.management.AggregationProcessorDefinitionRegistry;
import com.sap.sse.datamining.components.management.DataRetrieverChainDefinitionRegistry;
import com.sap.sse.datamining.components.management.DataSourceProviderRegistry;
import com.sap.sse.datamining.components.management.QueryDefinitionDTOProvider;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.impl.DataMiningServerImpl;
import com.sap.sse.datamining.impl.components.management.AggregationProcessorDefinitionManager;
import com.sap.sse.datamining.impl.components.management.DataRetrieverChainDefinitionManager;
import com.sap.sse.datamining.impl.components.management.DataSourceProviderManager;
import com.sap.sse.datamining.impl.components.management.QueryDefinitionDTOManager;
import com.sap.sse.datamining.test.data.Test_HasContextWithDeadConnectorEnd;
import com.sap.sse.datamining.test.data.Test_HasLegOfCompetitorContext;
import com.sap.sse.datamining.test.data.Test_HasRaceContext;
@@ -60,8 +62,13 @@ public class TestFunctionManagerAsFunctionRegistry {
DataSourceProviderRegistry dataSourceProviderRegistry = new DataSourceProviderManager();
DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry = new DataRetrieverChainDefinitionManager();
AggregationProcessorDefinitionRegistry aggregationProcessorDefinitionRegistry = new AggregationProcessorDefinitionManager();
ModifiableDataMiningServer server = new DataMiningServerImpl(ConcurrencyTestsUtil.getExecutor(), functionManager, dataSourceProviderRegistry, dataRetrieverChainDefinitionRegistry, aggregationProcessorDefinitionRegistry);
QueryDefinitionDTOProvider queryDefinitionProvider = new QueryDefinitionDTOManager();
ModifiableDataMiningServer server = new DataMiningServerImpl(ConcurrencyTestsUtil.getExecutor(), functionManager,
dataSourceProviderRegistry,
dataRetrieverChainDefinitionRegistry,
aggregationProcessorDefinitionRegistry,
queryDefinitionProvider);
Date beforeRegistration = new Date();
ConcurrencyTestsUtil.sleepFor(10);
server.registerAllClasses(internalClassesToScan);
@@ -5,12 +5,14 @@ import com.sap.sse.datamining.components.management.AggregationProcessorDefiniti
import com.sap.sse.datamining.components.management.DataRetrieverChainDefinitionRegistry;
import com.sap.sse.datamining.components.management.DataSourceProviderRegistry;
import com.sap.sse.datamining.components.management.FunctionRegistry;
import com.sap.sse.datamining.components.management.QueryDefinitionDTOProvider;
import com.sap.sse.datamining.factories.DataMiningDTOFactory;
import com.sap.sse.datamining.impl.DataMiningServerImpl;
import com.sap.sse.datamining.impl.components.management.AggregationProcessorDefinitionManager;
import com.sap.sse.datamining.impl.components.management.DataRetrieverChainDefinitionManager;
import com.sap.sse.datamining.impl.components.management.DataSourceProviderManager;
import com.sap.sse.datamining.impl.components.management.FunctionManager;
import com.sap.sse.datamining.impl.components.management.QueryDefinitionDTOManager;
import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.i18n.impl.CompoundResourceBundleStringMessages;
import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
@@ -52,7 +54,12 @@ public class TestsUtil {
DataSourceProviderRegistry dataSourceProviderRegistry = new DataSourceProviderManager();
DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry = new DataRetrieverChainDefinitionManager();
AggregationProcessorDefinitionRegistry aggregationProcessorDefinitionRegistry = new AggregationProcessorDefinitionManager();
return new DataMiningServerImpl(ConcurrencyTestsUtil.getExecutor(), functionRegistry, dataSourceProviderRegistry, dataRetrieverChainDefinitionRegistry, aggregationProcessorDefinitionRegistry);
QueryDefinitionDTOProvider queryDefinitionProvider = new QueryDefinitionDTOManager();
return new DataMiningServerImpl(ConcurrencyTestsUtil.getExecutor(), functionRegistry,
dataSourceProviderRegistry,
dataRetrieverChainDefinitionRegistry,
aggregationProcessorDefinitionRegistry,
queryDefinitionProvider);
}
protected TestsUtil() { }
@@ -70,4 +70,7 @@ public interface DataMiningServer {
public <ResultType> QueryResultDTO<ResultType> convertToDTO(QueryResult<ResultType> result);
public Iterable<String> getPredefinedQueryNames();
public <ResultType> Query<ResultType> createPredefinedQuery(String name);
}
@@ -0,0 +1,10 @@
package com.sap.sse.datamining.components.management;
import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO;
public interface QueryDefinitionDTOProvider {
Iterable<String> getNames();
StatisticQueryDefinitionDTO get(String name);
}
@@ -22,6 +22,7 @@ import com.sap.sse.datamining.components.management.AggregationProcessorDefiniti
import com.sap.sse.datamining.components.management.DataRetrieverChainDefinitionRegistry;
import com.sap.sse.datamining.components.management.DataSourceProviderRegistry;
import com.sap.sse.datamining.components.management.FunctionRegistry;
import com.sap.sse.datamining.components.management.QueryDefinitionDTOProvider;
import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedDataCountAggregationProcessor;
import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedNumberDataAverageAggregationProcessor;
import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedNumberDataMaxAggregationProcessor;
@@ -32,6 +33,7 @@ import com.sap.sse.datamining.impl.components.management.AggregationProcessorDef
import com.sap.sse.datamining.impl.components.management.DataRetrieverChainDefinitionManager;
import com.sap.sse.datamining.impl.components.management.DataSourceProviderManager;
import com.sap.sse.datamining.impl.components.management.FunctionManager;
import com.sap.sse.datamining.impl.components.management.QueryDefinitionDTOManager;
import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
public class DataMiningFrameworkActivator implements BundleActivator {
@@ -57,7 +59,12 @@ public class DataMiningFrameworkActivator implements BundleActivator {
DataSourceProviderRegistry dataSourceProviderRegistry = new DataSourceProviderManager();
DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry = new DataRetrieverChainDefinitionManager();
AggregationProcessorDefinitionRegistry aggregationProcessorDefinitionRegistry = new AggregationProcessorDefinitionManager();
ModifiableDataMiningServer dataMiningServer = new DataMiningServerImpl(executor, functionRegistry, dataSourceProviderRegistry, dataRetrieverChainDefinitionRegistry, aggregationProcessorDefinitionRegistry);
QueryDefinitionDTOProvider queryDefinitionProvider = new QueryDefinitionDTOManager();
ModifiableDataMiningServer dataMiningServer = new DataMiningServerImpl(executor, functionRegistry,
dataSourceProviderRegistry,
dataRetrieverChainDefinitionRegistry,
aggregationProcessorDefinitionRegistry,
queryDefinitionProvider);
dataMiningServer.addStringMessages(new ResourceBundleStringMessagesImpl(STRING_MESSAGES_BASE_NAME, this.getClass().getClassLoader()));
for (AggregationProcessorDefinition<?, ?> aggregationProcessorDefinition : getDefaultAggregationProcessors()) {
dataMiningServer.registerAggregationProcessor(aggregationProcessorDefinition);
@@ -8,8 +8,8 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
@@ -30,6 +30,7 @@ import com.sap.sse.datamining.components.management.FunctionProvider;
import com.sap.sse.datamining.components.management.FunctionRegistry;
import com.sap.sse.datamining.components.management.MemoryMonitor;
import com.sap.sse.datamining.components.management.MemoryMonitorAction;
import com.sap.sse.datamining.components.management.QueryDefinitionDTOProvider;
import com.sap.sse.datamining.data.QueryResult;
import com.sap.sse.datamining.factories.QueryFactory;
import com.sap.sse.datamining.functions.Function;
@@ -68,11 +69,14 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
private final DataSourceProviderRegistry dataSourceProviderRegistry;
private final DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry;
private final AggregationProcessorDefinitionRegistry aggregationProcessorDefinitionRegistry;
private final QueryDefinitionDTOProvider queryDefinitionProvider;
public DataMiningServerImpl(ExecutorService executorService, FunctionRegistry functionRegistry,
DataSourceProviderRegistry dataSourceProviderRegistry,
DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry,
AggregationProcessorDefinitionRegistry aggregationProcessorDefinitionRegistry) {
AggregationProcessorDefinitionRegistry aggregationProcessorDefinitionRegistry,
QueryDefinitionDTOProvider queryDefinitionProvider) {
dataMiningClassLoaders = new HashSet<ClassLoader>();
dataMiningClassLoaders.add(this.getClass().getClassLoader());
this.stringMessages = new CompoundResourceBundleStringMessages();
@@ -86,6 +90,8 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
this.dataSourceProviderRegistry = dataSourceProviderRegistry;
this.dataRetrieverChainDefinitionRegistry = dataRetrieverChainDefinitionRegistry;
this.aggregationProcessorDefinitionRegistry = aggregationProcessorDefinitionRegistry;
this.queryDefinitionProvider = queryDefinitionProvider;
}
private Iterable<MemoryMonitorAction> createMemoryMonitorActions() {
@@ -427,5 +433,21 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
return new QueryResultDTO<ResultType>(result.getState(), result.getResultType(), result.getResults(), result.getAdditionalData());
}
@Override
public Iterable<String> getPredefinedQueryNames() {
return queryDefinitionProvider.getNames();
}
@Override
public <ResultType> Query<ResultType> createPredefinedQuery(String name) {
StatisticQueryDefinitionDTO definitionDTO = queryDefinitionProvider.get(name);
if (definitionDTO != null) {
StatisticQueryDefinition<?, ?, ?, ResultType> definition = getQueryDefinitionForDTO(definitionDTO);
if (definition != null) {
return createQuery(definition);
}
}
return null;
}
}
@@ -0,0 +1,27 @@
package com.sap.sse.datamining.impl.components.management;
import java.util.HashMap;
import java.util.Map;
import com.sap.sse.datamining.components.management.QueryDefinitionDTOProvider;
import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO;
public class QueryDefinitionDTOManager implements QueryDefinitionDTOProvider {
private final Map<String, StatisticQueryDefinitionDTO> definitionDTOsMappedByName;
public QueryDefinitionDTOManager() {
definitionDTOsMappedByName = new HashMap<>();
}
@Override
public Iterable<String> getNames() {
return definitionDTOsMappedByName.keySet();
}
@Override
public StatisticQueryDefinitionDTO get(String name) {
return definitionDTOsMappedByName.get(name);
}
}