[ofbiz-framework] branch trunk updated: Improved: Add enconding type attribute for import data file tools (OFBIZ-10234) During the import of file via datafile import you may want to set encoding type. Actually only the type UTF-8 is supported. This commit allows to add a new "encoding-type" attribute into data-file to indicate the type of encoding of the imported file.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] branch trunk updated: Improved: Add enconding type attribute for import data file tools (OFBIZ-10234) During the import of file via datafile import you may want to set encoding type. Actually only the type UTF-8 is supported. This commit allows to add a new "encoding-type" attribute into data-file to indicate the type of encoding of the imported file.

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

nmalin pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/trunk by this push:
     new a1f1627  Improved: Add enconding type attribute for import data file tools (OFBIZ-10234) During the import of file via datafile import you may want to set encoding type. Actually only the type UTF-8 is supported. This commit allows to add a new "encoding-type" attribute into data-file to indicate the type of encoding of the imported file.
a1f1627 is described below

commit a1f16274c280754d5f8178e820cf261cc495aa1d
Author: Nicolas Malin <[hidden email]>
AuthorDate: Fri Nov 22 15:10:37 2019 +0100

    Improved: Add enconding type attribute for import data file tools
    (OFBIZ-10234)
    During the import of file via datafile import you may want to set encoding type.
    Actually only the type UTF-8 is supported.
    This commit allows to add a new "encoding-type" attribute into data-file to indicate the type of encoding of the imported file.
   
    Thanks to Pierre Gaudin for this improvement.
---
 framework/datafile/dtd/datafiles.xsd                        |  1 +
 .../main/java/org/apache/ofbiz/datafile/ModelDataFile.java  | 13 +++++++++++++
 .../java/org/apache/ofbiz/datafile/ModelDataFileReader.java |  1 +
 .../main/java/org/apache/ofbiz/datafile/RecordIterator.java |  6 ++++--
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/framework/datafile/dtd/datafiles.xsd b/framework/datafile/dtd/datafiles.xsd
index 3974ba9..6196c44 100644
--- a/framework/datafile/dtd/datafiles.xsd
+++ b/framework/datafile/dtd/datafiles.xsd
@@ -37,6 +37,7 @@ under the License.
         <xs:attribute name="name" use="required"/>
         <xs:attribute name="type-code" use="required"/>
         <xs:attribute name="sender"/>
+        <xs:attribute name="encoding-type"/>
         <xs:attribute name="receiver"/>
         <xs:attribute name="delimiter"/>
         <xs:attribute name="start-line"/>
diff --git a/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFile.java b/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFile.java
index abcf49c..0a268f5 100644
--- a/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFile.java
+++ b/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFile.java
@@ -62,6 +62,10 @@ public class ModelDataFile {
 
     /** A free form description of the file */
     public String description = "";
+    
+    /** file enconding, by default UTF-8 is used */
+    public String encodingType = "UTF-8";
+    
 
     /**
      * the End Of Line type (CRLF or CR)
@@ -168,4 +172,13 @@ public class ModelDataFile {
     public void setRecords(List<ModelRecord> records) {
         this.records = records;
     }
+    
+    public String getEncodingType() {
+        return encodingType;
+    }
+
+    public void setEncodingType(String encodingType) {
+        this.encodingType = encodingType;
+    }
+
 }
diff --git a/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFileReader.java b/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFileReader.java
index 3c4a2d0..2cc7e5c 100644
--- a/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFileReader.java
+++ b/framework/datafile/src/main/java/org/apache/ofbiz/datafile/ModelDataFileReader.java
@@ -74,6 +74,7 @@ public final class ModelDataFileReader {
         dataFile.typeCode = UtilXml.checkEmpty(dataFileElement.getAttribute("type-code"));
         dataFile.sender = UtilXml.checkEmpty(dataFileElement.getAttribute("sender"));
         dataFile.receiver = UtilXml.checkEmpty(dataFileElement.getAttribute("receiver"));
+        dataFile.setEncodingType(UtilXml.checkEmpty(dataFileElement.getAttribute("encoding-type")));
 
         tempStr = UtilXml.checkEmpty(dataFileElement.getAttribute("record-length"));
         if (UtilValidate.isNotEmpty(tempStr)) {
diff --git a/framework/datafile/src/main/java/org/apache/ofbiz/datafile/RecordIterator.java b/framework/datafile/src/main/java/org/apache/ofbiz/datafile/RecordIterator.java
index 2ea7fc8..7431cee 100644
--- a/framework/datafile/src/main/java/org/apache/ofbiz/datafile/RecordIterator.java
+++ b/framework/datafile/src/main/java/org/apache/ofbiz/datafile/RecordIterator.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URL;
+import java.nio.charset.Charset;
 import java.util.Stack;
 
 /**
@@ -68,11 +69,12 @@ public class RecordIterator {
     protected void setupStream(InputStream dataFileStream, String locationInfo) throws DataFileException {
         this.locationInfo = locationInfo;
         this.dataFileStream = dataFileStream;
+        String charsetStr = modelDataFile.getEncodingType();
         try {
-            this.br = new BufferedReader(new InputStreamReader(dataFileStream, "UTF-8"));
+            this.br = new BufferedReader(new InputStreamReader(dataFileStream, Charset.forName(charsetStr)));
         }
         catch (Exception e) {
-            throw new DataFileException("UTF-8 is not supported");
+            throw new DataFileException( charsetStr + " is not supported");
         }
         //move the cursor to the good start line
         try {