Repository: incubator-unomi
Updated Branches:
  refs/heads/master 061ee51e0 -> d2a480cf5


UNOMI-101 : Add hasHeader, hasDeleteColumn flags in importConfig


Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/91e23a29
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/91e23a29
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/91e23a29

Branch: refs/heads/master
Commit: 91e23a29e8d769cd10deb13f5983cd0a34a161e5
Parents: 061ee51
Author: Abdelkader Midani <amid...@apache.org>
Authored: Tue Jul 4 16:47:38 2017 +0200
Committer: Abdelkader Midani <amid...@apache.org>
Committed: Tue Jul 4 16:47:38 2017 +0200

----------------------------------------------------------------------
 .../unomi/router/api/ImportConfiguration.java   | 24 ++++++++++++++++++++
 .../unomi/router/api/RouterConstants.java       |  3 ++-
 .../ImportRouteCompletionProcessor.java         |  8 +++++--
 .../core/processor/LineSplitProcessor.java      | 23 +++++++++++++++----
 .../ProfileImportFromSourceRouteBuilder.java    |  2 ++
 5 files changed, 53 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/91e23a29/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportConfiguration.java
----------------------------------------------------------------------
diff --git 
a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportConfiguration.java
 
b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportConfiguration.java
index b961cfb..a6850ef 100644
--- 
a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportConfiguration.java
+++ 
b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/ImportConfiguration.java
@@ -36,6 +36,8 @@ public class ImportConfiguration extends 
ImportExportConfiguration {
     private String mergingProperty;
     private boolean overwriteExistingProfiles = false;
     private List<String> propertiesToOverwrite;
+    private boolean hasHeader = false;
+    private boolean hasDeleteColumn = false;
 
 
     public String getMergingProperty() {
@@ -68,6 +70,11 @@ public class ImportConfiguration extends 
ImportExportConfiguration {
         this.overwriteExistingProfiles = overwriteExistingProfiles;
     }
 
+    /**
+     * Retrieves the import configuration propertiesToOverwrite field.
+     *
+     * @return propertiesToOverwrite list.
+     */
     public List<String> getPropertiesToOverwrite() {
         return propertiesToOverwrite;
     }
@@ -76,4 +83,21 @@ public class ImportConfiguration extends 
ImportExportConfiguration {
         this.propertiesToOverwrite = propertiesToOverwrite;
     }
 
+    /**
+     * Retrieves the hasHeader flag.
+     *
+     * @return true if the file imported by the current config has a header 
line.
+     */
+    public boolean isHasHeader() {
+        return this.hasHeader;
+    }
+
+    /**
+     * Retrieves the hasDeleteColumn flag.
+     *
+     * @return true if the file imported by the current config has a delete 
column.
+     */
+    public boolean isHasDeleteColumn() {
+        return this.hasDeleteColumn;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/91e23a29/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/RouterConstants.java
----------------------------------------------------------------------
diff --git 
a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/RouterConstants.java
 
b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/RouterConstants.java
index 6f6d5f5..0fca0e0 100644
--- 
a/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/RouterConstants.java
+++ 
b/extensions/router/router-api/src/main/java/org/apache/unomi/router/api/RouterConstants.java
@@ -48,10 +48,11 @@ public interface RouterConstants {
     String DEFAULT_FILE_COLUMN_SEPARATOR = ",";
 
     String DEFAULT_FILE_LINE_SEPARATOR = "\n";
-
     String KEY_HISTORY_SIZE = "historySize";
     String KEY_CSV_CONTENT = "csvContent";
     String KEY_EXECS = "execs";
     Object KEY_EXECS_DATE = "date";
     Object KEY_EXECS_EXTRACTED = "extractedProfiles";
+
+    String SYSTEM_SCOPE = "integration";
 }

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/91e23a29/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ImportRouteCompletionProcessor.java
----------------------------------------------------------------------
diff --git 
a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ImportRouteCompletionProcessor.java
 
b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ImportRouteCompletionProcessor.java
index 8323879..ac39312 100644
--- 
a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ImportRouteCompletionProcessor.java
+++ 
b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/ImportRouteCompletionProcessor.java
@@ -60,16 +60,20 @@ public class ImportRouteCompletionProcessor implements 
Processor {
             }
         }
 
+        Integer nbTotal = (Integer) exchange.getProperty("CamelSplitSize");
+        if(importConfiguration.isHasHeader()) {
+            nbTotal--;
+        }
+
         Map execution = new HashMap();
         execution.put("date", ((Date) 
exchange.getProperty("CamelCreatedTimestamp")).getTime());
-        execution.put("totalLinesNb", exchange.getProperty("CamelSplitSize"));
+        execution.put("totalLinesNb", nbTotal);
         execution.put("successCount", successCount);
         execution.put("failureCount", failureCount);
         execution.put("errors", errors);
 
         importConfiguration = (ImportConfiguration) 
RouterUtils.addExecutionEntry(importConfiguration, 
execution,executionsHistorySize);
 
-        importConfiguration.getExecutions().add(execution);
         //Set running to false, route is complete
         if (failureCount > 0 && successCount > 0) {
             
importConfiguration.setStatus(RouterConstants.CONFIG_STATUS_COMPLETE_WITH_ERRORS);

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/91e23a29/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 e047b63..2eadb91 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
@@ -39,10 +39,17 @@ public class LineSplitProcessor implements Processor {
     private List<String> propertiesToOverwrite;
     private String mergingProperty;
     private boolean overwriteExistingProfiles;
+    private boolean hasHeader;
+    private boolean hasDeleteColumn;
     private String columnSeparator;
 
     @Override
     public void process(Exchange exchange) throws Exception {
+
+        if ((Integer) exchange.getProperty("CamelSplitIndex") == 0 && 
hasHeader) {
+            exchange.setProperty(Exchange.ROUTE_STOP, Boolean.TRUE);
+            return;
+        }
         //In case of one shot import we check the header and overwrite import 
config
         ImportConfiguration importConfigOneShot = (ImportConfiguration) 
exchange.getIn().getHeader(RouterConstants.HEADER_IMPORT_CONFIG_ONESHOT);
         String configType = (String) 
exchange.getIn().getHeader(RouterConstants.HEADER_CONFIG_TYPE);
@@ -52,12 +59,15 @@ public class LineSplitProcessor implements Processor {
             mergingProperty = importConfigOneShot.getMergingProperty();
             overwriteExistingProfiles = 
importConfigOneShot.isOverwriteExistingProfiles();
             columnSeparator = importConfigOneShot.getColumnSeparator();
+            hasHeader = importConfigOneShot.isHasHeader();
+            hasDeleteColumn = importConfigOneShot.isHasDeleteColumn();
         }
+
         String[] profileData = ((String) 
exchange.getIn().getBody()).split(columnSeparator, -1);
         ProfileToImport profileToImport = new ProfileToImport();
         profileToImport.setItemId(UUID.randomUUID().toString());
         profileToImport.setItemType("profile");
-        profileToImport.setScope("system");
+        profileToImport.setScope(RouterConstants.SYSTEM_SCOPE);
         if (profileData.length > 0 && StringUtils.isNotBlank(profileData[0])) {
             if (fieldsMapping.size() != (profileData.length - 1)) {
                 throw new BadProfileDataFormatException("The mapping does not 
match the number of column : line [" + ((Integer) 
exchange.getProperty("CamelSplitIndex") + 1) + "]", new 
Throwable("MAPPING_COLUMN_MATCH"));
@@ -72,7 +82,8 @@ public class LineSplitProcessor implements Processor {
             profileToImport.setMergingProperty(mergingProperty);
             profileToImport.setPropertiesToOverwrite(propertiesToOverwrite);
             
profileToImport.setOverwriteExistingProfiles(overwriteExistingProfiles);
-            if (StringUtils.isNotBlank(profileData[profileData.length - 1]) && 
Boolean.parseBoolean(profileData[profileData.length - 1].trim())) {
+            if (hasDeleteColumn && 
StringUtils.isNotBlank(profileData[profileData.length - 1]) &&
+                    Boolean.parseBoolean(profileData[profileData.length - 
1].trim())) {
                 profileToImport.setProfileToDelete(true);
             }
         } else {
@@ -102,8 +113,12 @@ public class LineSplitProcessor implements Processor {
         this.overwriteExistingProfiles = overwriteExistingProfiles;
     }
 
-    public String getMergingProperty() {
-        return this.mergingProperty;
+    public void setHasHeader(boolean hasHeader) {
+        this.hasHeader = hasHeader;
+    }
+
+    public void setHasDeleteColumn(boolean hasDeleteColumn) {
+        this.hasDeleteColumn = hasDeleteColumn;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/91e23a29/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportFromSourceRouteBuilder.java
----------------------------------------------------------------------
diff --git 
a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportFromSourceRouteBuilder.java
 
b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportFromSourceRouteBuilder.java
index e3ec8bd..06c8513 100644
--- 
a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportFromSourceRouteBuilder.java
+++ 
b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/route/ProfileImportFromSourceRouteBuilder.java
@@ -81,6 +81,8 @@ public class ProfileImportFromSourceRouteBuilder extends 
RouterAbstractRouteBuil
                 
lineSplitProcessor.setPropertiesToOverwrite(importConfiguration.getPropertiesToOverwrite());
                 
lineSplitProcessor.setMergingProperty(importConfiguration.getMergingProperty());
                 
lineSplitProcessor.setColumnSeparator(importConfiguration.getColumnSeparator());
+                
lineSplitProcessor.setHasHeader(importConfiguration.isHasHeader());
+                
lineSplitProcessor.setHasDeleteColumn(importConfiguration.isHasDeleteColumn());
 
                 String endpoint = (String) 
importConfiguration.getProperties().get("source");
 

Reply via email to