Merge remote-tracking branch 'server/master'

This commit is contained in:
Axel Uhl committed 2015-02-10 12:40:17 +01:00
commit 34873bb0eb
56 files changed
+232 -211

No files matched your search

@@ -14,6 +14,7 @@ Require-Bundle: com.sap.sailing.domain;bundle-version="1.0.0",
com.sap.sailing.datamining.shared;bundle-version="1.0.0",
com.sap.sse.datamining;bundle-version="1.0.0",
com.sap.sse.datamining.shared;bundle-version="1.0.0",
com.sap.sse,
com.sap.sse.common
Bundle-ClassPath: .
Bundle-Activator: com.sap.sailing.datamining.Activator
@@ -14,8 +14,8 @@ import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext;
import com.sap.sailing.datamining.data.HasTrackedRaceContext;
import com.sap.sse.datamining.DataMiningBundleService;
import com.sap.sse.datamining.DataRetrieverChainDefinition;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.i18n.DataMiningStringMessagesImpl;
import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
public class Activator implements BundleActivator, DataMiningBundleService {
@@ -23,7 +23,7 @@ public class Activator implements BundleActivator, DataMiningBundleService {
private static Activator INSTANCE;
private final DataMiningStringMessages sailingDataMiningStringMessages;
private final ResourceBundleStringMessages sailingServerStringMessages;
private final SailingDataRetrieverChainDefinitions dataRetrieverChainDefinitions;
private final SailingClusterGroups clusterGroups;
@@ -31,7 +31,7 @@ public class Activator implements BundleActivator, DataMiningBundleService {
public Activator() {
dataRetrieverChainDefinitions = new SailingDataRetrieverChainDefinitions();
sailingDataMiningStringMessages = new DataMiningStringMessagesImpl(STRING_MESSAGES_BASE_NAME, Activator.class.getClassLoader());
sailingServerStringMessages = new ResourceBundleStringMessagesImpl(STRING_MESSAGES_BASE_NAME, Activator.class.getClassLoader());
clusterGroups = new SailingClusterGroups();
}
@@ -48,8 +48,8 @@ public class Activator implements BundleActivator, DataMiningBundleService {
}
@Override
public DataMiningStringMessages getStringMessages() {
return sailingDataMiningStringMessages;
public ResourceBundleStringMessages getStringMessages() {
return sailingServerStringMessages;
}
@Override
@@ -78,8 +78,6 @@ import com.sap.sse.common.Util;
import com.sap.sse.common.search.KeywordQuery;
import com.sap.sse.gwt.client.BuildVersionRetriever;
import com.sap.sse.gwt.client.filestorage.FileStorageManagementGwtServiceAsync;
import com.sap.sse.gwt.shared.filestorage.FileStorageServiceDTO;
import com.sap.sse.gwt.shared.filestorage.FileStorageServicePropertyErrorsDTO;
/**
* The async counterpart of {@link SailingService}
@@ -688,15 +686,4 @@ public interface SailingServiceAsync extends BuildVersionRetriever, FileStorageM
void createRegattaStructure(Iterable<RegattaDTO> regattaNames,
EventDTO newEvent, AsyncCallback<Void> asyncCallback);
void setFileStorageServiceProperties(String serviceName, Map<String, String> properties,
AsyncCallback<Void> callback);
void getAvailableFileStorageServices(AsyncCallback<FileStorageServiceDTO[]> callback);
void testFileStorageServiceProperties(String serviceName, AsyncCallback<FileStorageServicePropertyErrorsDTO> callback);
void setActiveFileStorageService(String serviceName, AsyncCallback<Void> callback);
void getActiveFileStorageServiceName(AsyncCallback<String> callback);
}
@@ -19,7 +19,6 @@ import com.sap.sse.datamining.Query;
import com.sap.sse.datamining.QueryDefinition;
import com.sap.sse.datamining.factories.FunctionDTOFactory;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.DataRetrieverTypeWithInformation;
import com.sap.sse.datamining.shared.QueryDefinitionDTO;
import com.sap.sse.datamining.shared.QueryResult;
@@ -27,6 +26,7 @@ import com.sap.sse.datamining.shared.SSEDataMiningSerializationDummy;
import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO;
import com.sap.sse.datamining.shared.impl.dto.LocalizedTypeDTO;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class DataMiningServiceImpl extends RemoteServiceServlet implements DataMiningService {
private static final long serialVersionUID = -7951930891674894528L;
@@ -96,12 +96,12 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
}
private Collection<FunctionDTO> functionsAsFunctionDTOs(Iterable<Function<?>> functions, String localeInfoName) {
Locale locale = DataMiningStringMessages.Util.getLocaleFor(localeInfoName);
DataMiningStringMessages dataMiningStringMessages = getDataMiningServer().getStringMessages();
Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
ResourceBundleStringMessages ServerStringMessages = getDataMiningServer().getStringMessages();
Collection<FunctionDTO> functionDTOs = new ArrayList<FunctionDTO>();
for (Function<?> function : functions) {
functionDTOs.add(functionDTOFactory.createFunctionDTO(function, dataMiningStringMessages, locale));
functionDTOs.add(functionDTOFactory.createFunctionDTO(function, ServerStringMessages, locale));
}
return functionDTOs;
}
@@ -116,8 +116,8 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
private Collection<DataRetrieverChainDefinitionDTO> dataRetrieverChainDefinitionsAsDTOs(
Iterable<DataRetrieverChainDefinition<RacingEventService, ?>> dataRetrieverChainDefinitions, String localeInfoName) {
Locale locale = DataMiningStringMessages.Util.getLocaleFor(localeInfoName);
DataMiningStringMessages dataMiningStringMessages = getDataMiningServer().getStringMessages();
Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
ResourceBundleStringMessages ServerStringMessages = getDataMiningServer().getStringMessages();
Collection<DataRetrieverChainDefinitionDTO> DTOs = new ArrayList<>();
for (DataRetrieverChainDefinition<RacingEventService, ?> dataRetrieverChainDefinition : dataRetrieverChainDefinitions) {
@@ -125,12 +125,12 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
for (DataRetrieverTypeWithInformation<?, ?> retrieverTypeWithInformation : dataRetrieverChainDefinition.getDataRetrieverTypesWithInformation()) {
String typeName = retrieverTypeWithInformation.getRetrievedDataType().getSimpleName();
String displayName = retrieverTypeWithInformation.getRetrievedDataTypeMessageKey() != null && !retrieverTypeWithInformation.getRetrievedDataTypeMessageKey().isEmpty() ?
dataMiningStringMessages.get(locale, retrieverTypeWithInformation.getRetrievedDataTypeMessageKey()) :
ServerStringMessages.get(locale, retrieverTypeWithInformation.getRetrievedDataTypeMessageKey()) :
typeName;
LocalizedTypeDTO localizedRetrievedDataType = new LocalizedTypeDTO(typeName, displayName);
retrievedDataTypesChain.add(localizedRetrievedDataType);
}
DTOs.add(new DataRetrieverChainDefinitionDTO(dataRetrieverChainDefinition.getID(), dataRetrieverChainDefinition.getLocalizedName(locale, dataMiningStringMessages),
DTOs.add(new DataRetrieverChainDefinitionDTO(dataRetrieverChainDefinition.getID(), dataRetrieverChainDefinition.getLocalizedName(locale, ServerStringMessages),
dataRetrieverChainDefinition.getDataSourceType().getSimpleName(), retrievedDataTypesChain));
}
return DTOs;
@@ -141,7 +141,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
int retrieverLevel, Iterable<FunctionDTO> dimensionDTOs, String localeInfoName) throws Exception {
DataRetrieverChainDefinition<RacingEventService, ?> retrieverChainDefinition = getDataMiningServer().getDataRetrieverChainDefinition(dataRetrieverChainDefinitionDTO.getId());
Iterable<Function<?>> dimensions = functionDTOsAsFunctions(dimensionDTOs);
Locale locale = DataMiningStringMessages.Util.getLocaleFor(localeInfoName);
Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
Query<Set<Object>> dimensionValuesQuery = getDataMiningServer().createDimensionValuesQuery(getRacingEventService(), retrieverChainDefinition, retrieverLevel, dimensions, locale);
QueryResult<Set<Object>> result = dimensionValuesQuery.run();
return result;
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
@@ -424,6 +425,7 @@ import com.sap.sse.filestorage.InvalidPropertiesException;
import com.sap.sse.gwt.server.filestorage.FileStorageServiceDTOUtils;
import com.sap.sse.gwt.shared.filestorage.FileStorageServiceDTO;
import com.sap.sse.gwt.shared.filestorage.FileStorageServicePropertyErrorsDTO;
import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.replication.OperationWithResult;
import com.sap.sse.replication.ReplicationFactory;
import com.sap.sse.replication.ReplicationMasterDescriptor;
@@ -5437,10 +5439,11 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
@Override
public FileStorageServiceDTO[] getAvailableFileStorageServices() {
public FileStorageServiceDTO[] getAvailableFileStorageServices(String localeInfoName) {
Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
List<FileStorageServiceDTO> serviceDtos = new ArrayList<>();
for (FileStorageService s : getService().getFileStorageManagementService().getAvailableFileStorageServices()) {
serviceDtos.add(FileStorageServiceDTOUtils.convert(s));
serviceDtos.add(FileStorageServiceDTOUtils.convert(s, locale));
}
return serviceDtos.toArray(new FileStorageServiceDTO[0]);
}
@@ -5458,20 +5461,21 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
@Override
public FileStorageServicePropertyErrorsDTO testFileStorageServiceProperties(String serviceName) {
public FileStorageServicePropertyErrorsDTO testFileStorageServiceProperties(String serviceName, String localeInfoName) {
Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
try {
FileStorageService service = getFileStorageService(serviceName);
if (service != null) {
service.testProperties();
}
} catch (InvalidPropertiesException e) {
return FileStorageServiceDTOUtils.convert(e);
return FileStorageServiceDTOUtils.convert(e, locale);
}
return null;
}
@Override
public void setActiveFileStorageService(String serviceName) {
public void setActiveFileStorageService(String serviceName, String localeInfoName) {
getService().getFileStorageManagementService().setActiveFileStorageService(getFileStorageService(serviceName));
}
@@ -19,7 +19,6 @@ import com.sap.sse.datamining.DataRetrieverChainDefinition;
import com.sap.sse.datamining.Query;
import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.components.GroupedDataEntry;
import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.datamining.shared.dto.FunctionDTO;
@@ -38,10 +37,11 @@ import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.datamining.test.util.components.TestLegOfCompetitorWithContextRetrievalProcessor;
import com.sap.sse.datamining.test.util.components.TestRaceWithContextRetrievalProcessor;
import com.sap.sse.datamining.test.util.components.TestRegattaRetrievalProcessor;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestDimensionsValuesQuery {
private static final DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessagesWithProductiveMessages();
private static final ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessagesWithProductiveMessages();
private static final Locale locale = Locale.ENGLISH;
private DataRetrieverChainDefinition<Collection<Test_Regatta>, Test_HasLegOfCompetitorContext> dataRetrieverChainDefinition;
@@ -26,7 +26,6 @@ import com.sap.sse.datamining.components.FilterCriterion;
import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.factories.ProcessorFactory;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.components.AbstractSimpleParallelProcessor;
import com.sap.sse.datamining.impl.components.AbstractSimpleRetrievalProcessor;
import com.sap.sse.datamining.impl.components.GroupedDataEntry;
@@ -45,10 +44,11 @@ import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.datamining.test.util.components.BlockingProcessor;
import com.sap.sse.datamining.test.util.components.NullProcessor;
import com.sap.sse.datamining.test.util.components.Number;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestProcessorQuery {
private final static DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessagesWithProductiveMessages();
private final static ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessagesWithProductiveMessages();
private ProcessorFactory processorFactory;
@@ -15,8 +15,8 @@ import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.impl.functions.MethodWrappingFunction;
import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.datamining.shared.impl.NestingCompoundGroupKey;
import com.sap.sse.datamining.shared.impl.GenericGroupKey;
import com.sap.sse.datamining.shared.impl.NestingCompoundGroupKey;
import com.sap.sse.datamining.test.util.ComponentTestsUtil;
import com.sap.sse.datamining.test.util.ConcurrencyTestsUtil;
import com.sap.sse.datamining.test.util.FunctionTestsUtil;
@@ -10,14 +10,14 @@ import org.junit.Test;
import com.sap.sse.datamining.data.Cluster;
import com.sap.sse.datamining.data.ClusterBoundary;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestClustersWithBoundaries {
private static final char INFINITE = '\u221e';
private static final DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessages();
private static final ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessages();
private static final Comparator<Integer> comparator = new ComparableComparator<Integer>();
private static final ClusterBoundary<Integer> lowerBound = new ComparatorClusterBoundary<Integer>(comparator, 0, ComparisonStrategy.GREATER_EQUALS_THAN);
@@ -15,12 +15,12 @@ import org.junit.Test;
import com.sap.sse.datamining.data.Cluster;
import com.sap.sse.datamining.data.ClusterBoundary;
import com.sap.sse.datamining.data.ClusterGroup;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestFixClusterGroup {
private static final DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessages();
private static final ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessages();
private static final Comparator<Integer> comparator = new ComparableComparator<Integer>();
private Cluster<Integer> clusterLowerThanZero;
@@ -12,17 +12,17 @@ import org.junit.Before;
import org.junit.Test;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.datamining.shared.impl.dto.FunctionDTOImpl;
import com.sap.sse.datamining.test.functions.test_classes.SimpleClassWithMarkedMethods;
import com.sap.sse.datamining.test.functions.test_classes.Test_ExternalLibraryClass;
import com.sap.sse.datamining.test.util.FunctionTestsUtil;
import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestFunctionDTOConstruction {
private static final DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessages();
private static final ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessages();
private Method dimensionMethod;
private Method sideEffectFreeValueMethod;
@@ -18,7 +18,6 @@ import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.functions.FunctionProvider;
import com.sap.sse.datamining.functions.FunctionRegistry;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.SimpleDataRetrieverChainDefinition;
import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.datamining.test.functions.registry.test_classes.Test_Named;
@@ -35,10 +34,11 @@ import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.datamining.test.util.components.TestLegOfCompetitorWithContextRetrievalProcessor;
import com.sap.sse.datamining.test.util.components.TestRaceWithContextRetrievalProcessor;
import com.sap.sse.datamining.test.util.components.TestRegattaRetrievalProcessor;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestFunctionProvider {
private static final DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessagesWithProductiveMessages();
private static final ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessagesWithProductiveMessages();
private ExpectedFunctionRegistryUtil functionRegistryUtil;
private FunctionRegistry functionRegistry;
@@ -10,11 +10,11 @@ import org.junit.Before;
import org.junit.Test;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.test.functions.test_classes.SimpleClassWithMarkedMethods;
import com.sap.sse.datamining.test.functions.test_classes.Test_ExternalLibraryClass;
import com.sap.sse.datamining.test.util.FunctionTestsUtil;
import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestMethodWrappingFunction {
@@ -49,7 +49,7 @@ public class TestMethodWrappingFunction {
@Test
public void testGetLocalizedName() {
DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessages();
ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessages();
Function<?> dimension = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(dimensionMethod);
String expectedEnglishName = "dimension-english";
@@ -10,15 +10,16 @@ import java.util.MissingResourceException;
import org.junit.Before;
import org.junit.Test;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.i18n.impl.CompoundResourceBundleStringMessages;
public class TestI18N {
private static final String SIMPLE_TEST_MESSAGE_KEY = "SimpleTestMessage";
private static final String TEST_MESSAGE_WITH_PARAMETERS = "TestMessageWithParameters";
private DataMiningStringMessages testStringMessages;
private ResourceBundleStringMessages testStringMessages;
@Before
public void initializeBundleManager() {
@@ -39,7 +40,7 @@ public class TestI18N {
@Test
public void testDynamicCompoundStringMessages() {
CompoundDataMiningStringMessages compoundStringMessages = new CompoundDataMiningStringMessages();
CompoundResourceBundleStringMessages compoundStringMessages = new CompoundResourceBundleStringMessages();
try {
compoundStringMessages.get(Locale.ENGLISH, SIMPLE_TEST_MESSAGE_KEY);
@@ -59,11 +60,11 @@ public class TestI18N {
@Test
public void testGetLocaleForLocaleInfoName() {
assertThat(DataMiningStringMessages.Util.getLocaleFor("default"), is(Locale.ENGLISH));
assertThat(DataMiningStringMessages.Util.getLocaleFor("en"), is(Locale.ENGLISH));
assertThat(DataMiningStringMessages.Util.getLocaleFor("de"), is(Locale.GERMAN));
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("default"), is(Locale.ENGLISH));
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("en"), is(Locale.ENGLISH));
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("de"), is(Locale.GERMAN));
assertThat(DataMiningStringMessages.Util.getLocaleFor("Unsupported locale info name"), is(Locale.ENGLISH));
assertThat(ResourceBundleStringMessages.Util.getLocaleFor("Unsupported locale info name"), is(Locale.ENGLISH));
}
@Test(expected=MissingResourceException.class)
@@ -1,30 +1,30 @@
package com.sap.sse.datamining.test.util;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.i18n.CompoundDataMiningStringMessages;
import com.sap.sse.datamining.impl.i18n.DataMiningStringMessagesImpl;
import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.i18n.impl.CompoundResourceBundleStringMessages;
import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
public class TestsUtil {
private static final String TEST_STRING_MESSAGES_BASE_NAME = "stringmessages/Test_StringMessages";
private static DataMiningStringMessages TEST_STRING_MESSAGES;
private static ResourceBundleStringMessages TEST_STRING_MESSAGES;
private static final String PRODUCTIVE_STRING_MESSAGES_BASE_NAME = "stringmessages/StringMessages";
private static CompoundDataMiningStringMessages EXTENDED_STRING_MESSAGES;
private static CompoundResourceBundleStringMessages EXTENDED_STRING_MESSAGES;
public static DataMiningStringMessages getTestStringMessages() {
public static ResourceBundleStringMessages getTestStringMessages() {
if (TEST_STRING_MESSAGES == null) {
TEST_STRING_MESSAGES = new DataMiningStringMessagesImpl(TEST_STRING_MESSAGES_BASE_NAME, TestsUtil.class.getClassLoader());
TEST_STRING_MESSAGES = new ResourceBundleStringMessagesImpl(TEST_STRING_MESSAGES_BASE_NAME, TestsUtil.class.getClassLoader());
}
return TEST_STRING_MESSAGES;
}
public static DataMiningStringMessages getTestStringMessagesWithProductiveMessages() {
public static ResourceBundleStringMessages getTestStringMessagesWithProductiveMessages() {
if (EXTENDED_STRING_MESSAGES == null) {
EXTENDED_STRING_MESSAGES = new CompoundDataMiningStringMessages();
EXTENDED_STRING_MESSAGES = new CompoundResourceBundleStringMessages();
EXTENDED_STRING_MESSAGES.addStringMessages(getTestStringMessages());
EXTENDED_STRING_MESSAGES.addStringMessages(new DataMiningStringMessagesImpl(PRODUCTIVE_STRING_MESSAGES_BASE_NAME, TestsUtil.class.getClassLoader()));
EXTENDED_STRING_MESSAGES.addStringMessages(new ResourceBundleStringMessagesImpl(PRODUCTIVE_STRING_MESSAGES_BASE_NAME, TestsUtil.class.getClassLoader()));
}
return EXTENDED_STRING_MESSAGES;
@@ -11,17 +11,16 @@ Export-Package: com.sap.sse.datamining,
com.sap.sse.datamining.data,
com.sap.sse.datamining.factories,
com.sap.sse.datamining.functions,
com.sap.sse.datamining.i18n,
com.sap.sse.datamining.impl,
com.sap.sse.datamining.impl.components,
com.sap.sse.datamining.impl.components.aggregators,
com.sap.sse.datamining.impl.criterias,
com.sap.sse.datamining.impl.data,
com.sap.sse.datamining.impl.functions,
com.sap.sse.datamining.impl.functions.criterias,
com.sap.sse.datamining.impl.i18n
com.sap.sse.datamining.impl.functions.criterias
Require-Bundle: com.sap.sse.datamining.shared;bundle-version="1.0.0",
com.sap.sse.common;bundle-version="1.0.0",
org.eclipse.osgi
org.eclipse.osgi,
com.sap.sse
Bundle-Activator: com.sap.sse.datamining.impl.DataMiningActivator
Bundle-ActivationPolicy: lazy
@@ -3,8 +3,8 @@ package com.sap.sse.datamining;
import java.util.Locale;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.shared.AdditionalResultData;
import com.sap.sse.i18n.ResourceBundleStringMessages;
/**
* These builders are used to collect the additional result data from different sources (e.g. the Processors)
@@ -12,7 +12,7 @@ import com.sap.sse.datamining.shared.AdditionalResultData;
*/
public interface AdditionalResultDataBuilder {
public AdditionalResultData build(long calculationTimeInNanos, DataMiningStringMessages stringMessages, Locale locale);
public AdditionalResultData build(long calculationTimeInNanos, ResourceBundleStringMessages stringMessages, Locale locale);
public void setRetrievedDataAmount(int retrievedDataAmount);
@@ -1,10 +1,10 @@
package com.sap.sse.datamining;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface DataMiningBundleService {
public DataMiningStringMessages getStringMessages();
public ResourceBundleStringMessages getStringMessages();
public Iterable<Class<?>> getInternalClassesWithMarkedMethods();
public Iterable<Class<?>> getExternalLibraryClasses();
@@ -7,16 +7,17 @@ import java.util.concurrent.ExecutorService;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.functions.FunctionProvider;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.DataRetrieverChainDefinitionProvider;
import com.sap.sse.datamining.shared.QueryDefinitionDTO;
import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface DataMiningServer {
public ExecutorService getExecutorService();
public DataMiningStringMessages getStringMessages();
public ResourceBundleStringMessages getStringMessages();
public FunctionProvider getFunctionProvider();
@@ -6,8 +6,8 @@ import java.util.UUID;
import java.util.concurrent.ExecutorService;
import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.DataRetrieverTypeWithInformation;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface DataRetrieverChainDefinition<DataSourceType, DataType> {
@@ -17,7 +17,7 @@ public interface DataRetrieverChainDefinition<DataSourceType, DataType> {
public Class<DataType> getRetrievedDataType();
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages);
public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages);
public <ResultType> void startWith(Class<Processor<DataSourceType, ResultType>> retrieverType, Class<ResultType> retrievedDataType, String retrievedDataTypeMessageKey);
@@ -1,12 +1,12 @@
package com.sap.sse.datamining;
import com.sap.sse.datamining.functions.FunctionRegistry;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface ModifiableDataMiningServer extends DataMiningServer {
public void addStringMessages(DataMiningStringMessages stringMessages);
public void removeStringMessages(DataMiningStringMessages stringMessages);
public void addStringMessages(ResourceBundleStringMessages stringMessages);
public void removeStringMessages(ResourceBundleStringMessages stringMessages);
public FunctionRegistry getFunctionRegistry();
@@ -2,11 +2,11 @@ package com.sap.sse.datamining.data;
import java.util.Locale;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface Cluster<ElementType> {
public String getAsLocalizedString(Locale locale, DataMiningStringMessages stringMessages);
public String getAsLocalizedString(Locale locale, ResourceBundleStringMessages stringMessages);
public boolean isInRange(ElementType value);
@@ -2,12 +2,12 @@ package com.sap.sse.datamining.data;
import java.util.Locale;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface ClusterGroup<ElementType> {
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages);
public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages);
public Cluster<ElementType> getClusterFor(ElementType value);
@@ -5,11 +5,11 @@ import java.util.List;
import java.util.Locale;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.shared.annotations.Connector;
import com.sap.sse.datamining.shared.annotations.Dimension;
import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.datamining.shared.impl.dto.FunctionDTOImpl;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class FunctionDTOFactory {
@@ -26,7 +26,7 @@ public class FunctionDTOFactory {
* annotation.<br>
* If the function has no message key, the function name is used as display name.
*/
public FunctionDTO createFunctionDTO(Function<?> function, DataMiningStringMessages stringMessages, Locale locale) {
public FunctionDTO createFunctionDTO(Function<?> function, ResourceBundleStringMessages stringMessages, Locale locale) {
return createFunctionDTO(function, function.getLocalizedName(locale, stringMessages));
}
@@ -10,7 +10,6 @@ import java.util.concurrent.ExecutorService;
import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.ProcessorQuery;
import com.sap.sse.datamining.impl.components.GroupedDataEntry;
import com.sap.sse.datamining.impl.components.ParallelByDimensionGroupingProcessor;
@@ -22,6 +21,7 @@ import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedDoubleD
import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedDoubleDataSumAggregationProcessor;
import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.datamining.shared.components.AggregatorType;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class ProcessorFactory {
@@ -106,7 +106,7 @@ public class ProcessorFactory {
@SuppressWarnings("unchecked")
public <DataType> Collection<Processor<DataType, GroupedDataEntry<DataType>>> createGroupingExtractorsForDimensions(Class<DataType> dataType,
Processor<GroupedDataEntry<Object>, ?> valueCollector, Iterable<Function<?>> dimensions,
DataMiningStringMessages stringMessages, Locale locale) {
ResourceBundleStringMessages stringMessages, Locale locale) {
Collection<Processor<GroupedDataEntry<Object>, ?>> extractionResultReceivers = new ArrayList<>();
extractionResultReceivers.add(valueCollector);
@@ -16,18 +16,18 @@ import com.sap.sse.datamining.QueryDefinition;
import com.sap.sse.datamining.components.FilterCriterion;
import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.ProcessorQuery;
import com.sap.sse.datamining.impl.components.GroupedDataEntry;
import com.sap.sse.datamining.impl.criterias.AndCompoundFilterCriterion;
import com.sap.sse.datamining.impl.criterias.CompoundFilterCriterion;
import com.sap.sse.datamining.impl.criterias.NullaryFunctionValuesFilterCriterion;
import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class QueryFactory {
public <DataSourceType, DataType, ResultType> Query<ResultType> createQuery(DataSourceType dataSource, QueryDefinition<DataSourceType, DataType, ResultType> queryDefinition,
DataMiningStringMessages stringMessages, ExecutorService executor) {
ResourceBundleStringMessages stringMessages, ExecutorService executor) {
return new ProcessorQuery<ResultType, DataSourceType>(dataSource, stringMessages, queryDefinition.getLocale()) {
@Override
protected Processor<DataSourceType, ?> createFirstProcessor() {
@@ -80,7 +80,7 @@ public class QueryFactory {
public <DataSource> Query<Set<Object>> createDimensionValuesQuery(DataSource dataSource,
DataRetrieverChainDefinition<DataSource, ?> dataRetrieverChainDefinition, int retrieverLevel,
Iterable<Function<?>> dimensions, Locale locale,
DataMiningStringMessages stringMessages, ExecutorService executor) {
ResourceBundleStringMessages stringMessages, ExecutorService executor) {
return new ProcessorQuery<Set<Object>, DataSource>(dataSource, stringMessages, locale) {
@Override
protected Processor<DataSource, ?> createFirstProcessor() {
@@ -3,8 +3,8 @@ package com.sap.sse.datamining.functions;
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.shared.Unit;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface Function<ReturnType> {
@@ -17,12 +17,12 @@ public interface Function<ReturnType> {
public String getSimpleName();
/**
* @return <code>true</code>, if the method {@link #getLocalizedName(Locale, DataMiningStringMessages) getLocalizedName} would return something
* @return <code>true</code>, if the method {@link #getLocalizedName(Locale, ResourceBundleStringMessages) getLocalizedName} would return something
* other than the method {@link #getSimpleName()}.
*/
public boolean isLocatable();
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages);
public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages);
/**
* Tries to invoke the function for the given <code>instance</code> without parameters.
@@ -22,7 +22,7 @@ import com.sap.sse.datamining.functions.FunctionProvider;
import com.sap.sse.datamining.functions.FunctionRegistry;
import com.sap.sse.datamining.impl.functions.RegistryFunctionProvider;
import com.sap.sse.datamining.impl.functions.SimpleFunctionRegistry;
import com.sap.sse.datamining.impl.i18n.DataMiningStringMessagesImpl;
import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
public class DataMiningActivator implements BundleActivator {
@@ -44,7 +44,7 @@ public class DataMiningActivator implements BundleActivator {
FunctionProvider functionProvider = new RegistryFunctionProvider(functionRegistry);
DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry = new SimpleDataRetrieverChainDefinitionRegistry();
dataMiningServer = new DataMiningServerImpl(executor, functionRegistry, functionProvider, dataRetrieverChainDefinitionRegistry);
dataMiningServer.addStringMessages(new DataMiningStringMessagesImpl(STRING_MESSAGES_BASE_NAME, DataMiningActivator.class.getClassLoader()));
dataMiningServer.addStringMessages(new ResourceBundleStringMessagesImpl(STRING_MESSAGES_BASE_NAME, DataMiningActivator.class.getClassLoader()));
serviceRegistrations = new HashSet<>();
}
@@ -17,14 +17,14 @@ import com.sap.sse.datamining.factories.QueryFactory;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.functions.FunctionProvider;
import com.sap.sse.datamining.functions.FunctionRegistry;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.i18n.CompoundDataMiningStringMessages;
import com.sap.sse.datamining.shared.QueryDefinitionDTO;
import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.i18n.impl.CompoundResourceBundleStringMessages;
public class DataMiningServerImpl implements ModifiableDataMiningServer {
private final CompoundDataMiningStringMessages stringMessages;
private final CompoundResourceBundleStringMessages stringMessages;
private final ExecutorService executorService;
private final QueryFactory queryFactory;
@@ -35,7 +35,7 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
private DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry;
public DataMiningServerImpl(ExecutorService executorService, FunctionRegistry functionRegistry, FunctionProvider functionProvider, DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry) {
this.stringMessages = new CompoundDataMiningStringMessages();
this.stringMessages = new CompoundResourceBundleStringMessages();
this.executorService = executorService;
this.queryFactory = new QueryFactory();
this.functionRegistry = functionRegistry;
@@ -49,17 +49,17 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
}
@Override
public DataMiningStringMessages getStringMessages() {
public ResourceBundleStringMessages getStringMessages() {
return stringMessages;
}
@Override
public void addStringMessages(DataMiningStringMessages stringMessages) {
public void addStringMessages(ResourceBundleStringMessages stringMessages) {
this.stringMessages.addStringMessages(stringMessages);
}
@Override
public void removeStringMessages(DataMiningStringMessages stringMessages) {
public void removeStringMessages(ResourceBundleStringMessages stringMessages) {
this.stringMessages.removeStringMessages(stringMessages);
}
@@ -154,7 +154,7 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
public <DataSourceType, DataType, ResultType> QueryDefinition<DataSourceType, DataType, ResultType> getQueryDefinitionForDTO(QueryDefinitionDTO queryDefinitionDTO) {
ModifiableQueryDefinition<DataSourceType, DataType, ResultType> queryDefinition = null;
Locale locale = DataMiningStringMessages.Util.getLocaleFor(queryDefinitionDTO.getLocaleInfoName());
Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(queryDefinitionDTO.getLocaleInfoName());
DataRetrieverChainDefinition<DataSourceType, DataType> retrieverChain = getDataRetrieverChainDefinition(queryDefinitionDTO.getDataRetrieverChainDefinition().getId());
@SuppressWarnings("unchecked")
Function<ResultType> statisticToCalculate = (Function<ResultType>) getFunctionForDTO(queryDefinitionDTO.getStatisticToCalculate());
@@ -16,11 +16,11 @@ import java.util.logging.Logger;
import com.sap.sse.datamining.AdditionalResultDataBuilder;
import com.sap.sse.datamining.Query;
import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.impl.components.OverwritingResultDataBuilder;
import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.datamining.shared.QueryResult;
import com.sap.sse.datamining.shared.impl.QueryResultImpl;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public abstract class ProcessorQuery<AggregatedType, DataSourceType> implements Query<AggregatedType> {
@@ -31,7 +31,7 @@ public abstract class ProcessorQuery<AggregatedType, DataSourceType> implements
private final ProcessResultReceiver resultReceiver;
private final DataMiningStringMessages stringMessages;
private final ResourceBundleStringMessages stringMessages;
private final Locale locale;
private final Object monitorObject = new Object();
@@ -50,7 +50,7 @@ public abstract class ProcessorQuery<AggregatedType, DataSourceType> implements
/**
* Creates a query that returns a result with additional data.
*/
public ProcessorQuery(DataSourceType dataSource, DataMiningStringMessages stringMessages, Locale locale) {
public ProcessorQuery(DataSourceType dataSource, ResourceBundleStringMessages stringMessages, Locale locale) {
this.dataSource = dataSource;
this.stringMessages = stringMessages;
this.locale = locale;
@@ -10,7 +10,7 @@ import java.util.concurrent.ExecutorService;
import com.sap.sse.datamining.DataRetrieverChainBuilder;
import com.sap.sse.datamining.DataRetrieverChainDefinition;
import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class SimpleDataRetrieverChainDefinition<DataSourceType, DataType> implements
DataRetrieverChainDefinition<DataSourceType, DataType> {
@@ -46,7 +46,7 @@ public class SimpleDataRetrieverChainDefinition<DataSourceType, DataType> implem
}
@Override
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages) {
public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages) {
return stringMessages.get(locale, nameMessageKey);
}
@@ -4,10 +4,10 @@ import java.util.Locale;
import com.sap.sse.datamining.AdditionalResultDataBuilder;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.shared.AdditionalResultData;
import com.sap.sse.datamining.shared.Unit;
import com.sap.sse.datamining.shared.impl.AdditionalResultDataImpl;
import com.sap.sse.i18n.ResourceBundleStringMessages;
/**
* For general information see {@link AdditionalResultDataBuilder}.<br />
@@ -35,11 +35,11 @@ public class OverwritingResultDataBuilder implements AdditionalResultDataBuilder
}
@Override
public AdditionalResultData build(long calculationTimeInNanos, DataMiningStringMessages stringMessages, Locale locale) {
public AdditionalResultData build(long calculationTimeInNanos, ResourceBundleStringMessages stringMessages, Locale locale) {
return new AdditionalResultDataImpl(retrievedDataAmount, buildResultSignifier(stringMessages, locale), unit, resultDecimals, calculationTimeInNanos);
}
private String buildResultSignifier(DataMiningStringMessages stringMessages, Locale locale) {
private String buildResultSignifier(ResourceBundleStringMessages stringMessages, Locale locale) {
if (extractionFunction == null || aggregationNameMessageKey == null) {
return "";
}
@@ -8,10 +8,10 @@ import java.util.concurrent.ExecutorService;
import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.factories.FunctionDTOFactory;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.datamining.shared.impl.GenericGroupKey;
import com.sap.sse.i18n.ResourceBundleStringMessages;
/**
* Takes a dimension and groups the given elements by the dimensions {@link FunctionDTO}.
@@ -21,7 +21,7 @@ import com.sap.sse.datamining.shared.impl.GenericGroupKey;
public class ParallelByDimensionGroupingProcessor<DataType> extends
AbstractParallelMultiDimensionalNestingGroupingProcessor<DataType> {
private final DataMiningStringMessages stringMessages;
private final ResourceBundleStringMessages stringMessages;
private final Locale locale;
private final FunctionDTOFactory functionDTOFactory;
@@ -30,7 +30,7 @@ public class ParallelByDimensionGroupingProcessor<DataType> extends
ExecutorService executor,
Collection<Processor<GroupedDataEntry<DataType>, ?>> resultReceivers,
Function<?> dimension,
DataMiningStringMessages stringMessages, Locale locale) {
ResourceBundleStringMessages stringMessages, Locale locale) {
super(dataType, executor, resultReceivers, asIterable(dimension));
this.stringMessages = stringMessages;
this.locale = locale;
@@ -6,7 +6,7 @@ import java.util.Locale;
import com.sap.sse.datamining.data.Cluster;
import com.sap.sse.datamining.data.ClusterBoundary;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public abstract class AbstractCluster<ElementType> implements Cluster<ElementType> {
@@ -34,7 +34,7 @@ public abstract class AbstractCluster<ElementType> implements Cluster<ElementTyp
}
@Override
public String getAsLocalizedString(Locale locale, DataMiningStringMessages stringMessages) {
public String getAsLocalizedString(Locale locale, ResourceBundleStringMessages stringMessages) {
return stringMessages.get(locale, messageKey) + " " + getBoundariesAsString();
}
@@ -6,7 +6,7 @@ import java.util.Locale;
import com.sap.sse.datamining.data.Cluster;
import com.sap.sse.datamining.data.ClusterGroup;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class FixClusterGroup<ElementType> implements ClusterGroup<ElementType> {
@@ -34,7 +34,7 @@ public class FixClusterGroup<ElementType> implements ClusterGroup<ElementType> {
}
@Override
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages) {
public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages) {
return stringMessages.get(locale, messageKey);
}
@@ -6,8 +6,8 @@ import java.util.List;
import java.util.Locale;
import com.sap.sse.datamining.functions.Function;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.shared.Unit;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class ConcatenatingCompoundFunction<ReturnType> extends AbstractFunction<ReturnType> {
@@ -86,7 +86,7 @@ public class ConcatenatingCompoundFunction<ReturnType> extends AbstractFunction<
}
@Override
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages) {
public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages) {
if (name != null && !name.isEmpty()) {
return name;
}
@@ -107,7 +107,7 @@ public class ConcatenatingCompoundFunction<ReturnType> extends AbstractFunction<
return false;
}
private String buildLocalizedNameChain(Locale locale, DataMiningStringMessages stringMessages) {
private String buildLocalizedNameChain(Locale locale, ResourceBundleStringMessages stringMessages) {
StringBuilder builder = new StringBuilder();
boolean first = true;
for (Function<?> function : functions) {
@@ -6,11 +6,11 @@ import java.util.Arrays;
import java.util.Locale;
import java.util.logging.Level;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.shared.Unit;
import com.sap.sse.datamining.shared.annotations.Connector;
import com.sap.sse.datamining.shared.annotations.Dimension;
import com.sap.sse.datamining.shared.annotations.Statistic;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class MethodWrappingFunction<ReturnType> extends AbstractFunction<ReturnType> {
@@ -115,7 +115,7 @@ public class MethodWrappingFunction<ReturnType> extends AbstractFunction<ReturnT
}
@Override
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages) {
public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages) {
if (!isLocatable()) {
return getSimpleName();
}
@@ -0,0 +1,7 @@
s3Desc=Dateien in Amazon S3 speichern. Dateiname wird als aus zufälliger UUID und original Dateiendung generiert.
s3AccessIdDesc=Zugriffs-ID (leer lassen, um ~/.aws/credentials zu benutzen)
s3AccessKeyDesc=Geheimer Zugrifss-Schlüssel (leer lassen, um ~/.aws/credentials zu benutzen)
s3BucketNameDesc=Name des "Buckets" der benutzt werden soll (muss in S3 existieren, und die Zugriffsrechte müssen korrekt gesetzt sein).
localDesc=Dateien werden im lokalen Dateisystem gespeichert. Sie werden in localPath+fileName gespeichert, der Zugriff erfolgt über baseUrl+fileName. Bitte beachten: baseUrl muss auch für andere Server-Instanzen erreichbar sein. Das kann z.B. durch ein Mounten eines auf static.sapsailing.com gehosteten Netwerk-Dateisystems unter localPath erreicht werden.
localBaseUrlDesc=Base URL + fileName = URL unter der die hochgeladene Datei erreichbar ist
localLocalPathDesc=Lokaler Pfad zum Ablegen der Dateien
@@ -0,0 +1,7 @@
s3Desc=Store files on Amazon S3. The resulting file name is a random UUID plus the original file ending.
s3AccessIdDesc=Access ID (leave blank to use ~/.aws/credentials instead)
s3AccessKeyDesc=Secret Access Key (leave blank to use ~/.aws/credentials instead)
s3BucketNameDesc=Name of Bucket to use (has to already exist, and user needs sufficient permissions)
localDesc=Service for storing files in the local file system. Files get stored in localPath+fileName and can be accessed at baseUrl+fileName Note that the content lying in baseUrl must therefore be accessible remotely. This can for examplebe achieved by mounting a remote file system for example from static.sapsailing.com on the replicas to localPath.
localBaseUrlDesc=Base URL + fileName = URL where uploaded file will be accessible
localLocalPathDesc=Local Path to use for file storage
@@ -4,6 +4,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.net.URI;
import java.util.Locale;
import com.sap.sse.common.IsManagedByCache;
import com.sap.sse.common.TypeBasedServiceFinder;
@@ -50,7 +51,7 @@ public interface FileStorageService extends IsManagedByCache<FileStorageServiceR
/**
* Description text that explains the storage service.
*/
String getDescription();
String getDescription(Locale locale);
/**
* Test whether properties are valid, e.g. by trying to log in using access credentials provided as properties.
@@ -1,6 +1,7 @@
package com.sap.sse.filestorage;
import java.io.Serializable;
import java.util.Locale;
/**
* Property of a file storage service.
@@ -15,5 +16,5 @@ public interface FileStorageServiceProperty extends Serializable {
* @return {@code null} if not yet initialized
*/
String getValue();
String getDescription();
String getDescription(Locale locale);
}
@@ -35,8 +35,7 @@ import com.sap.sse.filestorage.OperationFailedException;
public class AmazonS3FileStorageServiceImpl extends BaseFileStorageServiceImpl implements FileStorageService {
private static final long serialVersionUID = -2406798172882732531L;
public static final String NAME = "Amazon S3";
public static final String DESCRIPTION = "Store files on Amazon S3. The resulting file name is a random UUID plus the original file ending.";
private static final Logger logger = Logger.getLogger(AmazonS3FileStorageServiceImpl.class.getName());
private static final String baseUrl = "s3.amazonaws.com";
@@ -44,14 +43,14 @@ public class AmazonS3FileStorageServiceImpl extends BaseFileStorageServiceImpl i
// private static final String bucketName = "ftes-sap-sailing";
private final FileStorageServicePropertyImpl accessId = new FileStorageServicePropertyImpl("accessId", false,
"Access ID (leave blank to use ~/.aws/credentials instead)");
"s3AccessIdDesc");
private final FileStorageServicePropertyImpl accessKey = new FileStorageServicePropertyImpl("accessKey", false,
"Secret Access Key (leave blank to use ~/.aws/credentials instead)");
"s3AccessKeyDesc");
private final FileStorageServicePropertyImpl bucketName = new FileStorageServicePropertyImpl("bucketName", true,
"Name of Bucket to use (has to already exist, and user needs sufficient permissions)");
"s3BucketNameDesc");
public AmazonS3FileStorageServiceImpl() {
super(NAME, DESCRIPTION);
super(NAME, "s3Desc");
addProperties(accessId, accessKey, bucketName);
}
@@ -102,15 +101,15 @@ public class AmazonS3FileStorageServiceImpl extends BaseFileStorageServiceImpl i
.withCannedAcl(CannedAccessControlList.PublicRead);
final AmazonS3Client s3Client = createS3Client();
new Thread() {
public void run() {
try {
s3Client.putObject(request);
} catch (AmazonClientException e) {
logger.log(Level.WARNING, "Could not store file", e);
}
};
}.run();
new Thread() {
public void run() {
try {
s3Client.putObject(request);
} catch (AmazonClientException e) {
logger.log(Level.WARNING, "Could not store file", e);
}
};
}.run();
URI uri = getUri(key);
logger.info("Stored file " + uri);
return uri;
@@ -138,14 +137,14 @@ public class AmazonS3FileStorageServiceImpl extends BaseFileStorageServiceImpl i
s3.doesBucketExist(bucketName.getValue());
} catch (Exception e) {
throw new InvalidPropertiesException("invalid credentials or not enough access rights for the bucket", e,
new Pair<FileStorageServiceProperty, String>(accessId, "seems to be invalid"), new Pair<FileStorageServiceProperty, String>(accessKey,
"seems to be invalid"));
new Pair<FileStorageServiceProperty, String>(accessId, "seems to be invalid"),
new Pair<FileStorageServiceProperty, String>(accessKey, "seems to be invalid"));
}
// test if bucket exists
if (!s3.doesBucketExist(bucketName.getValue())) {
throw new InvalidPropertiesException("invalid bucket", new Pair<FileStorageServiceProperty, String>(bucketName,
"bucket does not exist"));
throw new InvalidPropertiesException("invalid bucket", new Pair<FileStorageServiceProperty, String>(
bucketName, "bucket does not exist"));
}
}
}
@@ -1,6 +1,7 @@
package com.sap.sse.filestorage.impl;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
import com.sap.sse.common.IsManagedByCache;
@@ -11,12 +12,12 @@ import com.sap.sse.filestorage.FileStorageServiceResolver;
public abstract class BaseFileStorageServiceImpl implements FileStorageService {
private static final long serialVersionUID = 7787261863522200165L;
private final String name;
private final String description;
private final String descriptionKey;
protected final Map<String, FileStorageServicePropertyImpl> propertiesByNameInInsertionOrder = new LinkedHashMap<>();
protected BaseFileStorageServiceImpl(String name, String description) {
protected BaseFileStorageServiceImpl(String name, String descriptionKey) {
this.name = name;
this.description = description;
this.descriptionKey = descriptionKey;
}
protected void addProperties(FileStorageServicePropertyImpl... properties) {
@@ -31,8 +32,8 @@ public abstract class BaseFileStorageServiceImpl implements FileStorageService {
}
@Override
public String getDescription() {
return description;
public String getDescription(Locale locale) {
return FileStorageI18n.STRING_MESSAGES.get(locale, descriptionKey);
}
@Override
@@ -0,0 +1,10 @@
package com.sap.sse.filestorage.impl;
import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
public class FileStorageI18n {
private static final String RESOURCE_BASE_NAME = "stringmessages/FileStorageStringMessages";
public static final ResourceBundleStringMessages STRING_MESSAGES = new ResourceBundleStringMessagesImpl(RESOURCE_BASE_NAME, FileStorageI18n.class.getClassLoader());
}
@@ -1,22 +1,19 @@
package com.sap.sse.filestorage.impl;
import java.util.Locale;
import com.sap.sse.filestorage.FileStorageServiceProperty;
public class FileStorageServicePropertyImpl implements FileStorageServiceProperty {
private static final long serialVersionUID = -8418630141746910125L;
private final boolean isRequired;
private final String name;
private final String description;
private final String descriptionKey;
private String value;
public FileStorageServicePropertyImpl(String name, boolean isRequired, String description) {
this(name, isRequired, description, null);
}
public FileStorageServicePropertyImpl(String name, boolean isRequired, String description, String value) {
public FileStorageServicePropertyImpl(String name, boolean isRequired, String descriptionKey) {
this.name = name;
this.description = description;
this.value = value;
this.descriptionKey = descriptionKey;
this.isRequired = isRequired;
}
@@ -36,8 +33,8 @@ public class FileStorageServicePropertyImpl implements FileStorageServicePropert
}
@Override
public String getDescription() {
return description;
public String getDescription(Locale locale) {
return FileStorageI18n.STRING_MESSAGES.get(locale, descriptionKey);
}
public void setValue(String value) {
@@ -38,17 +38,15 @@ public class LocalFileStorageServiceImpl extends BaseFileStorageServiceImpl impl
private static final long serialVersionUID = -8661781258137340835L;
private static final String testFile = "Bundesliga2014_Regatta6_eventteaser.jpg";
public static final String NAME = "Local Storage";
public static final String DESCRIPTION = "Service for storing files in the local file system. Files get stored in localPath+fileName and can be accessed at baseUrl+fileName Note that the content lying in baseUrl must therefore be accessible remotely. This can for examplebe achieved by mounting a remote file system for example from static.sapsailing.com on the replicas to localPath.";
private static final Logger logger = Logger.getLogger(LocalFileStorageServiceImpl.class.getName());
private final FileStorageServicePropertyImpl baseURL = new FileStorageServicePropertyImpl("baseURL", true,
"Base URL: Base URL + fileName = URL where uploaded file will be accessible");
private final FileStorageServicePropertyImpl localPath = new FileStorageServicePropertyImpl("localPath", true, "Local Path to use for file storage");
private final FileStorageServicePropertyImpl baseURL = new FileStorageServicePropertyImpl("baseURL", true, "localBaseUrlDesc");
private final FileStorageServicePropertyImpl localPath = new FileStorageServicePropertyImpl("localPath", true, "localLocalPathDesc");
protected LocalFileStorageServiceImpl() {
super(NAME, DESCRIPTION);
super(NAME, "localDesc");
addProperties(baseURL, localPath);
}
-9
View File
@@ -27,15 +27,6 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/AsyncActionsExecutorTest.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
@@ -12,6 +12,7 @@ import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
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.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
@@ -25,6 +26,8 @@ import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.ListDataProvider;
import com.sap.sse.filestorage.FileStorageManagementService;
import com.sap.sse.filestorage.FileStorageService;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.controls.TabbingTextInputCell;
import com.sap.sse.gwt.client.filestorage.FileStorageManagementGwtServiceAsync;
@@ -182,7 +185,7 @@ public class FileStoragePanel extends FlowPanel {
* @param callback
*/
private void testProperties(final Callback<Void, Void> callback) {
sailingService.testFileStorageServiceProperties(getSelectedServiceName(),
sailingService.testFileStorageServiceProperties(getSelectedServiceName(), getLocaleInfo(),
new AsyncCallback<FileStorageServicePropertyErrorsDTO>() {
@Override
public void onSuccess(FileStorageServicePropertyErrorsDTO result) {
@@ -243,7 +246,7 @@ public class FileStoragePanel extends FlowPanel {
saveAndTestProperties(new Callback<Void, Void>() {
@Override
public void onSuccess(Void result) {
sailingService.setActiveFileStorageService(getSelectedServiceName(), new AsyncCallback<Void>() {
sailingService.setActiveFileStorageService(getSelectedServiceName(), getLocaleInfo(), new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
activeServiceLabel.setText(getSelectedServiceName());
@@ -276,6 +279,10 @@ public class FileStoragePanel extends FlowPanel {
serviceDescriptionLabel.setText(selected.description);
properties.addAll(Arrays.asList(selected.properties));
}
private String getLocaleInfo() {
return LocaleInfo.getCurrentLocale().getLocaleName();
}
private void refresh() {
String oldSelectedService = getSelectedServiceName();
@@ -299,7 +306,7 @@ public class FileStoragePanel extends FlowPanel {
}
});
sailingService.getAvailableFileStorageServices(new AsyncCallback<FileStorageServiceDTO[]>() {
sailingService.getAvailableFileStorageServices(getLocaleInfo(), new AsyncCallback<FileStorageServiceDTO[]>() {
@Override
public void onSuccess(FileStorageServiceDTO[] result) {
for (FileStorageServiceDTO service : result) {
@@ -15,17 +15,17 @@ import com.sap.sse.gwt.shared.filestorage.FileStorageServicePropertyErrorsDTO;
*/
public interface FileStorageManagementGwtService extends RemoteService {
FileStorageServiceDTO[] getAvailableFileStorageServices();
FileStorageServiceDTO[] getAvailableFileStorageServices(String localeInfoName);
/**
* @throws NoCorrespondingServiceRegisteredException service may have disappeared from registry in the meantime
*/
FileStorageServicePropertyErrorsDTO testFileStorageServiceProperties(String serviceName) throws NoCorrespondingServiceRegisteredException;
FileStorageServicePropertyErrorsDTO testFileStorageServiceProperties(String serviceName, String localeInfoName) throws NoCorrespondingServiceRegisteredException;
/**
* @throws NoCorrespondingServiceRegisteredException service may have disappeared from registry in the meantime
*/
void setActiveFileStorageService(String serviceName) throws NoCorrespondingServiceRegisteredException;
void setActiveFileStorageService(String serviceName, String localeInfoName) throws NoCorrespondingServiceRegisteredException;
/**
* @return may be {@code null}
@@ -10,14 +10,14 @@ public interface FileStorageManagementGwtServiceAsync {
void getActiveFileStorageServiceName(AsyncCallback<String> callback);
void getAvailableFileStorageServices(AsyncCallback<FileStorageServiceDTO[]> callback);
void getAvailableFileStorageServices(String localeInfoName, AsyncCallback<FileStorageServiceDTO[]> callback);
void setActiveFileStorageService(String serviceName, AsyncCallback<Void> callback);
void setActiveFileStorageService(String serviceName, String localeInfoName, AsyncCallback<Void> callback);
void setFileStorageServiceProperties(String serviceName, Map<String, String> properties,
AsyncCallback<Void> callback);
void testFileStorageServiceProperties(String serviceName,
void testFileStorageServiceProperties(String serviceName, String localeInfoName,
AsyncCallback<FileStorageServicePropertyErrorsDTO> callback);
}
@@ -3,6 +3,7 @@ package com.sap.sse.gwt.server.filestorage;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
@@ -14,23 +15,23 @@ import com.sap.sse.gwt.shared.filestorage.FileStorageServicePropertyDTO;
import com.sap.sse.gwt.shared.filestorage.FileStorageServicePropertyErrorsDTO;
public class FileStorageServiceDTOUtils {
public static FileStorageServicePropertyDTO convert(FileStorageServiceProperty p) {
return new FileStorageServicePropertyDTO(p.isRequired(), p.getName(), p.getValue(), p.getDescription());
public static FileStorageServicePropertyDTO convert(FileStorageServiceProperty p, Locale locale) {
return new FileStorageServicePropertyDTO(p.isRequired(), p.getName(), p.getValue(), p.getDescription(locale));
}
public static FileStorageServicePropertyErrorsDTO convert(InvalidPropertiesException e) {
public static FileStorageServicePropertyErrorsDTO convert(InvalidPropertiesException e, Locale locale) {
Map<FileStorageServicePropertyDTO, String> msgs = new HashMap<>();
for (Entry<FileStorageServiceProperty, String> entry : e.getPerPropertyMessage().entrySet()) {
msgs.put(convert(entry.getKey()), entry.getValue());
msgs.put(convert(entry.getKey(), locale), entry.getValue());
}
return new FileStorageServicePropertyErrorsDTO(e.getMessage(), msgs);
}
public static FileStorageServiceDTO convert(FileStorageService s) {
public static FileStorageServiceDTO convert(FileStorageService s, Locale locale) {
List<FileStorageServicePropertyDTO> pDtos = new ArrayList<>();
for (FileStorageServiceProperty p : s.getProperties()) {
pDtos.add(convert(p));
pDtos.add(convert(p, locale));
}
return new FileStorageServiceDTO(s.getName(), s.getDescription(), pDtos.toArray(new FileStorageServicePropertyDTO[0]));
return new FileStorageServiceDTO(s.getName(), s.getDescription(locale), pDtos.toArray(new FileStorageServicePropertyDTO[0]));
}
}
+2
View File
@@ -7,6 +7,8 @@ Bundle-Vendor: SAP
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: com.sap.sse,
com.sap.sse.gateway,
com.sap.sse.i18n,
com.sap.sse.i18n.impl,
com.sap.sse.osgi,
com.sap.sse.util,
com.sap.sse.util.impl,
@@ -1,10 +1,13 @@
package com.sap.sse.datamining.i18n;
package com.sap.sse.i18n;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public interface DataMiningStringMessages {
/**
* Allow server-side internationalization similar to GWT client-side by using property files.
*/
public interface ResourceBundleStringMessages {
public String getResourceBaseName();
@@ -1,4 +1,4 @@
package com.sap.sse.datamining.impl.i18n;
package com.sap.sse.i18n.impl;
import java.util.Collection;
import java.util.HashMap;
@@ -10,27 +10,30 @@ import java.util.MissingResourceException;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class CompoundDataMiningStringMessages implements DataMiningStringMessages {
/**
* Combine several {@link ResourceBundleStringMessages}.
*/
public class CompoundResourceBundleStringMessages implements ResourceBundleStringMessages {
private static final Logger LOGGER = Logger.getLogger(CompoundDataMiningStringMessages.class.getSimpleName());
private static final Logger LOGGER = Logger.getLogger(CompoundResourceBundleStringMessages.class.getSimpleName());
private final Collection<DataMiningStringMessages> stringMessages;
private final Collection<ResourceBundleStringMessages> stringMessages;
public CompoundDataMiningStringMessages() {
public CompoundResourceBundleStringMessages() {
stringMessages = new HashSet<>();
}
public CompoundDataMiningStringMessages(Collection<DataMiningStringMessages> stringMessages) {
public CompoundResourceBundleStringMessages(Collection<ResourceBundleStringMessages> stringMessages) {
this.stringMessages = new HashSet<>(stringMessages);
}
public void addStringMessages(DataMiningStringMessages stringMessages) {
public void addStringMessages(ResourceBundleStringMessages stringMessages) {
this.stringMessages.add(stringMessages);
}
public void removeStringMessages(DataMiningStringMessages stringMessages) {
public void removeStringMessages(ResourceBundleStringMessages stringMessages) {
this.stringMessages.remove(stringMessages);
}
@@ -41,8 +44,8 @@ public class CompoundDataMiningStringMessages implements DataMiningStringMessage
@Override
public String get(Locale locale, String messageKey, String... parameters) {
Map<DataMiningStringMessages, String> messages = new HashMap<>();
for (DataMiningStringMessages stringMessages : this.stringMessages) {
Map<ResourceBundleStringMessages, String> messages = new HashMap<>();
for (ResourceBundleStringMessages stringMessages : this.stringMessages) {
try {
messages.put(stringMessages, stringMessages.get(locale, messageKey, parameters));
} catch (MissingResourceException e) {
@@ -51,10 +54,10 @@ public class CompoundDataMiningStringMessages implements DataMiningStringMessage
return getBestMessageAndLogConflicts(messageKey, messages);
}
private String getBestMessageAndLogConflicts(String messageKey, Map<DataMiningStringMessages, String> messages) throws MissingResourceException {
private String getBestMessageAndLogConflicts(String messageKey, Map<ResourceBundleStringMessages, String> messages) throws MissingResourceException {
String bestMessageResourceBaseName = null;
String bestMessage = null;
for (Entry<DataMiningStringMessages, String> messagesEntry : messages.entrySet()) {
for (Entry<ResourceBundleStringMessages, String> messagesEntry : messages.entrySet()) {
String message = messagesEntry.getValue();
if (message != null) {
if (bestMessage == null) {
@@ -74,7 +77,7 @@ public class CompoundDataMiningStringMessages implements DataMiningStringMessage
}
private void logPossibleConflicts(String messageKey, String bestMessageResourceBaseName, String bestMessage,
Entry<DataMiningStringMessages, String> messagesEntry) {
Entry<ResourceBundleStringMessages, String> messagesEntry) {
String messageResourceBaseName = messagesEntry.getKey().getResourceBaseName();
String message = messagesEntry.getValue();
@@ -1,11 +1,11 @@
package com.sap.sse.datamining.impl.i18n;
package com.sap.sse.i18n.impl;
import java.util.Locale;
import java.util.ResourceBundle;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class DataMiningStringMessagesImpl implements DataMiningStringMessages {
public class ResourceBundleStringMessagesImpl implements ResourceBundleStringMessages {
private static final String MESSAGE_PARAMETER_START = "\\{";
private static final String MESSAGE_PARAMETER_END = "\\}";
@@ -13,7 +13,7 @@ public class DataMiningStringMessagesImpl implements DataMiningStringMessages {
private final String resourceBaseName;
private final ClassLoader resourceClassLoader;
public DataMiningStringMessagesImpl(String resourceBaseName, ClassLoader resourceClassLoader) {
public ResourceBundleStringMessagesImpl(String resourceBaseName, ClassLoader resourceClassLoader) {
this.resourceBaseName = resourceBaseName;
this.resourceClassLoader = resourceClassLoader;
}