Update of 
/var/cvs/contributions/CMSContainer_Modules/dataconversion/src/java/com/finalist/cmsc/dataconversion/dataaccess
In directory james.mmbase.org:/tmp/cvs-serv2526/dataaccess

Modified Files:
        DataAccessor.java 
Log Message:
CMSC-1166, KNMI migration to the CMS Container,deal with charaterset


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/dataconversion/src/java/com/finalist/cmsc/dataconversion/dataaccess
See also: http://www.mmbase.org/jira/browse/CMSC-1166


Index: DataAccessor.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/dataconversion/src/java/com/finalist/cmsc/dataconversion/dataaccess/DataAccessor.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- DataAccessor.java   10 Dec 2008 07:17:55 -0000      1.8
+++ DataAccessor.java   18 Dec 2008 07:11:44 -0000      1.9
@@ -2,6 +2,7 @@
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 import java.sql.Blob;
 import java.sql.Connection;
 import java.sql.ResultSet;
@@ -27,6 +28,7 @@
    
    private static final Logger log = 
Logging.getLoggerInstance(DataAccessor.class.getName());
      
+   public static String encoding;
    private DataSource dataSource;   
    private ElementMeta elementMeta;   
    private Query query;   
@@ -170,11 +172,11 @@
          Elements element = new Elements();
          for(String fieldName : elementMeta.getFieldNames()) {
             if(StringUtils.isNotEmpty(fieldName)) {
-               
if(StringUtils.isEmpty(elementMeta.getStyle(fieldName))&&StringUtils.isEmpty(elementMeta.getPrefix(fieldName))
 || (rs.getObject(fieldName) != null && 
rs.getObject(fieldName).toString().startsWith(URL_PROTOCOL))) {
-                  
element.setValue(elementMeta.getDesFieldName(fieldName),rs.getObject(fieldName));
+               
if(StringUtils.isEmpty(elementMeta.getStyle(fieldName))&&StringUtils.isEmpty(elementMeta.getPrefix(fieldName))
 || (encoding(rs, fieldName) != null && encoding(rs, 
fieldName).toString().startsWith(URL_PROTOCOL))) {
+                  
element.setValue(elementMeta.getDesFieldName(fieldName),encoding(rs, 
fieldName));
                }
                else if(!StringUtils.isEmpty(elementMeta.getPrefix(fieldName))){
-                  
element.setValue(elementMeta.getDesFieldName(fieldName),elementMeta.getPrefix(fieldName)+rs.getObject(fieldName));
+                  
element.setValue(elementMeta.getDesFieldName(fieldName),elementMeta.getPrefix(fieldName)+encoding(rs,
 fieldName));
                }else if(!StringUtils.isEmpty(elementMeta.getStyle(fieldName))){
                   String changeMethod=elementMeta.getStyle(fieldName);
                   Object o=changeStyle(changeMethod,rs,fieldName);
@@ -188,6 +190,20 @@
       }
    }
    
+   private Object encoding(ResultSet rs, String fieldName) throws SQLException 
{
+      Object obj=rs.getObject(fieldName);
+      if (obj instanceof String&&StringUtils.isBlank(encoding)) {
+         try {
+            String untrimmedResult = new String(((String) 
obj).getBytes(encoding), "utf-8");
+            return untrimmedResult;
+         } catch (UnsupportedEncodingException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+         }
+      }
+      return obj;
+   }
+   
    private Object changeStyle(String changeMethod, ResultSet rs, String 
fieldName) {
       try {
          if (INT_TO_DATA.equals(changeMethod)) {
@@ -205,7 +221,7 @@
             byte[] b = new byte[4096];
             try {
                for (int n; (n = inStream.read(b)) != -1;) {
-                  out.append(new String(b, 0, n));
+                  out.append(new String(b, 0, n, "utf-8"));
                }
             } catch (IOException e) {
                log.error("changeMethod failure!"+changeMethod+"can't make 
datatype chnge!"+e.getMessage());
@@ -218,7 +234,7 @@
             if("1".equals(s.trim())){
                return true;
             }
-            return org.mmbase.util.transformers.Xml.XMLEscape(s);
+            return s;
          }
       } catch (SQLException e) {
          log.error("changeMethod failure!"+changeMethod+"can't make datatype 
chnge!"+e.getMessage());
@@ -233,11 +249,11 @@
          Elements element = new Elements();
          for(String fieldName : elementMeta.getRelateFields()) {
             if(StringUtils.isNotEmpty(fieldName)) {
-               if(StringUtils.isEmpty(elementMeta.getPrefix(fieldName))  || 
(rs.getObject(fieldName) != null && 
rs.getObject(fieldName).toString().startsWith(URL_PROTOCOL))) {
-                  
element.setValue(elementMeta.getDesFieldName(fieldName),rs.getObject(fieldName));
+               if(StringUtils.isEmpty(elementMeta.getPrefix(fieldName))  || 
(encoding(rs, fieldName) != null && encoding(rs, 
fieldName).toString().startsWith(URL_PROTOCOL))) {
+                  
element.setValue(elementMeta.getDesFieldName(fieldName),encoding(rs, 
fieldName));
                }
                else {
-                  
element.setValue(elementMeta.getDesFieldName(fieldName),elementMeta.getPrefix(fieldName)+rs.getObject(fieldName));
+                  
element.setValue(elementMeta.getDesFieldName(fieldName),elementMeta.getPrefix(fieldName)+encoding(rs,
 fieldName));
                }
             }
          }
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to