/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package demo;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import word.api.interfaces.IDocument;
import word.w2004.Document2004;
import word.w2004.elements.BreakLine;
import word.w2004.elements.Heading1;
import word.w2004.elements.Image;
import word.w2004.elements.ImageType;
import word.w2004.elements.Paragraph;
import word.w2004.elements.Table;
import word.w2004.elements.tableElements.TableEle;
import demo.business.EmployeeManager;
import demo.domain.Employee;
public class SalaryReportAction extends org.apache.struts.action.Action {
private String fileName = "leoWordStruts.doc";
private static java.util.logging.Logger log = Logger.getLogger("SalaryReportAction");
public SalaryReportAction() {
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
log.info("@@@ Generating report...");
String filter = this.getFilter((SalaryReportForm) form);
request.setAttribute("filter", filter);
buildReport(response, filter);
response.flushBuffer();
log.info("Document has been written to the servlet response...");
return null; //return mapping.findForward("ok");
}
private void buildReport(HttpServletResponse response, String filter) throws IOException{
log.info("Filter is: " + filter);
response.setContentType("application/msword");
response.setHeader("Content-disposition", "inline; filename="
+ fileName);
PrintWriter writer = response.getWriter();
IDocument mydoc = new Document2004();
mydoc.getBody().addEle(new Heading1("Employee Salary Report "));
mydoc.getBody().addEle(
new Paragraph("Brings up all employee and the respectively salary."));
mydoc.getBody().addEle(new BreakLine());
//This is an example of local file. I comment it out because I don't know where you will be running this.
//mydoc.getBody().addEle(new Paragraph("This bellow image uses full path from root (Local Server): /Users/leonardo_correa/aajava/myworkspaces/leo/ExampleStruts/WebContent/img/dtpick.gif"));
//mydoc.getBody().addEle(new Image("/Users/leonardo_correa/aajava/myworkspaces/leo/ExampleStruts/WebContent/img/dtpick.gif", ImageType.FULL_LOCAL_PATH));
//mydoc.getBody().addEle(new BreakLine());
mydoc.getBody().addEle(new Paragraph("This one, comes from the internet (Out of the server): http://www.google.com.au/intl/en_com/images/srpr/logo1w.png"));
mydoc.getBody().addEle(new Image("http://www.google.com.au/intl/en_com/images/srpr/logo1w.png", ImageType.WEB_URL));
mydoc.getBody().addEle(new BreakLine(2));
Table tbl = new Table();
tbl.addTableEle(TableEle.TH, "Name", "Salary");
List<Employee> lst = EmployeeManager.getResultList(); //Filter could be applied here...
for (Employee person : lst) {
tbl.addTableEle(TableEle.TD, person.getName(), person.getSalary());
}
tbl.addTableEle(TableEle.TF, "Total", "1,100,000.00");
mydoc.getBody().addEle(tbl);//add my table to the document
writer.println(mydoc.getContent());
}
private String getFilter(SalaryReportForm form) {
String filter = "";
if (!"".equals(form.getName())) {
filter += "name = " + form.getName() + ", ";
}
if (!"".equals(form.getGreaterThan())) {
filter += "greaterThan = " + form.getGreaterThan() + ",";
}
if (!"".equals(form.getLessThan())) {
filter += "lessThan = " + form.getLessThan();
}
return filter;
}
}