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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs