Index: lams_build/3rdParty.userlibraries =================================================================== RCS file: /usr/local/cvsroot/lams_build/3rdParty.userlibraries,v diff -u -r1.39 -r1.40 --- lams_build/3rdParty.userlibraries 16 Mar 2009 02:36:50 -0000 1.39 +++ lams_build/3rdParty.userlibraries 25 Mar 2009 20:50:39 -0000 1.40 @@ -112,5 +112,7 @@ + + Index: lams_build/build.xml =================================================================== RCS file: /usr/local/cvsroot/lams_build/build.xml,v diff -u -r1.76 -r1.77 --- lams_build/build.xml 28 Feb 2009 13:46:21 -0000 1.76 +++ lams_build/build.xml 25 Mar 2009 20:50:39 -0000 1.77 @@ -134,6 +134,8 @@ + + Index: lams_build/conf/j2ee/lams.application.xml =================================================================== RCS file: /usr/local/cvsroot/lams_build/conf/j2ee/lams.application.xml,v diff -u -r1.9 -r1.10 --- lams_build/conf/j2ee/lams.application.xml 28 Feb 2009 13:46:20 -0000 1.9 +++ lams_build/conf/j2ee/lams.application.xml 25 Mar 2009 20:50:39 -0000 1.10 @@ -250,6 +250,12 @@ lucene-snowball-2.4.0.jar + + jxl.jar + + + opencsv-1.8.jar + Index: lams_build/conf/j2ee/rams.application.xml =================================================================== RCS file: /usr/local/cvsroot/lams_build/conf/j2ee/Attic/rams.application.xml,v diff -u -r1.7 -r1.8 --- lams_build/conf/j2ee/rams.application.xml 6 Feb 2009 02:11:22 -0000 1.7 +++ lams_build/conf/j2ee/rams.application.xml 25 Mar 2009 20:50:39 -0000 1.8 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/csv/Attic/opencsv-1.8.jar,v diff -u Binary files differ Index: lams_build/lib/csv/src/opencsv-1.8-src.zip =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/csv/src/Attic/opencsv-1.8-src.zip,v diff -u Binary files differ Index: lams_build/lib/excel/jxl.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/excel/Attic/jxl.jar,v diff -u Binary files differ Index: lams_build/lib/excel/src/jexcelapi-2.6-src.zip =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/excel/src/Attic/jexcelapi-2.6-src.zip,v diff -u Binary files differ Index: lams_build/lib/lams/lams-central.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams-central.jar,v diff -u -r1.59 -r1.60 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java,v diff -u -r1.25 -r1.26 --- lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java 21 Mar 2009 10:35:17 -0000 1.25 +++ lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java 25 Mar 2009 20:50:50 -0000 1.26 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/FileUtil.java,v diff -u -r1.31 -r1.32 --- lams_common/src/java/org/lamsfoundation/lams/util/FileUtil.java 25 Feb 2009 18:24:10 -0000 1.31 +++ lams_common/src/java/org/lamsfoundation/lams/util/FileUtil.java 25 Mar 2009 20:51:08 -0000 1.32 @@ -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