<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
+ <dependency>
+ <groupId>net.sourceforge.jexcelapi</groupId>
+ <artifactId>jxl</artifactId>
+ <version>2.6.3</version>
+ </dependency>
+ <dependency>
+ <groupId>com.lowagie</groupId>
+ <artifactId>itext</artifactId>
+ <version>2.1.2</version>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
import org.apache.commons.logging.Log;\r
import org.apache.commons.logging.LogFactory;\r
import org.argeo.slc.core.SlcException;\r
-import org.springframework.core.io.DefaultResourceLoader;\r
import org.springframework.core.io.Resource;\r
import org.springframework.oxm.Marshaller;\r
import org.springframework.web.servlet.view.AbstractUrlBasedView;\r
--- /dev/null
+package org.argeo.slc.web.mvc.result;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import jxl.write.Label;
+import jxl.write.WritableSheet;
+import jxl.write.WritableWorkbook;
+
+import org.argeo.slc.core.SlcException;
+import org.argeo.slc.core.structure.tree.TreeSPath;
+import org.argeo.slc.core.test.SlcTestUtils;
+import org.argeo.slc.core.test.TestResultPart;
+import org.argeo.slc.core.test.tree.PartSubList;
+import org.argeo.slc.core.test.tree.TreeTestResult;
+import org.springframework.web.servlet.view.document.AbstractJExcelView;
+
+public class ResultExcelView extends AbstractJExcelView {
+ protected void buildExcelDocument(Map model, WritableWorkbook workbook,
+ HttpServletRequest request, HttpServletResponse response) {
+ try {
+ if (workbook.getNumberOfSheets() == 0) {
+ workbook.createSheet("SLC", 0);
+ }
+ WritableSheet sheet = workbook.getSheet("SLC");
+
+ TreeTestResult ttr = (TreeTestResult) model
+ .get(ResultViewController.MODELKEY_RESULT);
+
+ sheet.addCell(new Label(0, 0, "Result " + ttr.getUuid()));
+
+ int currentRow = 1;
+ for (TreeSPath path : ttr.getResultParts().keySet()) {
+ PartSubList lst = ttr.getResultParts().get(path);
+ sheet.addCell(new Label(0, currentRow, "Path " + path));
+ currentRow++;
+ for (TestResultPart part : lst.getParts()) {
+ sheet.addCell(new Label(0, currentRow, SlcTestUtils
+ .statusToString(part.getStatus())));
+ sheet.addCell(new Label(1, currentRow, part.getMessage()));
+ currentRow++;
+ }
+ currentRow++;// add an empty line betweeb paths
+ }
+ } catch (Exception e) {
+ throw new SlcException("Could not write spreadsheet.", e);
+ }
+ }
+}
--- /dev/null
+package org.argeo.slc.web.mvc.result;
+
+import java.awt.Color;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.argeo.slc.core.structure.tree.TreeSPath;
+import org.argeo.slc.core.test.SlcTestUtils;
+import org.argeo.slc.core.test.TestResultPart;
+import org.argeo.slc.core.test.TestStatus;
+import org.argeo.slc.core.test.tree.PartSubList;
+import org.argeo.slc.core.test.tree.TreeTestResult;
+import org.springframework.web.servlet.view.document.AbstractPdfView;
+
+import com.lowagie.text.Cell;
+import com.lowagie.text.Document;
+import com.lowagie.text.Paragraph;
+import com.lowagie.text.Table;
+import com.lowagie.text.pdf.PdfWriter;
+
+public class ResultPdfView extends AbstractPdfView {
+
+ @Override
+ protected void buildPdfDocument(Map model, Document document,
+ PdfWriter writer, HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+ TreeTestResult ttr = (TreeTestResult) model
+ .get(ResultViewController.MODELKEY_RESULT);
+
+ document.addTitle("Result " + ttr.getUuid());
+ document.add(new Paragraph("Result " + ttr.getUuid()));
+
+ for (TreeSPath path : ttr.getResultParts().keySet()) {
+ PartSubList lst = ttr.getResultParts().get(path);
+ document.add(new Paragraph("Path " + path));
+ Table table = new Table(2, lst.getParts().size());
+ for (TestResultPart part : lst.getParts()) {
+ Integer status = part.getStatus();
+ Cell statusCell = new Cell(SlcTestUtils.statusToString(status));
+ final Color color;
+ if (status.equals(TestStatus.PASSED))
+ color = Color.GREEN;
+ else if (status.equals(TestStatus.FAILED))
+ color = Color.RED;
+ else
+ color = Color.MAGENTA;
+
+ statusCell.setBackgroundColor(color);
+ table.addCell(statusCell);
+ table.addCell(part.getMessage());
+ }
+ document.add(table);
+ }
+
+ }
+
+}
import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
\r
public class ResultViewController extends ParameterizableViewController {\r
+ public final static String MODELKEY_RESULT = "result";\r
+\r
private final TreeTestResultDao testResultDao;\r
\r
public ResultViewController(TreeTestResultDao testResultDao) {\r
\r
ModelAndView modelAndView = new ModelAndView();\r
\r
- modelAndView.addObject("result", result);\r
+ modelAndView.addObject(MODELKEY_RESULT, result);\r
modelAndView.addObject("toc", toc);\r
modelAndView.addObject("describedPaths", describedPaths);\r
modelAndView.addObject("anchors", anchors);\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
+ default-lazy-init="true">
+
+ <bean name="/resultView.xls"
+ class="org.argeo.slc.web.mvc.result.ResultViewController">
+ <constructor-arg ref="testResultDao" />
+ <property name="viewName" value="resultExcelView" />
+ </bean>
+
+ <bean name="resultExcelView"
+ class="org.argeo.slc.web.mvc.result.ResultExcelView">
+ </bean>
+
+ <bean name="/resultView.pdf"
+ class="org.argeo.slc.web.mvc.result.ResultViewController">
+ <constructor-arg ref="testResultDao" />
+ <property name="viewName" value="resultPdfView" />
+ </bean>
+
+ <bean name="resultPdfView"
+ class="org.argeo.slc.web.mvc.result.ResultPdfView">
+ </bean>
+
+ <bean
+ class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
+ <property name="interceptors">
+ <list>
+ <ref bean="osivInterceptor" />
+ </list>
+ </property>
+ </bean>
+
+
+ <bean id="viewResolverXls"
+ class="org.springframework.web.servlet.view.BeanNameViewResolver">
+ </bean>
+
+</beans>
\ No newline at end of file