You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2018/02/01 08:36:58 UTC

[camel] 02/02: update bindy csv by annoation skipField

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 609bbf4fb80aa93d769266d0ea3f44fad9bfe9a5
Author: longxu <ne...@gmail.com>
AuthorDate: Tue Jan 30 22:56:19 2018 +1100

    update bindy csv by annoation skipField
---
 .../camel/dataformat/bindy/BindyCsvFactory.java    | 34 ++++++++++------------
 .../dataformat/bindy/annotation/CsvRecord.java     |  6 ++++
 .../dataformat/bindy/csv/BindyCsvDataFormat.java   | 16 +---------
 .../bindy/csv/BindyCsvSkipFieldTest.java           |  4 +--
 4 files changed, 24 insertions(+), 36 deletions(-)

diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
index 0015947..e2046c9 100755
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/BindyCsvFactory.java
@@ -37,8 +37,6 @@ import org.apache.camel.dataformat.bindy.annotation.OneToMany;
 import org.apache.camel.dataformat.bindy.annotation.Section;
 import org.apache.camel.dataformat.bindy.format.FormatException;
 import org.apache.camel.dataformat.bindy.util.ConverterUtils;
-import org.apache.camel.impl.DefaultClassResolver;
-import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ReflectionHelper;
 import org.slf4j.Logger;
@@ -67,6 +65,7 @@ public class BindyCsvFactory extends BindyAbstractFactory implements BindyFactor
 
     private String separator;
     private boolean skipFirstLine;
+    private boolean skipField;
     private boolean generateHeaderColumnNames;
     private boolean messageOrdered;
     private String quote;
@@ -75,20 +74,12 @@ public class BindyCsvFactory extends BindyAbstractFactory implements BindyFactor
     private boolean allowEmptyStream;
     private boolean quotingEscaped;
     private boolean endWithLineBreak;
-    
-    private boolean isSkipField;
 
     public BindyCsvFactory(Class<?> type) throws Exception {
-        this(type, false);
-    }
-
-    public BindyCsvFactory(Class<?> type, boolean isSkipField) throws Exception {
         super(type);
 
         // initialize specific parameters of the csv model
         initCsvModel();
-        
-        this.isSkipField = isSkipField;
     }
 
     /**
@@ -611,6 +602,10 @@ public class BindyCsvFactory extends BindyAbstractFactory implements BindyFactor
                     skipFirstLine = record.skipFirstLine();
                     LOG.debug("Skip First Line parameter of the CSV: {}" + skipFirstLine);
 
+                    // Get skipFirstLine parameter
+                    skipField = record.skipField();
+                    LOG.debug("Skip Field parameter of the CSV: {}" + skipField);
+
                     // Get generateHeaderColumnNames parameter
                     generateHeaderColumnNames = record.generateHeaderColumns();
                     LOG.debug("Generate header column names parameter of the CSV: {}", generateHeaderColumnNames);
@@ -710,6 +705,15 @@ public class BindyCsvFactory extends BindyAbstractFactory implements BindyFactor
     }
 
     /**
+     *  Indicate if can skip fields
+     * 
+     * @return boolean
+     */
+    public boolean isSkipField() {
+        return this.skipField;
+    }
+
+    /**
      * If last record is to span the rest of the line
      */
     public boolean getAutospanLine() {
@@ -740,13 +744,5 @@ public class BindyCsvFactory extends BindyAbstractFactory implements BindyFactor
     public boolean isEndWithLineBreak() {
         return endWithLineBreak;
     }
-
-    /**
-     * Indicate if DataField can be ignored
-     * 
-     * @return boolean
-     */
-    public boolean isSkipField() {
-        return this.isSkipField;
-    }
+    
 }
diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/CsvRecord.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/CsvRecord.java
index dd7bd18..6175e5c 100755
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/CsvRecord.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/CsvRecord.java
@@ -54,6 +54,12 @@ public @interface CsvRecord {
     boolean skipFirstLine() default false;
 
     /**
+     * The skipField parameter will allow to skip fields of a CSV file. 
+     * If some fields are not necessary, they can be skipped.
+     */
+    boolean skipField() default false;
+
+    /**
      * Character to be used to add a carriage return after each record
      * (optional) Three values can be used : WINDOWS, UNIX or MAC.
      */
diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
index d076198..00ea809 100755
--- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
+++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java
@@ -47,21 +47,11 @@ import org.slf4j.LoggerFactory;
 public class BindyCsvDataFormat extends BindyAbstractDataFormat {
     private static final Logger LOG = LoggerFactory.getLogger(BindyCsvDataFormat.class);
 
-    /**
-     * If isSkipField = true, a CSV file doesn't need to declare all the fields, otherwise, all the fields are mandatory.
-     */
-    private boolean isSkipField;
-
     public BindyCsvDataFormat() {
     }
 
     public BindyCsvDataFormat(Class<?> type) {
-       this(type, false);
-    }
-    
-    public BindyCsvDataFormat(Class<?> type, boolean isSkipField) {
         super(type);
-        this.isSkipField = isSkipField;
     }
 
     @Override
@@ -320,12 +310,8 @@ public class BindyCsvDataFormat extends BindyAbstractDataFormat {
 
     @Override
     protected BindyAbstractFactory createModelFactory(FormatFactory formatFactory) throws Exception {
-        BindyCsvFactory bindyCsvFactory = new BindyCsvFactory(getClassType(), isSkipField());
+        BindyCsvFactory bindyCsvFactory = new BindyCsvFactory(getClassType());
         bindyCsvFactory.setFormatFactory(formatFactory);
         return bindyCsvFactory;
     }
-
-    private boolean isSkipField() {
-        return this.isSkipField;
-    }
 }
diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyCsvSkipFieldTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyCsvSkipFieldTest.java
index f9907b5..7f4df2f 100644
--- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyCsvSkipFieldTest.java
+++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyCsvSkipFieldTest.java
@@ -57,7 +57,7 @@ public class BindyCsvSkipFieldTest  extends AbstractJUnit4SpringContextTests {
     }
 
     public static class ContextConfig extends RouteBuilder {
-        BindyCsvDataFormat camelDataFormat = new BindyCsvDataFormat(CsvSkipField.class, true);
+        BindyCsvDataFormat camelDataFormat = new BindyCsvDataFormat(CsvSkipField.class);
 
         public void configure() {
             from(URI_DIRECT_START).unmarshal(camelDataFormat)
@@ -82,7 +82,7 @@ public class BindyCsvSkipFieldTest  extends AbstractJUnit4SpringContextTests {
 
     }
     
-    @CsvRecord(separator = ",")
+    @CsvRecord(separator = ",", skipField = true)
     public static class CsvSkipField {
         @DataField(pos = 1)
         private String attention;

-- 
To stop receiving notification emails like this one, please contact
davsclaus@apache.org.