Refactoring of propertyType list retrieval
Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/34c64e2a Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/34c64e2a Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/34c64e2a Branch: refs/heads/master Commit: 34c64e2a28680944de0f23e3146489f3000eea5e Parents: 69cdb58 Author: Abdelkader Midani <amid...@apache.org> Authored: Thu Aug 17 12:52:13 2017 +0200 Committer: Abdelkader Midani <amid...@apache.org> Committed: Thu Aug 17 12:52:13 2017 +0200 ---------------------------------------------------------------------- .../router/api/services/ProfileExportService.java | 4 ++-- .../router/core/processor/LineBuildProcessor.java | 12 +----------- .../core/processor/LineSplitFailureHandler.java | 2 +- .../router/core/processor/LineSplitProcessor.java | 7 ++++--- .../route/ProfileExportProducerRouteBuilder.java | 2 -- .../rest/ExportConfigurationServiceEndPoint.java | 3 +-- .../router/services/ProfileExportServiceImpl.java | 17 +++++++++-------- 7 files changed, 18 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/34c64e2a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ProfileExportService.java ---------------------------------------------------------------------- diff --git a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ProfileExportService.java b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ProfileExportService.java index 38aae4a..dc0d81d 100644 --- a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ProfileExportService.java +++ b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/services/ProfileExportService.java @@ -27,8 +27,8 @@ import java.util.Collection; */ public interface ProfileExportService { - String extractProfilesBySegment(ExportConfiguration exportConfiguration, Collection<PropertyType> propertiesDef); + String extractProfilesBySegment(ExportConfiguration exportConfiguration); - String convertProfileToCSVLine(Profile profile, ExportConfiguration exportConfiguration, Collection<PropertyType> propertiesDef); + String convertProfileToCSVLine(Profile profile, ExportConfiguration exportConfiguration); } http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/34c64e2a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineBuildProcessor.java ---------------------------------------------------------------------- diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineBuildProcessor.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineBuildProcessor.java index 1da4c13..6dfcf69 100644 --- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineBuildProcessor.java +++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineBuildProcessor.java @@ -35,7 +35,6 @@ public class LineBuildProcessor implements Processor { private static final Logger logger = LoggerFactory.getLogger(LineBuildProcessor.class); private ProfileExportService profileExportService; - private Collection<PropertyType> propertiesDef; public LineBuildProcessor(ProfileExportService profileExportService) { this.profileExportService = profileExportService; @@ -46,18 +45,9 @@ public class LineBuildProcessor implements Processor { ExportConfiguration exportConfiguration = (ExportConfiguration) exchange.getIn().getHeader("exportConfig"); Profile profile = exchange.getIn().getBody(Profile.class); - String lineToWrite = profileExportService.convertProfileToCSVLine(profile, exportConfiguration, propertiesDef); + String lineToWrite = profileExportService.convertProfileToCSVLine(profile, exportConfiguration ); exchange.getIn().setBody(lineToWrite, String.class); } - /** - * Sets the Property definitions list. - * - * @param propertiesDef Property definitions list - */ - public void setPropertiesDef(Collection<PropertyType> propertiesDef) { - this.propertiesDef = propertiesDef; - } - } http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/34c64e2a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitFailureHandler.java ---------------------------------------------------------------------- diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitFailureHandler.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitFailureHandler.java index 96afaac..78ecf5b 100644 --- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitFailureHandler.java +++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitFailureHandler.java @@ -20,7 +20,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.unomi.router.api.ImportLineError; import org.apache.unomi.router.api.RouterConstants; -import org.apache.unomi.router.core.exception.BadProfileDataFormatException; +import org.apache.unomi.router.api.exceptions.BadProfileDataFormatException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/34c64e2a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java ---------------------------------------------------------------------- diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java index 1e66374..5b753c9 100644 --- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java +++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java @@ -29,7 +29,7 @@ import org.apache.unomi.router.api.ImportConfiguration; import org.apache.unomi.router.api.ProfileToImport; import org.apache.unomi.router.api.RouterConstants; import org.apache.unomi.router.api.RouterUtils; -import org.apache.unomi.router.core.exception.BadProfileDataFormatException; +import org.apache.unomi.router.api.exceptions.BadProfileDataFormatException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -117,7 +117,7 @@ public class LineSplitProcessor implements Processor { properties.put(fieldMappingKey, valuesArray); } else { if(StringUtils.isNotBlank(multivalueArray)) { - properties.put(fieldMappingKey, multivalueArray); + properties.put(fieldMappingKey, new String[]{multivalueArray}); } else { properties.put(fieldMappingKey, new String[]{}); } @@ -132,7 +132,8 @@ public class LineSplitProcessor implements Processor { properties.put(fieldMappingKey, new Integer(profileData[fieldsMapping.get(fieldMappingKey)].trim())); } } catch (Exception e) { - throw new BadProfileDataFormatException("Unable to convert '" + profileData[fieldsMapping.get(fieldMappingKey)].trim() + "' to " + propertyType.getValueTypeId(), new Throwable("DATA_TYPE")); + e.printStackTrace(); + throw new BadProfileDataFormatException("Unable to convert '" + profileData[fieldsMapping.get(fieldMappingKey)].trim() + "' to " + propertyType!=null?propertyType.getValueTypeId():"Null propertyType ", new Throwable("DATA_TYPE")); } } http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/34c64e2a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileExportProducerRouteBuilder.java ---------------------------------------------------------------------- diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileExportProducerRouteBuilder.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileExportProducerRouteBuilder.java index 50d758e..9f25c3b 100644 --- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileExportProducerRouteBuilder.java +++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileExportProducerRouteBuilder.java @@ -60,8 +60,6 @@ public class ProfileExportProducerRouteBuilder extends RouterAbstractRouteBuilde } LineBuildProcessor processor = new LineBuildProcessor(profileExportService); - processor.setPropertiesDef(profileService.getAllPropertyTypes("profiles")); - rtDef.unmarshal(jacksonDataFormat) .process(processor) http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/34c64e2a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java ---------------------------------------------------------------------- diff --git a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java index 201b341..bd28b1d 100644 --- a/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java +++ b/extensions/router/router-rest/src/main/java/org/apache/unomi/router/rest/ExportConfigurationServiceEndPoint.java @@ -118,8 +118,7 @@ public class ExportConfigurationServiceEndPoint extends AbstractConfigurationSer @Consumes(MediaType.APPLICATION_JSON) @Produces("text/csv") public Response processOneshotImportConfigurationCSV(ExportConfiguration exportConfiguration) { - String csvContent = profileExportService.extractProfilesBySegment(exportConfiguration, - profileService.getAllPropertyTypes("profiles")); + String csvContent = profileExportService.extractProfilesBySegment(exportConfiguration); Response.ResponseBuilder response = Response.ok(csvContent); response.header("Content-Disposition", "attachment; filename=Profiles_export_" + new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date()) + ".csv"); http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/34c64e2a/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ProfileExportServiceImpl.java ---------------------------------------------------------------------- diff --git a/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ProfileExportServiceImpl.java b/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ProfileExportServiceImpl.java index 9e5b792..f02a406 100644 --- a/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ProfileExportServiceImpl.java +++ b/extensions/router/router-service/src/main/java/org/apache/unomi/router/services/ProfileExportServiceImpl.java @@ -39,15 +39,14 @@ public class ProfileExportServiceImpl extends AbstractCustomServiceImpl implemen private ConfigSharingService configSharingService; - public String extractProfilesBySegment(ExportConfiguration exportConfiguration, Collection<PropertyType> propertiesDef) { + public String extractProfilesBySegment(ExportConfiguration exportConfiguration) { List<Profile> profileList = persistenceService.query("segments", (String) exportConfiguration.getProperty("segment"), null, Profile.class); StringBuilder csvContent = new StringBuilder(); for (Profile profile : profileList) { - csvContent.append(convertProfileToCSVLine(profile, exportConfiguration, propertiesDef)); + csvContent.append(convertProfileToCSVLine(profile, exportConfiguration)); csvContent.append(RouterUtils.getCharFromLineSeparator(exportConfiguration.getLineSeparator())); } logger.debug("Exporting {} extracted profiles.", profileList.size()); - Map<String, Object> returnMap = new HashMap(); Map execution = new HashMap(); execution.put(RouterConstants.KEY_EXECS_DATE, new Date().getTime()); @@ -56,20 +55,22 @@ public class ProfileExportServiceImpl extends AbstractCustomServiceImpl implemen exportConfiguration = (ExportConfiguration) RouterUtils.addExecutionEntry(exportConfiguration, execution, Integer.parseInt((String) configSharingService.getProperty(RouterConstants.KEY_HISTORY_SIZE))); persistenceService.save(exportConfiguration); - returnMap.put(RouterConstants.KEY_CSV_CONTENT, csvContent); - returnMap.put(RouterConstants.KEY_EXECS, execution); - return csvContent.toString(); } - public String convertProfileToCSVLine(Profile profile, ExportConfiguration exportConfiguration, Collection<PropertyType> propertiesDef) { + public String convertProfileToCSVLine(Profile profile, ExportConfiguration exportConfiguration) { + Collection<PropertyType> propertiesDef = persistenceService.query("target", "profiles", null, PropertyType.class); Map<String, String> mapping = (Map<String, String>) exportConfiguration.getProperty("mapping"); String lineToWrite = ""; for (int i = 0; i < mapping.size(); i++) { String propertyName = mapping.get(String.valueOf(i)); + if (propertyName == null) { + logger.error("No index {} found in the provided mapping!", i); + return ""; + } PropertyType propType = RouterUtils.getPropertyTypeById(propertiesDef, propertyName); Object propertyValue = profile.getProperty(propertyName); - if (BooleanUtils.isTrue(propType.isMultivalued())) { + if (propType != null && BooleanUtils.isTrue(propType.isMultivalued())) { List<String> multiValue = (List<String>) propertyValue; lineToWrite += StringUtils.isNotBlank(exportConfiguration.getMultiValueDelimiter()) ? exportConfiguration.getMultiValueDelimiter().charAt(0) : "";