Merge branch 'ftes-file-storage-i18n'

This commit is contained in:
Fredrik Teschke committed 2015-02-09 21:23:44 +01:00
commit f4db3f7a30
54 files changed
+231 -201

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.sailing.datamining.shared;bundle-version="1.0.0",
com.sap.sse.datamining;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.datamining.shared;bundle-version="1.0.0",
com.sap.sse,
com.sap.sse.common com.sap.sse.common
Bundle-ClassPath: . Bundle-ClassPath: .
Bundle-Activator: com.sap.sailing.datamining.Activator 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.sailing.datamining.data.HasTrackedRaceContext;
import com.sap.sse.datamining.DataMiningBundleService; import com.sap.sse.datamining.DataMiningBundleService;
import com.sap.sse.datamining.DataRetrieverChainDefinition; import com.sap.sse.datamining.DataRetrieverChainDefinition;
import com.sap.sse.datamining.i18n.DataMiningStringMessages; import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.datamining.impl.i18n.DataMiningStringMessagesImpl; import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
public class Activator implements BundleActivator, DataMiningBundleService { public class Activator implements BundleActivator, DataMiningBundleService {
@@ -23,7 +23,7 @@ public class Activator implements BundleActivator, DataMiningBundleService {
private static Activator INSTANCE; private static Activator INSTANCE;
private final DataMiningStringMessages sailingDataMiningStringMessages; private final ResourceBundleStringMessages sailingServerStringMessages;
private final SailingDataRetrieverChainDefinitions dataRetrieverChainDefinitions; private final SailingDataRetrieverChainDefinitions dataRetrieverChainDefinitions;
private final SailingClusterGroups clusterGroups; private final SailingClusterGroups clusterGroups;
@@ -31,7 +31,7 @@ public class Activator implements BundleActivator, DataMiningBundleService {
public Activator() { public Activator() {
dataRetrieverChainDefinitions = new SailingDataRetrieverChainDefinitions(); 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(); clusterGroups = new SailingClusterGroups();
} }
@@ -48,8 +48,8 @@ public class Activator implements BundleActivator, DataMiningBundleService {
} }
@Override @Override
public DataMiningStringMessages getStringMessages() { public ResourceBundleStringMessages getStringMessages() {
return sailingDataMiningStringMessages; return sailingServerStringMessages;
} }
@Override @Override
@@ -78,8 +78,6 @@ import com.sap.sse.common.Util;
import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.KeywordQuery;
import com.sap.sse.gwt.client.BuildVersionRetriever; import com.sap.sse.gwt.client.BuildVersionRetriever;
import com.sap.sse.gwt.client.filestorage.FileStorageManagementGwtServiceAsync; 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} * The async counterpart of {@link SailingService}
@@ -688,15 +686,4 @@ public interface SailingServiceAsync extends BuildVersionRetriever, FileStorageM
void createRegattaStructure(Iterable<RegattaDTO> regattaNames, void createRegattaStructure(Iterable<RegattaDTO> regattaNames,
EventDTO newEvent, AsyncCallback<Void> asyncCallback); 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.QueryDefinition;
import com.sap.sse.datamining.factories.FunctionDTOFactory; import com.sap.sse.datamining.factories.FunctionDTOFactory;
import com.sap.sse.datamining.functions.Function; 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.impl.DataRetrieverTypeWithInformation;
import com.sap.sse.datamining.shared.QueryDefinitionDTO; import com.sap.sse.datamining.shared.QueryDefinitionDTO;
import com.sap.sse.datamining.shared.QueryResult; 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.dto.FunctionDTO;
import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO;
import com.sap.sse.datamining.shared.impl.dto.LocalizedTypeDTO; import com.sap.sse.datamining.shared.impl.dto.LocalizedTypeDTO;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class DataMiningServiceImpl extends RemoteServiceServlet implements DataMiningService { public class DataMiningServiceImpl extends RemoteServiceServlet implements DataMiningService {
private static final long serialVersionUID = -7951930891674894528L; 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) { private Collection<FunctionDTO> functionsAsFunctionDTOs(Iterable<Function<?>> functions, String localeInfoName) {
Locale locale = DataMiningStringMessages.Util.getLocaleFor(localeInfoName); Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
DataMiningStringMessages dataMiningStringMessages = getDataMiningServer().getStringMessages(); ResourceBundleStringMessages ServerStringMessages = getDataMiningServer().getStringMessages();
Collection<FunctionDTO> functionDTOs = new ArrayList<FunctionDTO>(); Collection<FunctionDTO> functionDTOs = new ArrayList<FunctionDTO>();
for (Function<?> function : functions) { for (Function<?> function : functions) {
functionDTOs.add(functionDTOFactory.createFunctionDTO(function, dataMiningStringMessages, locale)); functionDTOs.add(functionDTOFactory.createFunctionDTO(function, ServerStringMessages, locale));
} }
return functionDTOs; return functionDTOs;
} }
@@ -116,8 +116,8 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
private Collection<DataRetrieverChainDefinitionDTO> dataRetrieverChainDefinitionsAsDTOs( private Collection<DataRetrieverChainDefinitionDTO> dataRetrieverChainDefinitionsAsDTOs(
Iterable<DataRetrieverChainDefinition<RacingEventService, ?>> dataRetrieverChainDefinitions, String localeInfoName) { Iterable<DataRetrieverChainDefinition<RacingEventService, ?>> dataRetrieverChainDefinitions, String localeInfoName) {
Locale locale = DataMiningStringMessages.Util.getLocaleFor(localeInfoName); Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
DataMiningStringMessages dataMiningStringMessages = getDataMiningServer().getStringMessages(); ResourceBundleStringMessages ServerStringMessages = getDataMiningServer().getStringMessages();
Collection<DataRetrieverChainDefinitionDTO> DTOs = new ArrayList<>(); Collection<DataRetrieverChainDefinitionDTO> DTOs = new ArrayList<>();
for (DataRetrieverChainDefinition<RacingEventService, ?> dataRetrieverChainDefinition : dataRetrieverChainDefinitions) { for (DataRetrieverChainDefinition<RacingEventService, ?> dataRetrieverChainDefinition : dataRetrieverChainDefinitions) {
@@ -125,12 +125,12 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
for (DataRetrieverTypeWithInformation<?, ?> retrieverTypeWithInformation : dataRetrieverChainDefinition.getDataRetrieverTypesWithInformation()) { for (DataRetrieverTypeWithInformation<?, ?> retrieverTypeWithInformation : dataRetrieverChainDefinition.getDataRetrieverTypesWithInformation()) {
String typeName = retrieverTypeWithInformation.getRetrievedDataType().getSimpleName(); String typeName = retrieverTypeWithInformation.getRetrievedDataType().getSimpleName();
String displayName = retrieverTypeWithInformation.getRetrievedDataTypeMessageKey() != null && !retrieverTypeWithInformation.getRetrievedDataTypeMessageKey().isEmpty() ? String displayName = retrieverTypeWithInformation.getRetrievedDataTypeMessageKey() != null && !retrieverTypeWithInformation.getRetrievedDataTypeMessageKey().isEmpty() ?
dataMiningStringMessages.get(locale, retrieverTypeWithInformation.getRetrievedDataTypeMessageKey()) : ServerStringMessages.get(locale, retrieverTypeWithInformation.getRetrievedDataTypeMessageKey()) :
typeName; typeName;
LocalizedTypeDTO localizedRetrievedDataType = new LocalizedTypeDTO(typeName, displayName); LocalizedTypeDTO localizedRetrievedDataType = new LocalizedTypeDTO(typeName, displayName);
retrievedDataTypesChain.add(localizedRetrievedDataType); 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)); dataRetrieverChainDefinition.getDataSourceType().getSimpleName(), retrievedDataTypesChain));
} }
return DTOs; return DTOs;
@@ -141,7 +141,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM
int retrieverLevel, Iterable<FunctionDTO> dimensionDTOs, String localeInfoName) throws Exception { int retrieverLevel, Iterable<FunctionDTO> dimensionDTOs, String localeInfoName) throws Exception {
DataRetrieverChainDefinition<RacingEventService, ?> retrieverChainDefinition = getDataMiningServer().getDataRetrieverChainDefinition(dataRetrieverChainDefinitionDTO.getId()); DataRetrieverChainDefinition<RacingEventService, ?> retrieverChainDefinition = getDataMiningServer().getDataRetrieverChainDefinition(dataRetrieverChainDefinitionDTO.getId());
Iterable<Function<?>> dimensions = functionDTOsAsFunctions(dimensionDTOs); 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); Query<Set<Object>> dimensionValuesQuery = getDataMiningServer().createDimensionValuesQuery(getRacingEventService(), retrieverChainDefinition, retrieverLevel, dimensions, locale);
QueryResult<Set<Object>> result = dimensionValuesQuery.run(); QueryResult<Set<Object>> result = dimensionValuesQuery.run();
return result; return result;
@@ -26,6 +26,7 @@ import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set; 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.server.filestorage.FileStorageServiceDTOUtils;
import com.sap.sse.gwt.shared.filestorage.FileStorageServiceDTO; import com.sap.sse.gwt.shared.filestorage.FileStorageServiceDTO;
import com.sap.sse.gwt.shared.filestorage.FileStorageServicePropertyErrorsDTO; 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.OperationWithResult;
import com.sap.sse.replication.ReplicationFactory; import com.sap.sse.replication.ReplicationFactory;
import com.sap.sse.replication.ReplicationMasterDescriptor; import com.sap.sse.replication.ReplicationMasterDescriptor;
@@ -5437,10 +5439,11 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
} }
@Override @Override
public FileStorageServiceDTO[] getAvailableFileStorageServices() { public FileStorageServiceDTO[] getAvailableFileStorageServices(String localeInfoName) {
Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
List<FileStorageServiceDTO> serviceDtos = new ArrayList<>(); List<FileStorageServiceDTO> serviceDtos = new ArrayList<>();
for (FileStorageService s : getService().getFileStorageManagementService().getAvailableFileStorageServices()) { for (FileStorageService s : getService().getFileStorageManagementService().getAvailableFileStorageServices()) {
serviceDtos.add(FileStorageServiceDTOUtils.convert(s)); serviceDtos.add(FileStorageServiceDTOUtils.convert(s, locale));
} }
return serviceDtos.toArray(new FileStorageServiceDTO[0]); return serviceDtos.toArray(new FileStorageServiceDTO[0]);
} }
@@ -5458,20 +5461,21 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
} }
@Override @Override
public FileStorageServicePropertyErrorsDTO testFileStorageServiceProperties(String serviceName) { public FileStorageServicePropertyErrorsDTO testFileStorageServiceProperties(String serviceName, String localeInfoName) {
Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName);
try { try {
FileStorageService service = getFileStorageService(serviceName); FileStorageService service = getFileStorageService(serviceName);
if (service != null) { if (service != null) {
service.testProperties(); service.testProperties();
} }
} catch (InvalidPropertiesException e) { } catch (InvalidPropertiesException e) {
return FileStorageServiceDTOUtils.convert(e); return FileStorageServiceDTOUtils.convert(e, locale);
} }
return null; return null;
} }
@Override @Override
public void setActiveFileStorageService(String serviceName) { public void setActiveFileStorageService(String serviceName, String localeInfoName) {
getService().getFileStorageManagementService().setActiveFileStorageService(getFileStorageService(serviceName)); 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.Query;
import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.functions.Function; 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.impl.components.GroupedDataEntry;
import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.datamining.shared.dto.FunctionDTO; 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.TestLegOfCompetitorWithContextRetrievalProcessor;
import com.sap.sse.datamining.test.util.components.TestRaceWithContextRetrievalProcessor; import com.sap.sse.datamining.test.util.components.TestRaceWithContextRetrievalProcessor;
import com.sap.sse.datamining.test.util.components.TestRegattaRetrievalProcessor; import com.sap.sse.datamining.test.util.components.TestRegattaRetrievalProcessor;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestDimensionsValuesQuery { 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 static final Locale locale = Locale.ENGLISH;
private DataRetrieverChainDefinition<Collection<Test_Regatta>, Test_HasLegOfCompetitorContext> dataRetrieverChainDefinition; 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.components.Processor;
import com.sap.sse.datamining.factories.ProcessorFactory; import com.sap.sse.datamining.factories.ProcessorFactory;
import com.sap.sse.datamining.functions.Function; 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.AbstractSimpleParallelProcessor;
import com.sap.sse.datamining.impl.components.AbstractSimpleRetrievalProcessor; import com.sap.sse.datamining.impl.components.AbstractSimpleRetrievalProcessor;
import com.sap.sse.datamining.impl.components.GroupedDataEntry; 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.BlockingProcessor;
import com.sap.sse.datamining.test.util.components.NullProcessor; import com.sap.sse.datamining.test.util.components.NullProcessor;
import com.sap.sse.datamining.test.util.components.Number; import com.sap.sse.datamining.test.util.components.Number;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestProcessorQuery { public class TestProcessorQuery {
private final static DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessagesWithProductiveMessages(); private final static ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessagesWithProductiveMessages();
private ProcessorFactory processorFactory; 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.functions.Function;
import com.sap.sse.datamining.impl.functions.MethodWrappingFunction; import com.sap.sse.datamining.impl.functions.MethodWrappingFunction;
import com.sap.sse.datamining.shared.GroupKey; 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.GenericGroupKey;
import com.sap.sse.datamining.shared.impl.NestingCompoundGroupKey;
import com.sap.sse.datamining.test.util.ComponentTestsUtil; import com.sap.sse.datamining.test.util.ComponentTestsUtil;
import com.sap.sse.datamining.test.util.ConcurrencyTestsUtil; import com.sap.sse.datamining.test.util.ConcurrencyTestsUtil;
import com.sap.sse.datamining.test.util.FunctionTestsUtil; 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.Cluster;
import com.sap.sse.datamining.data.ClusterBoundary; 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.datamining.test.util.TestsUtil;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestClustersWithBoundaries { public class TestClustersWithBoundaries {
private static final char INFINITE = '\u221e'; 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 Comparator<Integer> comparator = new ComparableComparator<Integer>();
private static final ClusterBoundary<Integer> lowerBound = new ComparatorClusterBoundary<Integer>(comparator, 0, ComparisonStrategy.GREATER_EQUALS_THAN); 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.Cluster;
import com.sap.sse.datamining.data.ClusterBoundary; import com.sap.sse.datamining.data.ClusterBoundary;
import com.sap.sse.datamining.data.ClusterGroup; 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.datamining.test.util.TestsUtil;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestFixClusterGroup { 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 static final Comparator<Integer> comparator = new ComparableComparator<Integer>();
private Cluster<Integer> clusterLowerThanZero; private Cluster<Integer> clusterLowerThanZero;
@@ -12,17 +12,17 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import com.sap.sse.datamining.functions.Function; 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.dto.FunctionDTO;
import com.sap.sse.datamining.shared.impl.dto.FunctionDTOImpl; 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.SimpleClassWithMarkedMethods;
import com.sap.sse.datamining.test.functions.test_classes.Test_ExternalLibraryClass; 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.FunctionTestsUtil;
import com.sap.sse.datamining.test.util.TestsUtil; import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestFunctionDTOConstruction { public class TestFunctionDTOConstruction {
private static final DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessages(); private static final ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessages();
private Method dimensionMethod; private Method dimensionMethod;
private Method sideEffectFreeValueMethod; 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.Function;
import com.sap.sse.datamining.functions.FunctionProvider; import com.sap.sse.datamining.functions.FunctionProvider;
import com.sap.sse.datamining.functions.FunctionRegistry; 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.impl.SimpleDataRetrieverChainDefinition;
import com.sap.sse.datamining.shared.dto.FunctionDTO; import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.datamining.test.functions.registry.test_classes.Test_Named; 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.TestLegOfCompetitorWithContextRetrievalProcessor;
import com.sap.sse.datamining.test.util.components.TestRaceWithContextRetrievalProcessor; import com.sap.sse.datamining.test.util.components.TestRaceWithContextRetrievalProcessor;
import com.sap.sse.datamining.test.util.components.TestRegattaRetrievalProcessor; import com.sap.sse.datamining.test.util.components.TestRegattaRetrievalProcessor;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestFunctionProvider { public class TestFunctionProvider {
private static final DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessagesWithProductiveMessages(); private static final ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessagesWithProductiveMessages();
private ExpectedFunctionRegistryUtil functionRegistryUtil; private ExpectedFunctionRegistryUtil functionRegistryUtil;
private FunctionRegistry functionRegistry; private FunctionRegistry functionRegistry;
@@ -10,11 +10,11 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import com.sap.sse.datamining.functions.Function; 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.SimpleClassWithMarkedMethods;
import com.sap.sse.datamining.test.functions.test_classes.Test_ExternalLibraryClass; 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.FunctionTestsUtil;
import com.sap.sse.datamining.test.util.TestsUtil; import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class TestMethodWrappingFunction { public class TestMethodWrappingFunction {
@@ -49,7 +49,7 @@ public class TestMethodWrappingFunction {
@Test @Test
public void testGetLocalizedName() { public void testGetLocalizedName() {
DataMiningStringMessages stringMessages = TestsUtil.getTestStringMessages(); ResourceBundleStringMessages stringMessages = TestsUtil.getTestStringMessages();
Function<?> dimension = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(dimensionMethod); Function<?> dimension = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(dimensionMethod);
String expectedEnglishName = "dimension-english"; String expectedEnglishName = "dimension-english";
@@ -10,15 +10,16 @@ import java.util.MissingResourceException;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.test.util.TestsUtil; import com.sap.sse.datamining.test.util.TestsUtil;
import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.i18n.impl.CompoundResourceBundleStringMessages;
public class TestI18N { public class TestI18N {
private static final String SIMPLE_TEST_MESSAGE_KEY = "SimpleTestMessage"; private static final String SIMPLE_TEST_MESSAGE_KEY = "SimpleTestMessage";
private static final String TEST_MESSAGE_WITH_PARAMETERS = "TestMessageWithParameters"; private static final String TEST_MESSAGE_WITH_PARAMETERS = "TestMessageWithParameters";
private DataMiningStringMessages testStringMessages; private ResourceBundleStringMessages testStringMessages;
@Before @Before
public void initializeBundleManager() { public void initializeBundleManager() {
@@ -39,7 +40,7 @@ public class TestI18N {
@Test @Test
public void testDynamicCompoundStringMessages() { public void testDynamicCompoundStringMessages() {
CompoundDataMiningStringMessages compoundStringMessages = new CompoundDataMiningStringMessages(); CompoundResourceBundleStringMessages compoundStringMessages = new CompoundResourceBundleStringMessages();
try { try {
compoundStringMessages.get(Locale.ENGLISH, SIMPLE_TEST_MESSAGE_KEY); compoundStringMessages.get(Locale.ENGLISH, SIMPLE_TEST_MESSAGE_KEY);
@@ -59,11 +60,11 @@ public class TestI18N {
@Test @Test
public void testGetLocaleForLocaleInfoName() { public void testGetLocaleForLocaleInfoName() {
assertThat(DataMiningStringMessages.Util.getLocaleFor("default"), is(Locale.ENGLISH)); assertThat(ResourceBundleStringMessages.Util.getLocaleFor("default"), is(Locale.ENGLISH));
assertThat(DataMiningStringMessages.Util.getLocaleFor("en"), is(Locale.ENGLISH)); assertThat(ResourceBundleStringMessages.Util.getLocaleFor("en"), is(Locale.ENGLISH));
assertThat(DataMiningStringMessages.Util.getLocaleFor("de"), is(Locale.GERMAN)); 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) @Test(expected=MissingResourceException.class)
@@ -1,30 +1,30 @@
package com.sap.sse.datamining.test.util; package com.sap.sse.datamining.test.util;
import com.sap.sse.datamining.i18n.DataMiningStringMessages; import com.sap.sse.i18n.ResourceBundleStringMessages;
import com.sap.sse.datamining.impl.i18n.CompoundDataMiningStringMessages; import com.sap.sse.i18n.impl.CompoundResourceBundleStringMessages;
import com.sap.sse.datamining.impl.i18n.DataMiningStringMessagesImpl; import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl;
public class TestsUtil { public class TestsUtil {
private static final String TEST_STRING_MESSAGES_BASE_NAME = "stringmessages/Test_StringMessages"; 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 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) { 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; return TEST_STRING_MESSAGES;
} }
public static DataMiningStringMessages getTestStringMessagesWithProductiveMessages() { public static ResourceBundleStringMessages getTestStringMessagesWithProductiveMessages() {
if (EXTENDED_STRING_MESSAGES == null) { if (EXTENDED_STRING_MESSAGES == null) {
EXTENDED_STRING_MESSAGES = new CompoundDataMiningStringMessages(); EXTENDED_STRING_MESSAGES = new CompoundResourceBundleStringMessages();
EXTENDED_STRING_MESSAGES.addStringMessages(getTestStringMessages()); 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; return EXTENDED_STRING_MESSAGES;
@@ -11,17 +11,16 @@ Export-Package: com.sap.sse.datamining,
com.sap.sse.datamining.data, com.sap.sse.datamining.data,
com.sap.sse.datamining.factories, com.sap.sse.datamining.factories,
com.sap.sse.datamining.functions, com.sap.sse.datamining.functions,
com.sap.sse.datamining.i18n,
com.sap.sse.datamining.impl, com.sap.sse.datamining.impl,
com.sap.sse.datamining.impl.components, com.sap.sse.datamining.impl.components,
com.sap.sse.datamining.impl.components.aggregators, com.sap.sse.datamining.impl.components.aggregators,
com.sap.sse.datamining.impl.criterias, com.sap.sse.datamining.impl.criterias,
com.sap.sse.datamining.impl.data, com.sap.sse.datamining.impl.data,
com.sap.sse.datamining.impl.functions, com.sap.sse.datamining.impl.functions,
com.sap.sse.datamining.impl.functions.criterias, com.sap.sse.datamining.impl.functions.criterias
com.sap.sse.datamining.impl.i18n
Require-Bundle: com.sap.sse.datamining.shared;bundle-version="1.0.0", Require-Bundle: com.sap.sse.datamining.shared;bundle-version="1.0.0",
com.sap.sse.common;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-Activator: com.sap.sse.datamining.impl.DataMiningActivator
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
@@ -3,8 +3,8 @@ package com.sap.sse.datamining;
import java.util.Locale; import java.util.Locale;
import com.sap.sse.datamining.functions.Function; 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.AdditionalResultData;
import com.sap.sse.i18n.ResourceBundleStringMessages;
/** /**
* These builders are used to collect the additional result data from different sources (e.g. the Processors) * 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 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); public void setRetrievedDataAmount(int retrievedDataAmount);
@@ -1,10 +1,10 @@
package com.sap.sse.datamining; package com.sap.sse.datamining;
import com.sap.sse.datamining.i18n.DataMiningStringMessages; import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface DataMiningBundleService { public interface DataMiningBundleService {
public DataMiningStringMessages getStringMessages(); public ResourceBundleStringMessages getStringMessages();
public Iterable<Class<?>> getInternalClassesWithMarkedMethods(); public Iterable<Class<?>> getInternalClassesWithMarkedMethods();
public Iterable<Class<?>> getExternalLibraryClasses(); 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.Function;
import com.sap.sse.datamining.functions.FunctionProvider; 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.impl.DataRetrieverChainDefinitionProvider;
import com.sap.sse.datamining.shared.QueryDefinitionDTO; import com.sap.sse.datamining.shared.QueryDefinitionDTO;
import com.sap.sse.datamining.shared.dto.FunctionDTO; import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface DataMiningServer { public interface DataMiningServer {
public ExecutorService getExecutorService(); public ExecutorService getExecutorService();
public DataMiningStringMessages getStringMessages(); public ResourceBundleStringMessages getStringMessages();
public FunctionProvider getFunctionProvider(); public FunctionProvider getFunctionProvider();
@@ -6,8 +6,8 @@ import java.util.UUID;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import com.sap.sse.datamining.components.Processor; 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.datamining.impl.DataRetrieverTypeWithInformation;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface DataRetrieverChainDefinition<DataSourceType, DataType> { public interface DataRetrieverChainDefinition<DataSourceType, DataType> {
@@ -17,7 +17,7 @@ public interface DataRetrieverChainDefinition<DataSourceType, DataType> {
public Class<DataType> getRetrievedDataType(); 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); public <ResultType> void startWith(Class<Processor<DataSourceType, ResultType>> retrieverType, Class<ResultType> retrievedDataType, String retrievedDataTypeMessageKey);
@@ -1,12 +1,12 @@
package com.sap.sse.datamining; package com.sap.sse.datamining;
import com.sap.sse.datamining.functions.FunctionRegistry; 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 interface ModifiableDataMiningServer extends DataMiningServer {
public void addStringMessages(DataMiningStringMessages stringMessages); public void addStringMessages(ResourceBundleStringMessages stringMessages);
public void removeStringMessages(DataMiningStringMessages stringMessages); public void removeStringMessages(ResourceBundleStringMessages stringMessages);
public FunctionRegistry getFunctionRegistry(); public FunctionRegistry getFunctionRegistry();
@@ -2,11 +2,11 @@ package com.sap.sse.datamining.data;
import java.util.Locale; import java.util.Locale;
import com.sap.sse.datamining.i18n.DataMiningStringMessages; import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface Cluster<ElementType> { public interface Cluster<ElementType> {
public String getAsLocalizedString(Locale locale, DataMiningStringMessages stringMessages); public String getAsLocalizedString(Locale locale, ResourceBundleStringMessages stringMessages);
public boolean isInRange(ElementType value); public boolean isInRange(ElementType value);
@@ -2,12 +2,12 @@ package com.sap.sse.datamining.data;
import java.util.Locale; import java.util.Locale;
import com.sap.sse.datamining.i18n.DataMiningStringMessages; import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface ClusterGroup<ElementType> { public interface ClusterGroup<ElementType> {
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages); public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages);
public Cluster<ElementType> getClusterFor(ElementType value); public Cluster<ElementType> getClusterFor(ElementType value);
@@ -5,11 +5,11 @@ import java.util.List;
import java.util.Locale; import java.util.Locale;
import com.sap.sse.datamining.functions.Function; 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.Connector;
import com.sap.sse.datamining.shared.annotations.Dimension; import com.sap.sse.datamining.shared.annotations.Dimension;
import com.sap.sse.datamining.shared.dto.FunctionDTO; import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.datamining.shared.impl.dto.FunctionDTOImpl; import com.sap.sse.datamining.shared.impl.dto.FunctionDTOImpl;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class FunctionDTOFactory { public class FunctionDTOFactory {
@@ -26,7 +26,7 @@ public class FunctionDTOFactory {
* annotation.<br> * annotation.<br>
* If the function has no message key, the function name is used as display name. * 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)); 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.components.Processor;
import com.sap.sse.datamining.functions.Function; 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.ProcessorQuery;
import com.sap.sse.datamining.impl.components.GroupedDataEntry; import com.sap.sse.datamining.impl.components.GroupedDataEntry;
import com.sap.sse.datamining.impl.components.ParallelByDimensionGroupingProcessor; 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.impl.components.aggregators.ParallelGroupedDoubleDataSumAggregationProcessor;
import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.datamining.shared.components.AggregatorType; import com.sap.sse.datamining.shared.components.AggregatorType;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class ProcessorFactory { public class ProcessorFactory {
@@ -106,7 +106,7 @@ public class ProcessorFactory {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public <DataType> Collection<Processor<DataType, GroupedDataEntry<DataType>>> createGroupingExtractorsForDimensions(Class<DataType> dataType, public <DataType> Collection<Processor<DataType, GroupedDataEntry<DataType>>> createGroupingExtractorsForDimensions(Class<DataType> dataType,
Processor<GroupedDataEntry<Object>, ?> valueCollector, Iterable<Function<?>> dimensions, Processor<GroupedDataEntry<Object>, ?> valueCollector, Iterable<Function<?>> dimensions,
DataMiningStringMessages stringMessages, Locale locale) { ResourceBundleStringMessages stringMessages, Locale locale) {
Collection<Processor<GroupedDataEntry<Object>, ?>> extractionResultReceivers = new ArrayList<>(); Collection<Processor<GroupedDataEntry<Object>, ?>> extractionResultReceivers = new ArrayList<>();
extractionResultReceivers.add(valueCollector); 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.FilterCriterion;
import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.functions.Function; 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.ProcessorQuery;
import com.sap.sse.datamining.impl.components.GroupedDataEntry; import com.sap.sse.datamining.impl.components.GroupedDataEntry;
import com.sap.sse.datamining.impl.criterias.AndCompoundFilterCriterion; import com.sap.sse.datamining.impl.criterias.AndCompoundFilterCriterion;
import com.sap.sse.datamining.impl.criterias.CompoundFilterCriterion; import com.sap.sse.datamining.impl.criterias.CompoundFilterCriterion;
import com.sap.sse.datamining.impl.criterias.NullaryFunctionValuesFilterCriterion; import com.sap.sse.datamining.impl.criterias.NullaryFunctionValuesFilterCriterion;
import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class QueryFactory { public class QueryFactory {
public <DataSourceType, DataType, ResultType> Query<ResultType> createQuery(DataSourceType dataSource, QueryDefinition<DataSourceType, DataType, ResultType> queryDefinition, 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()) { return new ProcessorQuery<ResultType, DataSourceType>(dataSource, stringMessages, queryDefinition.getLocale()) {
@Override @Override
protected Processor<DataSourceType, ?> createFirstProcessor() { protected Processor<DataSourceType, ?> createFirstProcessor() {
@@ -80,7 +80,7 @@ public class QueryFactory {
public <DataSource> Query<Set<Object>> createDimensionValuesQuery(DataSource dataSource, public <DataSource> Query<Set<Object>> createDimensionValuesQuery(DataSource dataSource,
DataRetrieverChainDefinition<DataSource, ?> dataRetrieverChainDefinition, int retrieverLevel, DataRetrieverChainDefinition<DataSource, ?> dataRetrieverChainDefinition, int retrieverLevel,
Iterable<Function<?>> dimensions, Locale locale, Iterable<Function<?>> dimensions, Locale locale,
DataMiningStringMessages stringMessages, ExecutorService executor) { ResourceBundleStringMessages stringMessages, ExecutorService executor) {
return new ProcessorQuery<Set<Object>, DataSource>(dataSource, stringMessages, locale) { return new ProcessorQuery<Set<Object>, DataSource>(dataSource, stringMessages, locale) {
@Override @Override
protected Processor<DataSource, ?> createFirstProcessor() { protected Processor<DataSource, ?> createFirstProcessor() {
@@ -3,8 +3,8 @@ package com.sap.sse.datamining.functions;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.Locale; import java.util.Locale;
import com.sap.sse.datamining.i18n.DataMiningStringMessages;
import com.sap.sse.datamining.shared.Unit; import com.sap.sse.datamining.shared.Unit;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public interface Function<ReturnType> { public interface Function<ReturnType> {
@@ -17,12 +17,12 @@ public interface Function<ReturnType> {
public String getSimpleName(); 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()}. * other than the method {@link #getSimpleName()}.
*/ */
public boolean isLocatable(); 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. * 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.functions.FunctionRegistry;
import com.sap.sse.datamining.impl.functions.RegistryFunctionProvider; import com.sap.sse.datamining.impl.functions.RegistryFunctionProvider;
import com.sap.sse.datamining.impl.functions.SimpleFunctionRegistry; 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 { public class DataMiningActivator implements BundleActivator {
@@ -44,7 +44,7 @@ public class DataMiningActivator implements BundleActivator {
FunctionProvider functionProvider = new RegistryFunctionProvider(functionRegistry); FunctionProvider functionProvider = new RegistryFunctionProvider(functionRegistry);
DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry = new SimpleDataRetrieverChainDefinitionRegistry(); DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry = new SimpleDataRetrieverChainDefinitionRegistry();
dataMiningServer = new DataMiningServerImpl(executor, functionRegistry, functionProvider, dataRetrieverChainDefinitionRegistry); 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<>(); 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.Function;
import com.sap.sse.datamining.functions.FunctionProvider; import com.sap.sse.datamining.functions.FunctionProvider;
import com.sap.sse.datamining.functions.FunctionRegistry; 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.QueryDefinitionDTO;
import com.sap.sse.datamining.shared.dto.FunctionDTO; 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 { public class DataMiningServerImpl implements ModifiableDataMiningServer {
private final CompoundDataMiningStringMessages stringMessages; private final CompoundResourceBundleStringMessages stringMessages;
private final ExecutorService executorService; private final ExecutorService executorService;
private final QueryFactory queryFactory; private final QueryFactory queryFactory;
@@ -35,7 +35,7 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
private DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry; private DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry;
public DataMiningServerImpl(ExecutorService executorService, FunctionRegistry functionRegistry, FunctionProvider functionProvider, DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry) { public DataMiningServerImpl(ExecutorService executorService, FunctionRegistry functionRegistry, FunctionProvider functionProvider, DataRetrieverChainDefinitionRegistry dataRetrieverChainDefinitionRegistry) {
this.stringMessages = new CompoundDataMiningStringMessages(); this.stringMessages = new CompoundResourceBundleStringMessages();
this.executorService = executorService; this.executorService = executorService;
this.queryFactory = new QueryFactory(); this.queryFactory = new QueryFactory();
this.functionRegistry = functionRegistry; this.functionRegistry = functionRegistry;
@@ -49,17 +49,17 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer {
} }
@Override @Override
public DataMiningStringMessages getStringMessages() { public ResourceBundleStringMessages getStringMessages() {
return stringMessages; return stringMessages;
} }
@Override @Override
public void addStringMessages(DataMiningStringMessages stringMessages) { public void addStringMessages(ResourceBundleStringMessages stringMessages) {
this.stringMessages.addStringMessages(stringMessages); this.stringMessages.addStringMessages(stringMessages);
} }
@Override @Override
public void removeStringMessages(DataMiningStringMessages stringMessages) { public void removeStringMessages(ResourceBundleStringMessages stringMessages) {
this.stringMessages.removeStringMessages(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) { public <DataSourceType, DataType, ResultType> QueryDefinition<DataSourceType, DataType, ResultType> getQueryDefinitionForDTO(QueryDefinitionDTO queryDefinitionDTO) {
ModifiableQueryDefinition<DataSourceType, DataType, ResultType> queryDefinition = null; 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()); DataRetrieverChainDefinition<DataSourceType, DataType> retrieverChain = getDataRetrieverChainDefinition(queryDefinitionDTO.getDataRetrieverChainDefinition().getId());
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Function<ResultType> statisticToCalculate = (Function<ResultType>) getFunctionForDTO(queryDefinitionDTO.getStatisticToCalculate()); 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.AdditionalResultDataBuilder;
import com.sap.sse.datamining.Query; import com.sap.sse.datamining.Query;
import com.sap.sse.datamining.components.Processor; 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.impl.components.OverwritingResultDataBuilder;
import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.GroupKey;
import com.sap.sse.datamining.shared.QueryResult; import com.sap.sse.datamining.shared.QueryResult;
import com.sap.sse.datamining.shared.impl.QueryResultImpl; import com.sap.sse.datamining.shared.impl.QueryResultImpl;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public abstract class ProcessorQuery<AggregatedType, DataSourceType> implements Query<AggregatedType> { 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 ProcessResultReceiver resultReceiver;
private final DataMiningStringMessages stringMessages; private final ResourceBundleStringMessages stringMessages;
private final Locale locale; private final Locale locale;
private final Object monitorObject = new Object(); 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. * 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.dataSource = dataSource;
this.stringMessages = stringMessages; this.stringMessages = stringMessages;
this.locale = locale; this.locale = locale;
@@ -10,7 +10,7 @@ import java.util.concurrent.ExecutorService;
import com.sap.sse.datamining.DataRetrieverChainBuilder; import com.sap.sse.datamining.DataRetrieverChainBuilder;
import com.sap.sse.datamining.DataRetrieverChainDefinition; import com.sap.sse.datamining.DataRetrieverChainDefinition;
import com.sap.sse.datamining.components.Processor; 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 public class SimpleDataRetrieverChainDefinition<DataSourceType, DataType> implements
DataRetrieverChainDefinition<DataSourceType, DataType> { DataRetrieverChainDefinition<DataSourceType, DataType> {
@@ -46,7 +46,7 @@ public class SimpleDataRetrieverChainDefinition<DataSourceType, DataType> implem
} }
@Override @Override
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages) { public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages) {
return stringMessages.get(locale, nameMessageKey); return stringMessages.get(locale, nameMessageKey);
} }
@@ -4,10 +4,10 @@ import java.util.Locale;
import com.sap.sse.datamining.AdditionalResultDataBuilder; import com.sap.sse.datamining.AdditionalResultDataBuilder;
import com.sap.sse.datamining.functions.Function; 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.AdditionalResultData;
import com.sap.sse.datamining.shared.Unit; import com.sap.sse.datamining.shared.Unit;
import com.sap.sse.datamining.shared.impl.AdditionalResultDataImpl; import com.sap.sse.datamining.shared.impl.AdditionalResultDataImpl;
import com.sap.sse.i18n.ResourceBundleStringMessages;
/** /**
* For general information see {@link AdditionalResultDataBuilder}.<br /> * For general information see {@link AdditionalResultDataBuilder}.<br />
@@ -35,11 +35,11 @@ public class OverwritingResultDataBuilder implements AdditionalResultDataBuilder
} }
@Override @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); 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) { if (extractionFunction == null || aggregationNameMessageKey == null) {
return ""; return "";
} }
@@ -8,10 +8,10 @@ import java.util.concurrent.ExecutorService;
import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.components.Processor;
import com.sap.sse.datamining.factories.FunctionDTOFactory; import com.sap.sse.datamining.factories.FunctionDTOFactory;
import com.sap.sse.datamining.functions.Function; 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.GroupKey;
import com.sap.sse.datamining.shared.dto.FunctionDTO; import com.sap.sse.datamining.shared.dto.FunctionDTO;
import com.sap.sse.datamining.shared.impl.GenericGroupKey; 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}. * 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 public class ParallelByDimensionGroupingProcessor<DataType> extends
AbstractParallelMultiDimensionalNestingGroupingProcessor<DataType> { AbstractParallelMultiDimensionalNestingGroupingProcessor<DataType> {
private final DataMiningStringMessages stringMessages; private final ResourceBundleStringMessages stringMessages;
private final Locale locale; private final Locale locale;
private final FunctionDTOFactory functionDTOFactory; private final FunctionDTOFactory functionDTOFactory;
@@ -30,7 +30,7 @@ public class ParallelByDimensionGroupingProcessor<DataType> extends
ExecutorService executor, ExecutorService executor,
Collection<Processor<GroupedDataEntry<DataType>, ?>> resultReceivers, Collection<Processor<GroupedDataEntry<DataType>, ?>> resultReceivers,
Function<?> dimension, Function<?> dimension,
DataMiningStringMessages stringMessages, Locale locale) { ResourceBundleStringMessages stringMessages, Locale locale) {
super(dataType, executor, resultReceivers, asIterable(dimension)); super(dataType, executor, resultReceivers, asIterable(dimension));
this.stringMessages = stringMessages; this.stringMessages = stringMessages;
this.locale = locale; this.locale = locale;
@@ -6,7 +6,7 @@ import java.util.Locale;
import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.data.Cluster;
import com.sap.sse.datamining.data.ClusterBoundary; 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> { public abstract class AbstractCluster<ElementType> implements Cluster<ElementType> {
@@ -34,7 +34,7 @@ public abstract class AbstractCluster<ElementType> implements Cluster<ElementTyp
} }
@Override @Override
public String getAsLocalizedString(Locale locale, DataMiningStringMessages stringMessages) { public String getAsLocalizedString(Locale locale, ResourceBundleStringMessages stringMessages) {
return stringMessages.get(locale, messageKey) + " " + getBoundariesAsString(); 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.Cluster;
import com.sap.sse.datamining.data.ClusterGroup; 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> { public class FixClusterGroup<ElementType> implements ClusterGroup<ElementType> {
@@ -34,7 +34,7 @@ public class FixClusterGroup<ElementType> implements ClusterGroup<ElementType> {
} }
@Override @Override
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages) { public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages) {
return stringMessages.get(locale, messageKey); return stringMessages.get(locale, messageKey);
} }
@@ -6,8 +6,8 @@ import java.util.List;
import java.util.Locale; import java.util.Locale;
import com.sap.sse.datamining.functions.Function; 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.datamining.shared.Unit;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class ConcatenatingCompoundFunction<ReturnType> extends AbstractFunction<ReturnType> { public class ConcatenatingCompoundFunction<ReturnType> extends AbstractFunction<ReturnType> {
@@ -86,7 +86,7 @@ public class ConcatenatingCompoundFunction<ReturnType> extends AbstractFunction<
} }
@Override @Override
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages) { public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages) {
if (name != null && !name.isEmpty()) { if (name != null && !name.isEmpty()) {
return name; return name;
} }
@@ -107,7 +107,7 @@ public class ConcatenatingCompoundFunction<ReturnType> extends AbstractFunction<
return false; return false;
} }
private String buildLocalizedNameChain(Locale locale, DataMiningStringMessages stringMessages) { private String buildLocalizedNameChain(Locale locale, ResourceBundleStringMessages stringMessages) {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
boolean first = true; boolean first = true;
for (Function<?> function : functions) { for (Function<?> function : functions) {
@@ -6,11 +6,11 @@ import java.util.Arrays;
import java.util.Locale; import java.util.Locale;
import java.util.logging.Level; 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.Unit;
import com.sap.sse.datamining.shared.annotations.Connector; import com.sap.sse.datamining.shared.annotations.Connector;
import com.sap.sse.datamining.shared.annotations.Dimension; import com.sap.sse.datamining.shared.annotations.Dimension;
import com.sap.sse.datamining.shared.annotations.Statistic; import com.sap.sse.datamining.shared.annotations.Statistic;
import com.sap.sse.i18n.ResourceBundleStringMessages;
public class MethodWrappingFunction<ReturnType> extends AbstractFunction<ReturnType> { public class MethodWrappingFunction<ReturnType> extends AbstractFunction<ReturnType> {
@@ -115,7 +115,7 @@ public class MethodWrappingFunction<ReturnType> extends AbstractFunction<ReturnT
} }
@Override @Override
public String getLocalizedName(Locale locale, DataMiningStringMessages stringMessages) { public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages) {
if (!isLocatable()) { if (!isLocatable()) {
return getSimpleName(); 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.InputStream;
import java.io.Serializable; import java.io.Serializable;
import java.net.URI; import java.net.URI;
import java.util.Locale;
import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.IsManagedByCache;
import com.sap.sse.common.TypeBasedServiceFinder; import com.sap.sse.common.TypeBasedServiceFinder;
@@ -50,7 +51,7 @@ public interface FileStorageService extends IsManagedByCache<FileStorageServiceR
/** /**
* Description text that explains the storage service. * 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. * 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; package com.sap.sse.filestorage;
import java.io.Serializable; import java.io.Serializable;
import java.util.Locale;
/** /**
* Property of a file storage service. * Property of a file storage service.
@@ -15,5 +16,5 @@ public interface FileStorageServiceProperty extends Serializable {
* @return {@code null} if not yet initialized * @return {@code null} if not yet initialized
*/ */
String getValue(); 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 { public class AmazonS3FileStorageServiceImpl extends BaseFileStorageServiceImpl implements FileStorageService {
private static final long serialVersionUID = -2406798172882732531L; private static final long serialVersionUID = -2406798172882732531L;
public static final String NAME = "Amazon S3"; 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 Logger logger = Logger.getLogger(AmazonS3FileStorageServiceImpl.class.getName());
private static final String baseUrl = "s3.amazonaws.com"; 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 static final String bucketName = "ftes-sap-sailing";
private final FileStorageServicePropertyImpl accessId = new FileStorageServicePropertyImpl("accessId", false, 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, 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, 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() { public AmazonS3FileStorageServiceImpl() {
super(NAME, DESCRIPTION); super(NAME, "s3Desc");
addProperties(accessId, accessKey, bucketName); addProperties(accessId, accessKey, bucketName);
} }
@@ -102,15 +101,15 @@ public class AmazonS3FileStorageServiceImpl extends BaseFileStorageServiceImpl i
.withCannedAcl(CannedAccessControlList.PublicRead); .withCannedAcl(CannedAccessControlList.PublicRead);
final AmazonS3Client s3Client = createS3Client(); final AmazonS3Client s3Client = createS3Client();
new Thread() { new Thread() {
public void run() { public void run() {
try { try {
s3Client.putObject(request); s3Client.putObject(request);
} catch (AmazonClientException e) { } catch (AmazonClientException e) {
logger.log(Level.WARNING, "Could not store file", e); logger.log(Level.WARNING, "Could not store file", e);
} }
}; };
}.run(); }.run();
URI uri = getUri(key); URI uri = getUri(key);
logger.info("Stored file " + uri); logger.info("Stored file " + uri);
return uri; return uri;
@@ -138,14 +137,14 @@ public class AmazonS3FileStorageServiceImpl extends BaseFileStorageServiceImpl i
s3.doesBucketExist(bucketName.getValue()); s3.doesBucketExist(bucketName.getValue());
} catch (Exception e) { } catch (Exception e) {
throw new InvalidPropertiesException("invalid credentials or not enough access rights for the bucket", 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, new Pair<FileStorageServiceProperty, String>(accessId, "seems to be invalid"),
"seems to be invalid")); new Pair<FileStorageServiceProperty, String>(accessKey, "seems to be invalid"));
} }
// test if bucket exists // test if bucket exists
if (!s3.doesBucketExist(bucketName.getValue())) { if (!s3.doesBucketExist(bucketName.getValue())) {
throw new InvalidPropertiesException("invalid bucket", new Pair<FileStorageServiceProperty, String>(bucketName, throw new InvalidPropertiesException("invalid bucket", new Pair<FileStorageServiceProperty, String>(
"bucket does not exist")); bucketName, "bucket does not exist"));
} }
} }
} }
@@ -1,6 +1,7 @@
package com.sap.sse.filestorage.impl; package com.sap.sse.filestorage.impl;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import com.sap.sse.common.IsManagedByCache; import com.sap.sse.common.IsManagedByCache;
@@ -11,12 +12,12 @@ import com.sap.sse.filestorage.FileStorageServiceResolver;
public abstract class BaseFileStorageServiceImpl implements FileStorageService { public abstract class BaseFileStorageServiceImpl implements FileStorageService {
private static final long serialVersionUID = 7787261863522200165L; private static final long serialVersionUID = 7787261863522200165L;
private final String name; private final String name;
private final String description; private final String descriptionKey;
protected final Map<String, FileStorageServicePropertyImpl> propertiesByNameInInsertionOrder = new LinkedHashMap<>(); protected final Map<String, FileStorageServicePropertyImpl> propertiesByNameInInsertionOrder = new LinkedHashMap<>();
protected BaseFileStorageServiceImpl(String name, String description) { protected BaseFileStorageServiceImpl(String name, String descriptionKey) {
this.name = name; this.name = name;
this.description = description; this.descriptionKey = descriptionKey;
} }
protected void addProperties(FileStorageServicePropertyImpl... properties) { protected void addProperties(FileStorageServicePropertyImpl... properties) {
@@ -31,8 +32,8 @@ public abstract class BaseFileStorageServiceImpl implements FileStorageService {
} }
@Override @Override
public String getDescription() { public String getDescription(Locale locale) {
return description; return FileStorageI18n.STRING_MESSAGES.get(locale, descriptionKey);
} }
@Override @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; package com.sap.sse.filestorage.impl;
import java.util.Locale;
import com.sap.sse.filestorage.FileStorageServiceProperty; import com.sap.sse.filestorage.FileStorageServiceProperty;
public class FileStorageServicePropertyImpl implements FileStorageServiceProperty { public class FileStorageServicePropertyImpl implements FileStorageServiceProperty {
private static final long serialVersionUID = -8418630141746910125L; private static final long serialVersionUID = -8418630141746910125L;
private final boolean isRequired; private final boolean isRequired;
private final String name; private final String name;
private final String description; private final String descriptionKey;
private String value; private String value;
public FileStorageServicePropertyImpl(String name, boolean isRequired, String description) { public FileStorageServicePropertyImpl(String name, boolean isRequired, String descriptionKey) {
this(name, isRequired, description, null);
}
public FileStorageServicePropertyImpl(String name, boolean isRequired, String description, String value) {
this.name = name; this.name = name;
this.description = description; this.descriptionKey = descriptionKey;
this.value = value;
this.isRequired = isRequired; this.isRequired = isRequired;
} }
@@ -36,8 +33,8 @@ public class FileStorageServicePropertyImpl implements FileStorageServicePropert
} }
@Override @Override
public String getDescription() { public String getDescription(Locale locale) {
return description; return FileStorageI18n.STRING_MESSAGES.get(locale, descriptionKey);
} }
public void setValue(String value) { public void setValue(String value) {
@@ -38,17 +38,15 @@ public class LocalFileStorageServiceImpl extends BaseFileStorageServiceImpl impl
private static final long serialVersionUID = -8661781258137340835L; private static final long serialVersionUID = -8661781258137340835L;
private static final String testFile = "Bundesliga2014_Regatta6_eventteaser.jpg"; private static final String testFile = "Bundesliga2014_Regatta6_eventteaser.jpg";
public static final String NAME = "Local Storage"; 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 static final Logger logger = Logger.getLogger(LocalFileStorageServiceImpl.class.getName());
private final FileStorageServicePropertyImpl baseURL = new FileStorageServicePropertyImpl("baseURL", true, private final FileStorageServicePropertyImpl baseURL = new FileStorageServicePropertyImpl("baseURL", true, "localBaseUrlDesc");
"Base URL: Base URL + fileName = URL where uploaded file will be accessible"); private final FileStorageServicePropertyImpl localPath = new FileStorageServicePropertyImpl("localPath", true, "localLocalPathDesc");
private final FileStorageServicePropertyImpl localPath = new FileStorageServicePropertyImpl("localPath", true, "Local Path to use for file storage");
protected LocalFileStorageServiceImpl() { protected LocalFileStorageServiceImpl() {
super(NAME, DESCRIPTION); super(NAME, "localDesc");
addProperties(baseURL, localPath); addProperties(baseURL, localPath);
} }
@@ -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.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler; 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.CellTable;
import com.google.gwt.user.cellview.client.Column; import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy; 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.ListBox;
import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.ListDataProvider; 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.ErrorReporter;
import com.sap.sse.gwt.client.controls.TabbingTextInputCell; import com.sap.sse.gwt.client.controls.TabbingTextInputCell;
import com.sap.sse.gwt.client.filestorage.FileStorageManagementGwtServiceAsync; import com.sap.sse.gwt.client.filestorage.FileStorageManagementGwtServiceAsync;
@@ -182,7 +185,7 @@ public class FileStoragePanel extends FlowPanel {
* @param callback * @param callback
*/ */
private void testProperties(final Callback<Void, Void> callback) { private void testProperties(final Callback<Void, Void> callback) {
sailingService.testFileStorageServiceProperties(getSelectedServiceName(), sailingService.testFileStorageServiceProperties(getSelectedServiceName(), getLocaleInfo(),
new AsyncCallback<FileStorageServicePropertyErrorsDTO>() { new AsyncCallback<FileStorageServicePropertyErrorsDTO>() {
@Override @Override
public void onSuccess(FileStorageServicePropertyErrorsDTO result) { public void onSuccess(FileStorageServicePropertyErrorsDTO result) {
@@ -243,7 +246,7 @@ public class FileStoragePanel extends FlowPanel {
saveAndTestProperties(new Callback<Void, Void>() { saveAndTestProperties(new Callback<Void, Void>() {
@Override @Override
public void onSuccess(Void result) { public void onSuccess(Void result) {
sailingService.setActiveFileStorageService(getSelectedServiceName(), new AsyncCallback<Void>() { sailingService.setActiveFileStorageService(getSelectedServiceName(), getLocaleInfo(), new AsyncCallback<Void>() {
@Override @Override
public void onSuccess(Void result) { public void onSuccess(Void result) {
activeServiceLabel.setText(getSelectedServiceName()); activeServiceLabel.setText(getSelectedServiceName());
@@ -276,6 +279,10 @@ public class FileStoragePanel extends FlowPanel {
serviceDescriptionLabel.setText(selected.description); serviceDescriptionLabel.setText(selected.description);
properties.addAll(Arrays.asList(selected.properties)); properties.addAll(Arrays.asList(selected.properties));
} }
private String getLocaleInfo() {
return LocaleInfo.getCurrentLocale().getLocaleName();
}
private void refresh() { private void refresh() {
String oldSelectedService = getSelectedServiceName(); String oldSelectedService = getSelectedServiceName();
@@ -299,7 +306,7 @@ public class FileStoragePanel extends FlowPanel {
} }
}); });
sailingService.getAvailableFileStorageServices(new AsyncCallback<FileStorageServiceDTO[]>() { sailingService.getAvailableFileStorageServices(getLocaleInfo(), new AsyncCallback<FileStorageServiceDTO[]>() {
@Override @Override
public void onSuccess(FileStorageServiceDTO[] result) { public void onSuccess(FileStorageServiceDTO[] result) {
for (FileStorageServiceDTO service : result) { for (FileStorageServiceDTO service : result) {
@@ -15,17 +15,17 @@ import com.sap.sse.gwt.shared.filestorage.FileStorageServicePropertyErrorsDTO;
*/ */
public interface FileStorageManagementGwtService extends RemoteService { public interface FileStorageManagementGwtService extends RemoteService {
FileStorageServiceDTO[] getAvailableFileStorageServices(); FileStorageServiceDTO[] getAvailableFileStorageServices(String localeInfoName);
/** /**
* @throws NoCorrespondingServiceRegisteredException service may have disappeared from registry in the meantime * @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 * @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} * @return may be {@code null}
@@ -10,14 +10,14 @@ public interface FileStorageManagementGwtServiceAsync {
void getActiveFileStorageServiceName(AsyncCallback<String> callback); 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, void setFileStorageServiceProperties(String serviceName, Map<String, String> properties,
AsyncCallback<Void> callback); AsyncCallback<Void> callback);
void testFileStorageServiceProperties(String serviceName, void testFileStorageServiceProperties(String serviceName, String localeInfoName,
AsyncCallback<FileStorageServicePropertyErrorsDTO> callback); AsyncCallback<FileStorageServicePropertyErrorsDTO> callback);
} }
@@ -3,6 +3,7 @@ package com.sap.sse.gwt.server.filestorage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; 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; import com.sap.sse.gwt.shared.filestorage.FileStorageServicePropertyErrorsDTO;
public class FileStorageServiceDTOUtils { public class FileStorageServiceDTOUtils {
public static FileStorageServicePropertyDTO convert(FileStorageServiceProperty p) { public static FileStorageServicePropertyDTO convert(FileStorageServiceProperty p, Locale locale) {
return new FileStorageServicePropertyDTO(p.isRequired(), p.getName(), p.getValue(), p.getDescription()); 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<>(); Map<FileStorageServicePropertyDTO, String> msgs = new HashMap<>();
for (Entry<FileStorageServiceProperty, String> entry : e.getPerPropertyMessage().entrySet()) { 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); 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<>(); List<FileStorageServicePropertyDTO> pDtos = new ArrayList<>();
for (FileStorageServiceProperty p : s.getProperties()) { 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 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: com.sap.sse, Export-Package: com.sap.sse,
com.sap.sse.gateway, com.sap.sse.gateway,
com.sap.sse.i18n,
com.sap.sse.i18n.impl,
com.sap.sse.osgi, com.sap.sse.osgi,
com.sap.sse.util, com.sap.sse.util,
com.sap.sse.util.impl, 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.HashMap;
import java.util.Locale; import java.util.Locale;
import java.util.Map; 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(); 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.Collection;
import java.util.HashMap; import java.util.HashMap;
@@ -10,27 +10,30 @@ import java.util.MissingResourceException;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; 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<>(); stringMessages = new HashSet<>();
} }
public CompoundDataMiningStringMessages(Collection<DataMiningStringMessages> stringMessages) { public CompoundResourceBundleStringMessages(Collection<ResourceBundleStringMessages> stringMessages) {
this.stringMessages = new HashSet<>(stringMessages); this.stringMessages = new HashSet<>(stringMessages);
} }
public void addStringMessages(DataMiningStringMessages stringMessages) { public void addStringMessages(ResourceBundleStringMessages stringMessages) {
this.stringMessages.add(stringMessages); this.stringMessages.add(stringMessages);
} }
public void removeStringMessages(DataMiningStringMessages stringMessages) { public void removeStringMessages(ResourceBundleStringMessages stringMessages) {
this.stringMessages.remove(stringMessages); this.stringMessages.remove(stringMessages);
} }
@@ -41,8 +44,8 @@ public class CompoundDataMiningStringMessages implements DataMiningStringMessage
@Override @Override
public String get(Locale locale, String messageKey, String... parameters) { public String get(Locale locale, String messageKey, String... parameters) {
Map<DataMiningStringMessages, String> messages = new HashMap<>(); Map<ResourceBundleStringMessages, String> messages = new HashMap<>();
for (DataMiningStringMessages stringMessages : this.stringMessages) { for (ResourceBundleStringMessages stringMessages : this.stringMessages) {
try { try {
messages.put(stringMessages, stringMessages.get(locale, messageKey, parameters)); messages.put(stringMessages, stringMessages.get(locale, messageKey, parameters));
} catch (MissingResourceException e) { } catch (MissingResourceException e) {
@@ -51,10 +54,10 @@ public class CompoundDataMiningStringMessages implements DataMiningStringMessage
return getBestMessageAndLogConflicts(messageKey, messages); 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 bestMessageResourceBaseName = null;
String bestMessage = null; String bestMessage = null;
for (Entry<DataMiningStringMessages, String> messagesEntry : messages.entrySet()) { for (Entry<ResourceBundleStringMessages, String> messagesEntry : messages.entrySet()) {
String message = messagesEntry.getValue(); String message = messagesEntry.getValue();
if (message != null) { if (message != null) {
if (bestMessage == null) { if (bestMessage == null) {
@@ -74,7 +77,7 @@ public class CompoundDataMiningStringMessages implements DataMiningStringMessage
} }
private void logPossibleConflicts(String messageKey, String bestMessageResourceBaseName, String bestMessage, private void logPossibleConflicts(String messageKey, String bestMessageResourceBaseName, String bestMessage,
Entry<DataMiningStringMessages, String> messagesEntry) { Entry<ResourceBundleStringMessages, String> messagesEntry) {
String messageResourceBaseName = messagesEntry.getKey().getResourceBaseName(); String messageResourceBaseName = messagesEntry.getKey().getResourceBaseName();
String message = messagesEntry.getValue(); 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.Locale;
import java.util.ResourceBundle; 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_START = "\\{";
private static final String MESSAGE_PARAMETER_END = "\\}"; private static final String MESSAGE_PARAMETER_END = "\\}";
@@ -13,7 +13,7 @@ public class DataMiningStringMessagesImpl implements DataMiningStringMessages {
private final String resourceBaseName; private final String resourceBaseName;
private final ClassLoader resourceClassLoader; private final ClassLoader resourceClassLoader;
public DataMiningStringMessagesImpl(String resourceBaseName, ClassLoader resourceClassLoader) { public ResourceBundleStringMessagesImpl(String resourceBaseName, ClassLoader resourceClassLoader) {
this.resourceBaseName = resourceBaseName; this.resourceBaseName = resourceBaseName;
this.resourceClassLoader = resourceClassLoader; this.resourceClassLoader = resourceClassLoader;
} }