Index: lams_build/3rdParty.userlibraries
===================================================================
diff -u -r8385b2704597ecc42f652f4168dc02fda0c57154 -r49cb26ada930a59687956591672498c7f5613d34
--- lams_build/3rdParty.userlibraries (.../3rdParty.userlibraries) (revision 8385b2704597ecc42f652f4168dc02fda0c57154)
+++ lams_build/3rdParty.userlibraries (.../3rdParty.userlibraries) (revision 49cb26ada930a59687956591672498c7f5613d34)
@@ -112,5 +112,7 @@
+
+
Index: lams_build/build.xml
===================================================================
diff -u -r27d7f43ac317e84d604d3442dc896b80adf4a16b -r49cb26ada930a59687956591672498c7f5613d34
--- lams_build/build.xml (.../build.xml) (revision 27d7f43ac317e84d604d3442dc896b80adf4a16b)
+++ lams_build/build.xml (.../build.xml) (revision 49cb26ada930a59687956591672498c7f5613d34)
@@ -134,6 +134,8 @@
+
+
Index: lams_build/conf/j2ee/lams.application.xml
===================================================================
diff -u -r27d7f43ac317e84d604d3442dc896b80adf4a16b -r49cb26ada930a59687956591672498c7f5613d34
--- lams_build/conf/j2ee/lams.application.xml (.../lams.application.xml) (revision 27d7f43ac317e84d604d3442dc896b80adf4a16b)
+++ lams_build/conf/j2ee/lams.application.xml (.../lams.application.xml) (revision 49cb26ada930a59687956591672498c7f5613d34)
@@ -250,6 +250,12 @@
lucene-snowball-2.4.0.jar
+
+ jxl.jar
+
+
+ opencsv-1.8.jar
+
Index: lams_build/conf/j2ee/rams.application.xml
===================================================================
diff -u -r0732f5d12802da95cf69e474b30630653924abc5 -r49cb26ada930a59687956591672498c7f5613d34
--- lams_build/conf/j2ee/rams.application.xml (.../rams.application.xml) (revision 0732f5d12802da95cf69e474b30630653924abc5)
+++ lams_build/conf/j2ee/rams.application.xml (.../rams.application.xml) (revision 49cb26ada930a59687956591672498c7f5613d34)
@@ -243,7 +243,19 @@
JabberHTTPBind-1.1.1.jar
-
+
+
+ lucene-core-2.4.0.jar
+
+
+ lucene-snowball-2.4.0.jar
+
+
+ jxl.jar
+
+
+ opencsv-1.8.jar
+
Index: lams_build/lib/csv/opencsv-1.8.jar
===================================================================
diff -u
Binary files differ
Index: lams_build/lib/csv/src/opencsv-1.8-src.zip
===================================================================
diff -u
Binary files differ
Index: lams_build/lib/excel/jxl.jar
===================================================================
diff -u
Binary files differ
Index: lams_build/lib/excel/src/jexcelapi-2.6-src.zip
===================================================================
diff -u
Binary files differ
Index: lams_build/lib/lams/lams-central.jar
===================================================================
diff -u -r42aa5319fbd33938828764c43dd0ab1ca80e2416 -r49cb26ada930a59687956591672498c7f5613d34
Binary files differ
Index: lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java
===================================================================
diff -u -r56c565f6b6e596ec0de434127769de8986a090be -r49cb26ada930a59687956591672498c7f5613d34
--- lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision 56c565f6b6e596ec0de434127769de8986a090be)
+++ lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision 49cb26ada930a59687956591672498c7f5613d34)
@@ -166,4 +166,12 @@
public static final String USER_MANAGEMENT_SERVICE_BEAN_NAME = "userManagementService";
public static final String PARAM_FILTER_TEXT = "filterText";
+
+ public static final String HEADER_CONTENT_DISPOSITION = "Content-Disposition";
+
+ public static final String RESPONSE_CONTENT_TYPE_DOWNLOAD = "application/x-download";
+
+ public static final String FILE_EXTENSION_XLS = ".xls";
+
+ public static final String FILE_EXTENSION_CSV = ".csv";
}
\ No newline at end of file
Index: lams_common/src/java/org/lamsfoundation/lams/util/FileUtil.java
===================================================================
diff -u -r9a772f5ba1954a3a719a19e7ae237b6b09dc76ef -r49cb26ada930a59687956591672498c7f5613d34
--- lams_common/src/java/org/lamsfoundation/lams/util/FileUtil.java (.../FileUtil.java) (revision 9a772f5ba1954a3a719a19e7ae237b6b09dc76ef)
+++ lams_common/src/java/org/lamsfoundation/lams/util/FileUtil.java (.../FileUtil.java) (revision 49cb26ada930a59687956591672498c7f5613d34)
@@ -29,8 +29,10 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
+import java.io.Writer;
import java.net.URLEncoder;
import java.nio.channels.FileChannel;
import java.util.Date;
@@ -39,6 +41,14 @@
import javax.mail.internet.MimeUtility;
import javax.servlet.http.HttpServletRequest;
+import jxl.JXLException;
+import jxl.Workbook;
+import jxl.write.DateTime;
+import jxl.write.Label;
+import jxl.write.WritableCell;
+import jxl.write.WritableSheet;
+import jxl.write.WritableWorkbook;
+
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.hibernate.Hibernate;
@@ -49,6 +59,8 @@
import org.lamsfoundation.lams.learningdesign.service.ToolContentVersionFilter;
import org.lamsfoundation.lams.util.zipfile.ZipFileUtilException;
+import au.com.bytecode.opencsv.CSVWriter;
+
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.ConversionException;
@@ -761,4 +773,80 @@
return null;
}
}
+
+ public static void exportToExcel(OutputStream out, String sheetName, String title, String dateHeader,
+ String[] columnNames, Object[][] data) throws IOException, JXLException {
+ WritableWorkbook workbook = Workbook.createWorkbook(out);
+ WritableSheet sheet = workbook.createSheet(sheetName, 0);
+ if (!StringUtils.isEmpty(title)) {
+ sheet.addCell(new Label(0, 0, title));
+ }
+ if (!StringUtils.isEmpty(dateHeader)) {
+ sheet.addCell(new Label(0, 1, dateHeader));
+ sheet.addCell(new DateTime(1, 1, new Date()));
+ }
+ if (columnNames != null) {
+ for (int columnIndex = 0; columnIndex < columnNames.length; columnIndex++) {
+ sheet.addCell(new Label(columnIndex, 3, columnNames[columnIndex]));
+ }
+ }
+ if (data != null) {
+ for (int columnIndex = 0; columnIndex < data.length; columnIndex++) {
+ for (int rowIndex = 0; rowIndex < data[columnIndex].length; rowIndex++) {
+ Object content = data[columnIndex][rowIndex];
+ if (content != null) {
+ WritableCell cell = null;
+ if (content instanceof Number) {
+ Number number = (Number) content;
+ cell = new jxl.write.Number(columnIndex, rowIndex, number.doubleValue());
+ } else if (content instanceof Date) {
+ Date date = (Date) content;
+ cell = new DateTime(columnIndex, rowIndex, date);
+ } else if (content instanceof Boolean) {
+ Boolean bool = (Boolean) content;
+ cell = new jxl.write.Boolean(columnIndex, rowIndex, bool);
+ } else {
+ cell = new Label(columnIndex, rowIndex, content.toString());
+ }
+ sheet.addCell(cell);
+ }
+ }
+ }
+ }
+ workbook.write();
+ workbook.close();
+ }
+
+ public static void exportToCSV(OutputStream out, String title, String dateHeader, String[] columnNames,
+ Object[][] data) throws IOException {
+ Writer writer = new OutputStreamWriter(out);
+ CSVWriter csv = new CSVWriter(writer);
+ String[] line = null;
+ if (!StringUtils.isEmpty(title)) {
+ line = new String[] { title };
+ csv.writeNext(line);
+ }
+ if (!StringUtils.isEmpty(dateHeader)) {
+ line = new String[] { dateHeader, new Date().toString() };
+ csv.writeNext(line);
+ }
+ if (columnNames != null) {
+ line = new String[] {};
+ csv.writeNext(line);
+ csv.writeNext(columnNames);
+ }
+ if (data != null) {
+ for (int columnIndex = 0; columnIndex < data.length; columnIndex++) {
+ line = new String[data[columnIndex].length];
+ for (int rowIndex = 0; rowIndex < data[columnIndex].length; rowIndex++) {
+ Object content = data[columnIndex][rowIndex];
+ if (content != null) {
+ line[rowIndex] = content.toString();
+ }
+ }
+ csv.writeNext(line);
+ }
+ }
+ csv.close();
+ }
}
\ No newline at end of file