mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-12 05:35:31 +00:00
Implemented preparations for predefined queries
This commit is contained in:
1 parent
4649f362d2
commit
9e64fa6a78
17 files changed
+337
-21
No files matched your search
+3
@@ -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();
|
||||
}
|
||||
+4
-1
@@ -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
|
||||
+4
-1
@@ -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
|
||||
+4
-1
@@ -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
|
||||
+4
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
@@ -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();
|
||||
|
||||
}
|
||||
+3
@@ -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
|
||||
|
||||
+188
@@ -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";
|
||||
}
|
||||
|
||||
}
|
||||
+14
-12
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
+21
@@ -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;
|
||||
|
||||
+9
-2
@@ -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);
|
||||
|
||||
+8
-1
@@ -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);
|
||||
|
||||
}
|
||||
+10
@@ -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);
|
||||
|
||||
}
|
||||
+8
-1
@@ -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);
|
||||
|
||||
+24
-2
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+27
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user