Try to deal with encoding
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 15 Oct 2009 14:56:38 +0000 (14:56 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 15 Oct 2009 14:56:38 +0000 (14:56 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@3038 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonServerSerializer.java
server/runtime/org.argeo.server.jxl/src/main/java/org/argeo/server/jxl/dao/JxlDaoSupport.java
server/runtime/org.argeo.server.jxl/src/test/java/org/argeo/server/jxl/dao/JxlDaoSupportTest.java
server/runtime/org.argeo.server.jxl/src/test/resources/dao/simple.xls

index 90a9c135c2815a37637f4d2f85b685a32c7ab38c..4f762f16867c8f92fd15b172bf73849b3e0507d9 100644 (file)
@@ -21,23 +21,32 @@ public class JsonServerSerializer implements ServerSerializer {
        private JsonFactory jsonFactory = new JsonFactory();
        private ObjectMapper objectMapper = new ObjectMapper();
 
-       private Boolean prettyPrint = true;
+       private Boolean prettyPrint = false;
+
+       // private String encoding = "UTF8";
 
        public void serialize(Object obj, HttpServletRequest request,
                        HttpServletResponse response) {
                JsonGenerator jsonGenerator = null;
                try {
                        response.setContentType("application/json");
+                       // response.setHeader("Content-Encoding", "UTF-8");
 
                        StringWriter stringWriter = null;
                        if (log.isTraceEnabled()) {
                                stringWriter = new StringWriter();
-                               jsonGenerator = jsonFactory.createJsonGenerator(stringWriter);
-                       } else {
-                               jsonGenerator = jsonFactory.createJsonGenerator(response
-                                               .getWriter());
+                               JsonGenerator jsonGeneratorLog = jsonFactory
+                                               .createJsonGenerator(stringWriter);
+                               jsonGeneratorLog.useDefaultPrettyPrinter();
+                               objectMapper.writeValue(jsonGenerator, obj);
+                               jsonGeneratorLog.close();
                        }
 
+                       // jsonGenerator = jsonFactory.createJsonGenerator(response
+                       // .getOutputStream(), JsonEncoding.valueOf(encoding));
+                       jsonGenerator = jsonFactory.createJsonGenerator(response
+                                       .getWriter());
+
                        if (prettyPrint)
                                jsonGenerator.useDefaultPrettyPrinter();
 
index 015dc06be451661acf6b3739c48b9077f2a5d1f5..dbd0793d9244e69aecfb8a9678b1a4fcfb7cede1 100644 (file)
@@ -1,6 +1,7 @@
 package org.argeo.server.jxl.dao;
 
 import java.io.InputStream;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -13,6 +14,7 @@ import jxl.FormulaCell;
 import jxl.JXLException;
 import jxl.Sheet;
 import jxl.Workbook;
+import jxl.WorkbookSettings;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
@@ -45,6 +47,8 @@ public class JxlDaoSupport implements LightDaoSupport, ApplicationContextAware,
 
        private List<Resource> workbooks = new ArrayList<Resource>();
 
+       private Integer charset = 0;
+
        public void afterPropertiesSet() throws Exception {
                init();
        }
@@ -85,7 +89,9 @@ public class JxlDaoSupport implements LightDaoSupport, ApplicationContextAware,
        public void load(InputStream in, List<Reference> references,
                        Map<String, List<Object>> tempRefs) {
                try {
-                       Workbook workbook = Workbook.getWorkbook(in);
+                       WorkbookSettings workbookSettings = new WorkbookSettings();
+                       workbookSettings.setCharacterSet(charset);
+                       Workbook workbook = Workbook.getWorkbook(in, workbookSettings);
                        for (Sheet sheet : workbook.getSheets()) {
                                loadSheet(sheet, references, tempRefs);
                        }
@@ -321,6 +327,18 @@ public class JxlDaoSupport implements LightDaoSupport, ApplicationContextAware,
                this.classLoader = classLoader;
        }
 
+       public List<Class<?>> getAdditionalClasses() {
+               return additionalClasses;
+       }
+
+       public void setAdditionalClasses(List<Class<?>> additionalClasses) {
+               this.additionalClasses = additionalClasses;
+       }
+
+       public void setCharset(Integer charset) {
+               this.charset = charset;
+       }
+
        public static class Reference {
                private Object object;
                private String property;
index 0a003b6b773552ec42a2926fea8e8cf894ca4305..76c44a7f53286e4e640dab064993bac914c5153f 100644 (file)
@@ -28,6 +28,6 @@ public class JxlDaoSupportTest extends TestCase {
                                .getString());
 
                List<SimpleObject> simpleObjects = jsd.list(SimpleObject.class, null);
-               assertEquals(2, simpleObjects.size());
+               assertEquals(4, simpleObjects.size());
        }
 }
index ad69850f1066fba3a7daa2626f67b68e8ec50875..d016ce939d26207b2dbe919b8ea6704b9044cfa7 100644 (file)
Binary files a/server/runtime/org.argeo.server.jxl/src/test/resources/dao/simple.xls and b/server/runtime/org.argeo.server.jxl/src/test/resources/dao/simple.xls differ