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) : "";

Reply via email to